summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ANNOUNCE32
-rw-r--r--HISTORY84
-rw-r--r--INSTALL31
-rw-r--r--LSM26
-rw-r--r--MAINTAINERS6
-rw-r--r--MCONFIG31
-rw-r--r--Makefile21
-rw-r--r--README.clock39
-rw-r--r--clock/Makefile29
-rw-r--r--clock/README.aeb9
-rw-r--r--clock/README.hwclock (renamed from sys-utils/README.hwclock)0
-rw-r--r--clock/README.shhopt-1.1 (renamed from sys-utils/README.shhopt-1.1)0
-rw-r--r--clock/adjtime.patch302
-rw-r--r--clock/clock.h33
-rw-r--r--clock/cmos.c598
-rw-r--r--clock/hwclock.8 (renamed from sys-utils/hwclock.8)324
-rw-r--r--clock/hwclock.c1290
-rw-r--r--clock/kd.c149
-rw-r--r--clock/rtc.c389
-rw-r--r--clock/shhopt-1.1.lsm (renamed from sys-utils/shhopt-1.1.lsm)0
-rw-r--r--clock/shhopt.c468
-rw-r--r--clock/shhopt.h (renamed from sys-utils/shhopt.h)0
-rw-r--r--clockB/Makefile31
-rw-r--r--clockB/directio.c727
-rw-r--r--clockB/hwclock.8599
-rw-r--r--clockB/hwclock.c1744
-rw-r--r--clockB/hwclock.h139
-rw-r--r--clockB/kd.c219
-rw-r--r--clockB/rtc.c425
-rw-r--r--clockB/shhopt.c (renamed from sys-utils/shhopt.c)0
-rw-r--r--clockB/shhopt.h33
-rw-r--r--clockB/util.c120
-rwxr-xr-xconfigure362
-rw-r--r--disk-utils/Makefile1
-rw-r--r--disk-utils/fdformat.c35
-rw-r--r--disk-utils/fsck.minix.c180
-rw-r--r--disk-utils/mkfs.833
-rw-r--r--disk-utils/mkfs.c18
-rw-r--r--disk-utils/mkfs.minix.812
-rw-r--r--disk-utils/mkfs.minix.c186
-rw-r--r--disk-utils/mkswap.813
-rw-r--r--disk-utils/mkswap.c110
-rw-r--r--disk-utils/setfdprm.c25
-rw-r--r--fdisk/Makefile37
-rw-r--r--fdisk/README.fdisk2
-rw-r--r--fdisk/addpart.c40
-rw-r--r--fdisk/cfdisk.837
-rw-r--r--fdisk/cfdisk.c1202
-rw-r--r--fdisk/common.h8
-rw-r--r--fdisk/delpart.c40
-rw-r--r--fdisk/doc/CFdisk-Portuguese.html1704
-rw-r--r--fdisk/doc/CFdisk-Portuguese.txt1236
-rw-r--r--fdisk/doc/Fdisk-Portuguese.html1118
-rw-r--r--fdisk/doc/Fdisk-Portuguese.txt855
-rw-r--r--fdisk/fdisk.832
-rw-r--r--fdisk/fdisk.c799
-rw-r--r--fdisk/fdisk.h20
-rw-r--r--fdisk/fdiskaixlabel.c13
-rw-r--r--fdisk/fdiskbsdlabel.c150
-rw-r--r--fdisk/fdisksgilabel.c182
-rw-r--r--fdisk/fdisksgilabel.h1
-rw-r--r--fdisk/fdisksunlabel.c164
-rw-r--r--fdisk/fdisksunlabel.h2
-rw-r--r--fdisk/i386_sys_types.c86
-rw-r--r--fdisk/sfdisk.c718
-rw-r--r--games/Makefile2
-rw-r--r--games/banner.c21
-rw-r--r--getopt-1.0.3b/COPYING (renamed from getopt-1.0.3a/COPYING)0
-rw-r--r--getopt-1.0.3b/Changelog (renamed from getopt-1.0.3a/Changelog)0
-rw-r--r--getopt-1.0.3b/Makefile (renamed from getopt-1.0.3a/Makefile)1
-rw-r--r--getopt-1.0.3b/README (renamed from getopt-1.0.3a/README)0
-rw-r--r--getopt-1.0.3b/TODO (renamed from getopt-1.0.3a/TODO)0
-rw-r--r--getopt-1.0.3b/getopt.1 (renamed from getopt-1.0.3a/getopt.1)0
-rw-r--r--getopt-1.0.3b/getopt.c (renamed from getopt-1.0.3a/getopt.c)57
-rw-r--r--getopt-1.0.3b/gnu/getopt.c (renamed from getopt-1.0.3a/gnu/getopt.c)0
-rw-r--r--getopt-1.0.3b/gnu/getopt.h (renamed from getopt-1.0.3a/gnu/getopt.h)0
-rw-r--r--getopt-1.0.3b/gnu/getopt1.c (renamed from getopt-1.0.3a/gnu/getopt1.c)0
-rw-r--r--getopt-1.0.3b/parse.bash (renamed from getopt-1.0.3a/parse.bash)0
-rw-r--r--getopt-1.0.3b/parse.tcsh (renamed from getopt-1.0.3a/parse.tcsh)0
-rw-r--r--getopt-1.0.3b/test.bash (renamed from getopt-1.0.3a/test.bash)0
-rw-r--r--getopt-1.0.3b/test.tcsh (renamed from getopt-1.0.3a/test.tcsh)0
-rw-r--r--getpoe.sh56
-rw-r--r--kbd/Makefile25
-rw-r--r--kbd/README2
-rw-r--r--kbd/README.clear7
-rw-r--r--kbd/README.reset20
-rwxr-xr-xkbd/clear2
-rw-r--r--kbd/clear.131
-rw-r--r--kbd/kbdrate.868
-rw-r--r--kbd/kbdrate.c (renamed from sys-utils/kbdrate.c)177
-rwxr-xr-xkbd/reset11
-rw-r--r--lib/Makefile5
-rw-r--r--lib/env.c73
-rw-r--r--lib/env.h2
-rw-r--r--lib/err.c6
-rw-r--r--lib/nls.h33
-rw-r--r--lib/setproctitle.c16
-rw-r--r--licenses/COPYING.GPL (renamed from COPYING.GPL)0
-rw-r--r--licenses/COPYING.UCB (renamed from COPYING.UCB)0
-rw-r--r--login-utils/Makefile15
-rw-r--r--login-utils/agetty.c131
-rw-r--r--login-utils/checktty.c40
-rw-r--r--login-utils/chfn.c64
-rw-r--r--login-utils/chsh.c78
-rw-r--r--login-utils/cryptocard.c17
-rw-r--r--login-utils/islocal.c7
-rw-r--r--login-utils/last.c96
-rw-r--r--login-utils/login.115
-rw-r--r--login-utils/login.c179
-rw-r--r--login-utils/mesg.c16
-rw-r--r--login-utils/newgrp.c25
-rw-r--r--login-utils/passwd.c93
-rw-r--r--login-utils/setpwnam.c1
-rw-r--r--login-utils/shutdown.c101
-rw-r--r--login-utils/simpleinit.c34
-rw-r--r--login-utils/ttymsg.c42
-rw-r--r--login-utils/vipw.c33
-rw-r--r--login-utils/wall.c69
-rw-r--r--misc-utils/Makefile20
-rw-r--r--misc-utils/cal.c40
-rw-r--r--misc-utils/ddate.c12
-rw-r--r--misc-utils/kill.c19
-rw-r--r--misc-utils/logger.15
-rw-r--r--misc-utils/logger.c124
-rw-r--r--misc-utils/look.c13
-rw-r--r--misc-utils/mcookie.c91
-rw-r--r--misc-utils/namei.c26
-rw-r--r--misc-utils/script.c38
-rw-r--r--misc-utils/setterm.c135
-rw-r--r--misc-utils/tsort.c17
-rw-r--r--misc-utils/whereis.c14
-rw-r--r--misc-utils/write.c37
-rwxr-xr-xmkinstalldirs40
-rw-r--r--mount/Makefile3
-rw-r--r--mount/Makefile.standalone141
-rw-r--r--mount/fstab.522
-rw-r--r--mount/fstab.c127
-rw-r--r--mount/fstab.h5
-rw-r--r--mount/linux_fs.h23
-rw-r--r--mount/lomount.c58
-rw-r--r--mount/losetup.c31
-rw-r--r--mount/mk_loop_h1
-rw-r--r--mount/mntent.c15
-rw-r--r--mount/mount.810
-rw-r--r--mount/mount.c222
-rw-r--r--mount/mount.smb68
-rw-r--r--mount/mount_by_label.c8
-rw-r--r--mount/mount_guess_fstype.c30
-rw-r--r--mount/nfsmount.c64
-rw-r--r--mount/sundries.c23
-rw-r--r--mount/sundries.h9
-rw-r--r--mount/swapon.c53
-rw-r--r--mount/umount.84
-rw-r--r--mount/umount.c74
-rw-r--r--po/ChangeLog5
-rw-r--r--po/GNU.ABOUT-NLS226
-rw-r--r--po/Makefile148
-rw-r--r--po/POTFILES.in99
-rw-r--r--po/cat-id-tbl.c2151
-rw-r--r--po/cs.po8545
-rw-r--r--po/de.po7787
-rw-r--r--po/fr.po7649
-rw-r--r--po/it.po827
-rw-r--r--po/ja.po8416
-rw-r--r--po/nl.po7562
-rw-r--r--po/po2tbl.sed102
-rw-r--r--po/pt_BR.po7519
-rw-r--r--po/stamp-cat-id1
-rw-r--r--po/update-potfiles18
-rw-r--r--rescuept/README98
-rw-r--r--rescuept/rescuept.c640
-rw-r--r--sys-utils/Makefile42
-rw-r--r--sys-utils/README.linux68k11
-rw-r--r--sys-utils/arch.13
-rw-r--r--sys-utils/ctrlaltdel.c13
-rw-r--r--sys-utils/cytune.c134
-rw-r--r--sys-utils/dmesg.c10
-rw-r--r--sys-utils/hwclock.c2151
-rw-r--r--sys-utils/ipcrm.c18
-rw-r--r--sys-utils/ipcs.c237
-rw-r--r--sys-utils/kbdrate.864
-rw-r--r--sys-utils/lp.h83
-rw-r--r--sys-utils/rdev.c36
-rw-r--r--sys-utils/readprofile.c30
-rw-r--r--sys-utils/renice.c25
-rw-r--r--sys-utils/setsid.c11
-rw-r--r--sys-utils/tunelp.8135
-rw-r--r--sys-utils/tunelp.c119
-rw-r--r--text-utils/Makefile28
-rw-r--r--text-utils/col.c21
-rw-r--r--text-utils/colcrt.c11
-rw-r--r--text-utils/colrm.c4
-rw-r--r--text-utils/column.c12
-rw-r--r--text-utils/hexdump.c9
-rw-r--r--text-utils/hexsyntax.c11
-rw-r--r--text-utils/more.c342
-rw-r--r--text-utils/more.help.cs28
-rw-r--r--text-utils/odsyntax.c11
-rw-r--r--text-utils/parse.c19
-rw-r--r--text-utils/rev.c12
-rw-r--r--text-utils/ul.c22
-rw-r--r--version.h2
202 files changed, 70195 insertions, 5864 deletions
diff --git a/ANNOUNCE b/ANNOUNCE
deleted file mode 100644
index 1eed25ef1..000000000
--- a/ANNOUNCE
+++ /dev/null
@@ -1,32 +0,0 @@
-util-linux-2.9.tar.gz (source only distribution)
-
-READ the README file and the stuff below.
-
-util-linux-2.9.tar.gz (source only distribution)
-
-NOTE: Before installing util-linux. READ the README or risk nuking
-your system. Thank you.
-
- Util-linux is a suite of essential utilities for any Linux system.
-Its primary audience is system integrators (like the people at Debian
-and RedHat) and DIY Linux hackers. The rest of you will get a digested
-version of util-linux installed with no risk to your sanity.
-
- Util-linux is attempting to be portable, but the only platform it
-has been tested much on is linux/intel. There have however been
-integrated several patches for Arm, m68k, and Alpha linux versions.
-The present version is known to compile on at least Linux 1.2/libc 4
-and Linux 2.0/Libc 5 and has also been tested with libc 6 on intel,
-alpha and sparc. People are encouraged to make _nice_ patches to
-util-linux and submitting them to util-linux@math.uio.no. Thank you.
-
-Util-Linux 2.9 is imediately available from
- ftp.win.tue.nl:/pub/linux/util
-and will probably appear soon at
- ftp.math.uio.no:/pub/linux
- sunsite.uio.no:/pub/unix/linux/packages/util-linux
- sunsite.unc.edu:/pub/Linux/system/Misc
- tsx-11.mit.edu:/pub/linux/packages/utils
-
-Andries Brouwer
-
diff --git a/HISTORY b/HISTORY
index f0ccc9ab5..c51c018e6 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,3 +1,82 @@
+util-linux 2.9v:
+
+* cfdisk no longer believes the kernel's HDGETGEO
+ (and may be able to partition a 2 TB disk)
+
+util-linux 2.9u:
+
+* Czech more.help and messages (Jiří Pavlovský)
+* Japanese messages (Daisuke Yamashita)
+* fdisk fix (Klaus G. Wagner)
+* mount fix (Hirokazu Takahashi)
+* agetty: enable hardware flow control (Thorsten Kranzkowski)
+* minor cfdisk improvements
+* fdisk no longer accepts a default device
+* Makefile fix
+
+util-linux 2.9t:
+
+* national language support for hwclock
+* Japanese messages (both by Daisuke Yamashita)
+* German messages and some misc i18n fixes (Elrond)
+* Czech messages (Jiří Pavlovský)
+* wall fixed for /dev/pts/xx ttys
+* make last and wall use getutent() (Sascha Schumann)
+ [Maybe this is bad: last reading all of wtmp may be too slow.
+ Revert in case people complain.]
+* documented UUID= and LABEL= in fstab.5
+* added some partition types
+* swapon: warn only if verbose
+
+util-linux 2.9s:
+
+* tunelp patch (Andrea Arcangeli)
+* German messages (Elrond)
+
+util-linux 2.9[pqr]:
+
+* errno->errsv patch (Arnaldo Carvalho de Melo)
+* hwclock patch for the Award 4.50g BIOS "2094" bug. (Dave Coffin)
+* fdisk patch to correct deletion of last logical partition
+
+util-linux 2.9o:
+
+* fix to login by Ambrose C. Li
+* improvement to mcookie inspired by a patch from Rik Faith
+* more i18n by Arnaldo Carvalho de Melo; pt_BR locale
+
+util-linux 2.9n:
+
+* Added -u option to logger (write to user-specified socket; Martin Schultze)
+* Added mount.smb script contributed by Greg Galperin
+* Some more national language support
+* mkfs.minix argument parsing fixed
+* write fixed for /dev/pts/xx ttys
+* configure adapted for the case of <scsi/scsi.h> that needs u_char.
+
+util-linux 2.9m:
+
+* Added national language support (misiek@misiek.eu.org)
+* minor improvements in mount, fdisk, cfdisk, agetty, more
+
+util-linux 2.9l:
+
+* Added /dev/port use to hwclock again - it may be necessary for Jensen.
+
+util-linux 2.9k:
+
+* major reshuffle of hwclock stuff; added sparc and alpha code
+* tiny shutdown fix
+* tiny fdisk fix
+
+util-linux 2.9j:
+
+* added configure
+* merged three lists of partition types in *fdisk
+* multi page display in cfdisk
+* test for getlogin() == "";
+* start fixup hwclock
+
util-linux 2.9i:
* fixed 2.9h typo in more
@@ -90,6 +169,11 @@ HIGHLIGHTS for version 2.9:
0xF) Send questions and/or patches to util-linux@math.uio.no
+util-linux 2.9 was released by Andries Brouwer - aeb@cwi.nl
+The address util-linux@math.uio.no reaches Rik, Andries, Peter,
+Michael, Erik, Nicolai and possibly others. Hwclock stuff is
+forwarded to Bryan.
+
util-linux 2.8:
HIGHLIGHTS for version 2.8:
diff --git a/INSTALL b/INSTALL
index c6a463e88..631d50f0c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -21,29 +21,32 @@ WARNING: The simpleinit and some other programs in this package are
To install from source:
1) Get source distribution (see the .lsm file for locations)
-2) Untar util-linux-2.9.tar.gz somewhere
-3) cd util-linux-2.9
+2) Untar util-linux-2.9X.tar.gz somewhere
+3) cd util-linux-2.9X
4) Edit MCONFIG
-5) make
-6) make install
-7) If you want to use simpleinit and agetty, then make softlinks from
+5) ./configure
+6) Look at defines.h and make_include, and edit if necessary
+7) make
+8) make install
+9) If you want to use simpleinit and agetty, then make softlinks from
/sbin/init to simpleinit and from /sbin/getty to agetty, but make sure
that your /etc/inittab is set up right (this is *NOT* the System V
compatible init!), or you will be hosed. If you are using the SysV
init and/or some other getty, they you can keep using those.
-If you have compilation problems:
+If you have compilation problems: tell util-linux@math.uio.no about it.
-- with -lcrypt: you forgot to edit MCONFIG and write HAVE_LIBCRYPT=no.
-- in cfdisk or setterm: you forgot to edit MCONFIG and write HAVE_NCURSES=no
- (or you forgot to write CURSESFLAGS=-I/usr/include/ncurses -DNCH=0)?
-- in fdisksunlabel.c: change #if 1 into #if 0 if there is no <scsi/scsi.h>.
-- in mount/nfsmount.c: change #if 1 into #if 0 if there is no inet_aton().
-- in sys-utils/ipcs.c: change #if 0 into #if 1 if <linux/linkage.h> is needed.
-- in sys-utils/cytune.c: change #if 0 into #if 1 if <linux/tqueue.h> is needed.
+Users of libc 5.4.46 may get warnings like
+ /usr/include/linux/byteorder/swab.h:100: warning: no previous prototype for `__fswab16'
+that they'll have to ignore. The Linux kernel includes are not meant to be included
+in user programs, but libc5 does precisely that and is inherently broken.
-elsewhere: tell util-linux@math.uio.no about it.
+Some old libc have complaints like
+ /usr/include/sys/syslog.h:71: warning: missing braces around initializer
+Also this is a libc/include problem.
+
+There should be no compilation errors.
If you have runtime problems:
diff --git a/LSM b/LSM
deleted file mode 100644
index 41edbbf37..000000000
--- a/LSM
+++ /dev/null
@@ -1,26 +0,0 @@
-Begin3
-Title: util-linux: Miscellaneous utilities for Linux
-Version: 2.9g
-Description: agetty arch cal cfdisk chfn chkdupexe chsh
- clear hwclock col colcrt colrm column ctrlaltdel
- cytune ddate dmesg fastboot fasthalt fdformat
- fdisk fsck.minix getopt halt hexdump ipcrm ipcs
- kbdrate kill last logger login look mcookie mesg mkfs
- mkfs.minix mkswap more mount namei passwd ramsize rdev
- readprofile reboot renice reset rev rootflags script
- setfdprm setsid setterm sfdisk shutdown simpleinit sln
- swapdev swapoff swapon tsort tunelp ul umount
- vidmode vipw wall whereis write
-
-Keywords: essential utilities
-Author: several
-Maintained-by: Andries Brouwer <util-linux@math.uio.no> and others
-Primary-site: ftp.win.tue.nl /pub/linux/util
-Alternate-site: ftp.math.uio.no /pub/linux
- ~567k util-linux-2.9g.tar.gz
-Alternate-site: sunsite.uio.no /pub/unix/linux/packages/util-linux
-Alternate-site: sunsite.unc.edu /pub/Linux/system/misc
-Alternate-site: tsx-11.mit.edu /pub/linux/packages/utils
-Platforms: Linux 1.2.x/1.3.x/2.x/Libc 4/5/6, all CPUs
-Copying-policy: GPL, BSD, others
-End
diff --git a/MAINTAINERS b/MAINTAINERS
deleted file mode 100644
index 623b77883..000000000
--- a/MAINTAINERS
+++ /dev/null
@@ -1,6 +0,0 @@
-util-linux is maintained by a group of people
-(Rik, Andries, Peter, Michael, Erik, Nicolai),
-all reachable at util-linux@math.uio.no.
-
-Bryan, the hwclock master, is not on the list
-but the mail queue processor forwards mail to him.
diff --git a/MCONFIG b/MCONFIG
index 147fc1ae2..58112ddf1 100644
--- a/MCONFIG
+++ b/MCONFIG
@@ -10,8 +10,8 @@
# Select for CPU one of intel, alpha, sparc, arm, m68k, mips
CPU=$(shell uname -m | sed s/i.86/intel/)
-# if HAVE_LIBCRYPT is "yes" -lcrypt will be used
-HAVE_LIBCRYPT=yes
+# define where is locale directrory (default /usr/share/locale)
+LOCALEDIR=/usr/share/locale
# If HAVE_PAM is set to "yes", then login, chfn, chsh, and newgrp
# will use PAM for authentication. Additionally, passwd will not be
@@ -65,9 +65,6 @@ HAVE_GETTY=no
# properly.]
USE_TTY_GROUP=yes
-# If HAVE_OPENPTY is set to "yes", then script will use the Unix98 ptys
-HAVE_OPENPTY=no
-
# If HAVE_RESET is set to "yes", then reset won't be installed. The version
# of reset that comes with the ncurses package is less aggressive.
HAVE_RESET=yes
@@ -81,12 +78,12 @@ CC= gcc
# Different optimizations for different cpus.
ifeq "$(CPU)" "intel"
- OPT= -pipe -O3 -m486 -fomit-frame-pointer
+ OPT= -pipe -O2 -m486 -fomit-frame-pointer
else
ifeq "$(CPU)" "arm"
OPT= -O2 -m3 -fomit-frame-pointer
else
- OPT= -O3 -fomit-frame-pointer
+ OPT= -O2 -fomit-frame-pointer
endif
endif
@@ -103,23 +100,8 @@ CFLAGS = $(OPT) -I. -I$(LIB) $(WARNFLAGS) \
-DSBINDIR=\"$(SBINDIR)\" \
-DUSRSBINDIR=\"$(USRSBINDIR)\" \
-DLOGDIR=\"$(LOGDIR)\" \
- -DVARPATH=\"$(VARPATH)\"
-
-# Set HAVE_NCURSES to "yes" if you have ncurses
-# (without it, more, ul and setterm are not made)
-HAVE_NCURSES=yes
-
-# ncurses appears to be installed in three major ways.
-#
-# There is a subdirectory /usr/include/ncurses, with curses.h in
-# CURSESFLAGS=-I/usr/include/ncurses -DNCH=0
-# No such subdirectory, but ncurses/curses.h is installed as ncurses.h
-# CURSESFLAGS=-DNCH=1
-# No such subdirectory - <curses.h> is the ncurses one.
-# CURSESFLAGS=-DNCH=0
-# Pick your choice.
-CURSESFLAGS=-I/usr/include/ncurses -DNCH=0
-LIBCURSES=-lncurses
+ -DVARPATH=\"$(VARPATH)\" \
+ -DLOCALEDIR=\"$(LOCALEDIR)\"
# Set HAVE_SLANG to yes if you have slang (and prefer to use that for cfdisk)
# (If neither HAVE_NCURSES nor HAVE_SLANG is defined, cfdisk is not made.)
@@ -131,6 +113,7 @@ LIBCURSES=-lncurses
# (no extra definition required).
LIBSLANG=-lslang
+
DEVDIR= $(DESTDIR)/dev
ETCDIR= $(DESTDIR)/etc
SBINDIR= $(DESTDIR)/sbin
diff --git a/Makefile b/Makefile
index 92c9cae58..09571b2c8 100644
--- a/Makefile
+++ b/Makefile
@@ -7,25 +7,32 @@
VERSION=2.9
+include ./make_include
include ./MCONFIG
-SUBDIRS=lib \
- getopt-1.0.3a \
+SUBDIRS=po \
+ lib \
+ getopt-1.0.3b \
disk-utils \
games \
login-utils \
misc-utils \
mount \
fdisk \
+ clock \
sys-utils \
- text-utils
+ text-utils \
+ kbd
.PHONEY: all install clean
-all:
+all: defines.h
@for subdir in $(SUBDIRS); do \
(cd $$subdir && $(MAKE) $@) || exit 1; \
done
+defines.h make_include:
+ ./configure
+
install:
@if [ "`whoami`" = "root" ]; then umask 022; fi
@for subdir in $(SUBDIRS); do \
@@ -33,11 +40,15 @@ install:
done
clean:
- -rm -f *.o *~ core poe.diffs
+ -rm -f *.o *~ omake conftest conftest.c core
@for subdir in $(SUBDIRS); do \
(cd $$subdir && $(MAKE) $@) || exit 1; \
done
+distclean: make_include clean
+ cd po && make distclean
+ -rm -f defines.h make_include
+
dist:
(cd /tmp; \
rm -rf /tmp/util-linux-$(VERSION); \
diff --git a/README.clock b/README.clock
new file mode 100644
index 000000000..a8cc98aad
--- /dev/null
+++ b/README.clock
@@ -0,0 +1,39 @@
+Util-linux has always had the clock program (by Charles Hedrick,
+Rob Hooft, Harald Koenig, Alan Modra).
+
+Slackware still uses the clock.c and clock.8 from util-linux-2.6
+(and calls the resulting source fragment clock-1.6.tar.gz).
+
+Bryan Henderson rewrote it, calling the result hwclock,
+and util-linux-2.6 has both clock.c and hwclock.c,
+util-linux-2.7 and later only have hwclock.c.
+
+Unfortunately, hwclock.c was broken in various ways, especially
+on non-intel hardware, and distributions started shipping private
+versions (usually derived from the old clock).
+
+For util-linux-2.9k Andries Brouwer took all clock versions around,
+and merged them. The resulting hwclock program works on all architectures.
+There are some kernel bugs in the handling of /dev/rtc on some i386 hardware,
+so under certain circumstances where hwclock fails one has to give it the
+--directisa flag to let hwclock do the clock access itself (which works)
+rather than leave it to the kernel. [The precise cause is still being
+investigated.]
+This is the code presently found in the clock subdirectory.
+
+Bryan Henderson took this code again and merged it with his original
+hwclock source. That is the code found in the util-linux-2.9q clock
+directory. Unfortunately, this new version didnt work on Sparcs
+and in util-linux-2.9r this code was moved to the clockB subdirectory.
+
+
+Executive summary:
+clock/hwclock is claimed to be good (but may need the --directisa flag).
+
+
+Comments, bug reports etc are welcome.
+Note that the source contains a rather detailed description of the clock
+hardware involved. Additions and corrections are welcome.
+
+Andries
+aeb@cwi.nl
diff --git a/clock/Makefile b/clock/Makefile
new file mode 100644
index 000000000..fd0522b38
--- /dev/null
+++ b/clock/Makefile
@@ -0,0 +1,29 @@
+# Makefile -- Makefile for util-linux Linux utilities
+#
+include ../make_include
+include ../MCONFIG
+
+# Where to put man pages?
+
+MAN8= hwclock.8
+
+# Where to put binaries?
+# See the "install" rule for the links. . .
+
+SBIN= hwclock
+
+
+all: $(SBIN)
+
+
+hwclock.o: hwclock.c shhopt.h
+hwclock.o cmos.o rtc.o kd.o: clock.h
+hwclock: hwclock.o shhopt.o cmos.o rtc.o kd.o
+
+install: all
+ $(INSTALLDIR) $(SBINDIR) $(BINDIR) $(USRBINDIR)
+ $(INSTALLBIN) $(SBIN) $(SBINDIR)
+ $(INSTALLMAN) $(MAN8) $(MAN8DIR)
+
+clean:
+ -rm -f *.o *~ core $(SBIN)
diff --git a/clock/README.aeb b/clock/README.aeb
new file mode 100644
index 000000000..3955f9050
--- /dev/null
+++ b/clock/README.aeb
@@ -0,0 +1,9 @@
+This directory contains the hwclock stuff as fixed by me.
+It should work on all architectures.
+
+Bryan has backported my changes to his original source,
+so the present directory should be superfluous -
+however, his code fails on my Sparc.
+Will look at it later.
+
+Andries Brouwer - aeb@cwi.nl
diff --git a/sys-utils/README.hwclock b/clock/README.hwclock
index 7d2f460dd..7d2f460dd 100644
--- a/sys-utils/README.hwclock
+++ b/clock/README.hwclock
diff --git a/sys-utils/README.shhopt-1.1 b/clock/README.shhopt-1.1
index 766d6cbdc..766d6cbdc 100644
--- a/sys-utils/README.shhopt-1.1
+++ b/clock/README.shhopt-1.1
diff --git a/clock/adjtime.patch b/clock/adjtime.patch
new file mode 100644
index 000000000..81d0430fd
--- /dev/null
+++ b/clock/adjtime.patch
@@ -0,0 +1,302 @@
+From ao112@rgfn.epcc.edu Fri Mar 19 06:27:26 1999
+Received: from rgfn.epcc.edu (rgfn.epcc.edu [208.136.234.19]) by hera.cwi.nl with ESMTP
+ id GAA27711 for <Andries.Brouwer@cwi.nl>; Fri, 19 Mar 1999 06:27:23 +0100 (MET)
+Received: (from ao112@localhost)
+ by rgfn.epcc.edu (8.8.8/8.8.8) id WAA16797;
+ Thu, 18 Mar 1999 22:27:19 -0700 (MST)
+Date: Thu, 18 Mar 1999 22:27:19 -0700 (MST)
+Message-Id: <199903190527.WAA16797@rgfn.epcc.edu>
+From: ao112@rgfn.epcc.edu (James P. Rutledge)
+To: Andries.Brouwer@cwi.nl
+Subject: Re: hwclock patch for drift_factor calculation improvement
+Reply-To: ao112@rgfn.epcc.edu
+Status: R
+
+
+
+>
+>Could you perhaps make your patch relative to
+>util-linux-2.9n (found in ftp.cwi.nl/pub/aeb/util-linux/util-linux-2.9n.tar.gz)
+>?
+>
+>(The hwclock stuff has changed quite a bit since 2.9g.)
+>
+>Andries
+>
+
+Andries;
+
+Per your request, the patch has been modified for util-linux version
+2.9n, from the version for 2.9g.
+
+The program "hwclock" (version 2.4c) could give more accurate
+values for the drift factor that it places in the file "/etc/adjtime".
+
+A patch to improve the accuracy is included.
+
+I have incorporated some error sources which were not compensated
+for into the drift factor calculation (performed when the "--set"
+or the "--systohc" option is used) to make it more accurate.
+In particular, the sync delay between the desired set time and the
+start of the hardware clock second, and the expected drift since the
+last hardware clock adjustment are now accounted for in the drift
+factor calculation.
+
+With this patch, if at any time an adjust operation is attempted and
+the hardware clock is found to be not valid, then the calibration
+and adjustment time is set to zero to insure that if the hardware
+clock should coincidentally return to validity, a calibration is not
+done with bad history data (hardware clock info bad) and an adjust is
+not attempted on bad (but now passing validity test) hardware clock
+data. (With this patch, a previous calibration time of zero causes
+the calibration time to initialize with the current time, when the
+hardware clock is set, but no change is made to the drift factor,
+so in effect, an initial calibration is started over while the previous
+drift factor is retained.)
+
+Also, the behavior in the case of an initially missing "/etc/adjtime"
+file or such a file produced by the predecessor "clock" program has
+been slightly improved as follows:
+
+ With this patch, if the file exists but was produced by "clock"
+ and, thus, is given a zero calibration time, the drift factor is
+ not updated upon the first calibration by "hwclock", but is left alone
+ and is only changed by subsequent calibrations.
+
+ With this patch, if the file does not exist and, thus, is given
+ a zero calibration time, the drift factor is set to zero upon the
+ first calibration by "hwclock" and is then changed, as appropriate, by
+ subsequent calibrations.
+
+ Also, with this patch, an "--adjust" operation against a non-existent
+ "/etc/adjtime" file or one which has zero as the last adjustment
+ time will not change the hardware clock setting.
+
+A context diff for a patch to the file "hwclock.c" in the directory
+"util-linux-2.9n/clock" is appended.
+To use the patch, "cd" to the directory "util-linux-2.9n/clock".
+Run "patch < bug-report", where "bug-report" is the file name of
+this mail message, to get new file "hwclock.c" which contains the proposed
+new version. This patch is, of course, submitted per the GPL and the
+appropriate "NO WARRANTY OF ANY KIND" and "USE AT YOUR OWN RISK"
+disclaimers apply.
+
+Note that the patch presumptuously changes the "hwclock.c" version
+number from 2.4c to 2.4c1 in "hwclock.c".
+
+Jim
+
+------------------ Patch file follows ----------------------------
+*** hwclock.c Thu Mar 18 22:04:01 1999
+--- new-hwclock.c Thu Mar 18 22:03:18 1999
+***************
+*** 76,86 ****
+
+ #include "clock.h"
+ #include "../version.h"
+
+ #define MYNAME "hwclock"
+! #define VERSION "2.4c"
+
+ char *progname = MYNAME;
+
+ /* The struct that holds our hardware access routines */
+ struct clock_ops *ur;
+--- 76,86 ----
+
+ #include "clock.h"
+ #include "../version.h"
+
+ #define MYNAME "hwclock"
+! #define VERSION "2.4c1"
+
+ char *progname = MYNAME;
+
+ /* The struct that holds our hardware access routines */
+ struct clock_ops *ur;
+***************
+*** 581,601 ****
+
+
+ static void
+ adjust_drift_factor(struct adjtime *adjtime_p,
+ const time_t nowtime,
+! const bool hclock_valid, const time_t hclocktime ) {
+ /*---------------------------------------------------------------------------
+ Update the drift factor in <*adjtime_p> to reflect the fact that the
+ Hardware Clock was calibrated to <nowtime> and before that was set
+ to <hclocktime>.
+
+- We assume that the user has been doing regular drift adjustments
+- using the drift factor in the adjtime file, so if <nowtime> and
+- <clocktime> are different, that means the adjustment factor isn't
+- quite right.
+-
+ We record in the adjtime file the time at which we last calibrated
+ the clock so we can compute the drift rate each time we calibrate.
+
+ EXCEPT: if <hclock_valid> is false, assume Hardware Clock was not set
+ before to anything meaningful and regular adjustments have not been
+--- 581,598 ----
+
+
+ static void
+ adjust_drift_factor(struct adjtime *adjtime_p,
+ const time_t nowtime,
+! const bool hclock_valid,
+! const time_t hclocktime,
+! const float sync_delay ) {
+ /*---------------------------------------------------------------------------
+ Update the drift factor in <*adjtime_p> to reflect the fact that the
+ Hardware Clock was calibrated to <nowtime> and before that was set
+ to <hclocktime>.
+
+ We record in the adjtime file the time at which we last calibrated
+ the clock so we can compute the drift rate each time we calibrate.
+
+ EXCEPT: if <hclock_valid> is false, assume Hardware Clock was not set
+ before to anything meaningful and regular adjustments have not been
+***************
+*** 604,629 ****
+ ----------------------------------------------------------------------------*/
+ if (!hclock_valid) {
+ if (debug)
+ printf("Not adjusting drift factor because the Hardware Clock "
+ "previously contained garbage.\n");
+ } else if ((hclocktime - adjtime_p->last_calib_time) < 23 * 60 * 60) {
+ if (debug)
+ printf("Not adjusting drift factor because it has been less than a "
+ "day since the last calibration.\n");
+ } else {
+! const float factor_adjust =
+! ((float) (nowtime - hclocktime)
+! / (hclocktime - adjtime_p->last_calib_time))
+! * 24 * 60 * 60;
+
+ if (debug)
+! printf("Clock drifted %d seconds in the past %d seconds "
+ "in spite of a drift factor of %f seconds/day.\n"
+ "Adjusting drift factor by %f seconds/day\n",
+! (int) (nowtime - hclocktime),
+! (int) (hclocktime - adjtime_p->last_calib_time),
+ adjtime_p->drift_factor,
+ factor_adjust );
+
+ adjtime_p->drift_factor += factor_adjust;
+ }
+--- 601,642 ----
+ ----------------------------------------------------------------------------*/
+ if (!hclock_valid) {
+ if (debug)
+ printf("Not adjusting drift factor because the Hardware Clock "
+ "previously contained garbage.\n");
++ } else if (adjtime_p->last_calib_time == 0) {
++ if (debug)
++ printf("Not adjusting drift factor because last calibration "
++ "time is zero,\nso history is bad and calibration startover "
++ "is necessary.\n");
+ } else if ((hclocktime - adjtime_p->last_calib_time) < 23 * 60 * 60) {
+ if (debug)
+ printf("Not adjusting drift factor because it has been less than a "
+ "day since the last calibration.\n");
+ } else {
+! const float sec_per_day = 24.0 * 60.0 * 60.0;
+! float atime_per_htime; /* adjusted time units per hardware time unit */
+! float adj_days; /* days since last adjustment (in hardware clock time) */
+! float cal_days; /* days since last calibration (in hardware clock time) */
+! float exp_drift; /* expected drift (sec) since last adjustment */
+! float unc_drift; /* uncorrected drift (sec) since last calibration */
+! float factor_adjust; /* amount to add to previous drift factor */
+! atime_per_htime = 1.0 + adjtime_p->drift_factor / sec_per_day;
+! adj_days = (float)(hclocktime - adjtime_p->last_adj_time) / sec_per_day;
+! exp_drift = adj_days * adjtime_p->drift_factor + adjtime_p->not_adjusted;
+! unc_drift = (float)(nowtime - hclocktime) + sync_delay - exp_drift;
+! cal_days = ((float)(adjtime_p->last_adj_time - adjtime_p->last_calib_time)
+! + adjtime_p->not_adjusted) / (sec_per_day * atime_per_htime)
+! + adj_days;
+! factor_adjust = unc_drift / cal_days;
+
+ if (debug)
+! printf("Clock drifted %.1f seconds in the past %d seconds "
+ "in spite of a drift factor of %f seconds/day.\n"
+ "Adjusting drift factor by %f seconds/day\n",
+! unc_drift,
+! (int) (nowtime - adjtime_p->last_calib_time),
+ adjtime_p->drift_factor,
+ factor_adjust );
+
+ adjtime_p->drift_factor += factor_adjust;
+ }
+***************
+*** 764,773 ****
+--- 777,794 ----
+
+ ----------------------------------------------------------------------------*/
+ if (!hclock_valid) {
+ fprintf(stderr, "The Hardware Clock does not contain a valid time, "
+ "so we cannot adjust it.\n");
++ adjtime_p->last_calib_time = 0; /* calibration startover is required */
++ adjtime_p->last_adj_time = 0;
++ adjtime_p->not_adjusted = 0;
++ adjtime_p->dirty = TRUE;
++ } else if (adjtime_p->last_adj_time == 0) {
++ if (debug)
++ printf("Not setting clock because last adjustment time is zero, "
++ "so history is bad.");
+ } else {
+ int adjustment;
+ /* Number of seconds we must insert in the Hardware Clock */
+ float retro;
+ /* Fraction of second we have to remove from clock after inserting
+***************
+*** 878,888 ****
+ time_diff(read_time, startup_time));
+ *retcode_p = 0;
+ } else if (set) {
+ set_hardware_clock_exact(set_time, startup_time,
+ universal, testing);
+! adjust_drift_factor(&adjtime, set_time, hclock_valid, hclocktime);
+ *retcode_p = 0;
+ } else if (adjust) {
+ do_adjustment(&adjtime, hclock_valid, hclocktime,
+ read_time, universal, testing);
+ *retcode_p = 0;
+--- 899,910 ----
+ time_diff(read_time, startup_time));
+ *retcode_p = 0;
+ } else if (set) {
+ set_hardware_clock_exact(set_time, startup_time,
+ universal, testing);
+! adjust_drift_factor(&adjtime, set_time, hclock_valid, hclocktime,
+! time_diff(read_time, startup_time));
+ *retcode_p = 0;
+ } else if (adjust) {
+ do_adjustment(&adjtime, hclock_valid, hclocktime,
+ read_time, universal, testing);
+ *retcode_p = 0;
+***************
+*** 898,908 ****
+
+ set_hardware_clock_exact((time_t) reftime.tv_sec, reftime,
+ universal, testing);
+ *retcode_p = 0;
+ adjust_drift_factor(&adjtime, (time_t) reftime.tv_sec, hclock_valid,
+! hclocktime);
+ } else if (hctosys) {
+ rc = set_system_clock(hclock_valid, hclocktime, testing);
+ if (rc != 0) {
+ printf("Unable to set system clock.\n");
+ *retcode_p = 1;
+--- 920,930 ----
+
+ set_hardware_clock_exact((time_t) reftime.tv_sec, reftime,
+ universal, testing);
+ *retcode_p = 0;
+ adjust_drift_factor(&adjtime, (time_t) reftime.tv_sec, hclock_valid,
+! hclocktime, (float)(read_time.tv_usec / 1E6));
+ } else if (hctosys) {
+ rc = set_system_clock(hclock_valid, hclocktime, testing);
+ if (rc != 0) {
+ printf("Unable to set system clock.\n");
+ *retcode_p = 1;
+
diff --git a/clock/clock.h b/clock/clock.h
new file mode 100644
index 000000000..b57b499c0
--- /dev/null
+++ b/clock/clock.h
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <string.h>
+#include <errno.h> /* for errno, EPERM, EINVAL, ENOENT */
+#include <time.h>
+
+struct clock_ops {
+ char *interface_name;
+ int (*get_permissions)(void);
+ int (*read_hardware_clock)(struct tm *tm);
+ int (*set_hardware_clock)(const struct tm *tm);
+ int (*synchronize_to_clock_tick)(void);
+};
+
+extern struct clock_ops *probe_for_cmos_clock(void);
+extern struct clock_ops *probe_for_rtc_clock(void);
+extern struct clock_ops *probe_for_kd_clock(void);
+
+typedef int bool;
+#define TRUE 1
+#define FALSE 0
+
+/* hwclock.c */
+extern char *progname;
+extern int debug;
+extern void outsyserr(char *msg);
+
+/* cmos.c */
+extern void set_cmos_epoch(int ARCconsole, int SRM);
+extern void set_cmos_access(int Jensen, int funky_toy);
+
+/* rtc.c */
+extern int get_epoch_rtc(unsigned long *epoch, int silent);
+extern int set_epoch_rtc(unsigned long epoch);
diff --git a/clock/cmos.c b/clock/cmos.c
new file mode 100644
index 000000000..78d5dbb94
--- /dev/null
+++ b/clock/cmos.c
@@ -0,0 +1,598 @@
+/*
+ * i386 CMOS starts out with 14 bytes clock data
+ * alpha has something similar, but with details
+ * depending on the machine type.
+ *
+ * byte 0: seconds (0-59)
+ * byte 2: minutes (0-59)
+ * byte 4: hours (0-23 in 24hr mode,
+ * 1-12 in 12hr mode, with high bit unset/set if am/pm)
+ * byte 6: weekday (1-7, Sunday=1)
+ * byte 7: day of the month (1-31)
+ * byte 8: month (1-12)
+ * byte 9: year (0-99)
+ * Numbers are stored in BCD/binary if bit 2 of byte 11 is unset/set
+ * The clock is in 12hr/24hr mode if bit 1 of byte 11 is unset/set
+ * The clock is undefined (being updated) if bit 7 of byte 10 is set.
+ * The clock is frozen (to be updated) by setting bit 7 of byte 11
+ * Bit 7 of byte 14 indicates whether the CMOS clock is reliable:
+ * it is 1 if RTC power has been good since this bit was last read;
+ * it is 0 when the battery is dead and system power has been off.
+ *
+ * Avoid setting the RTC clock within 2 seconds of the day rollover
+ * that starts a new month or enters daylight saving time.
+ *
+ * The century situation is messy:
+ * Usually byte 50 (0x32) gives the century (in BCD, so 19 or 20 hex),
+ * but IBM PS/2 has (part of) a checksum there and uses byte 55 (0x37).
+ * Sometimes byte 127 (0x7f) or Bank 1, byte 0x48 gives the century.
+ * The original RTC will not access any century byte; some modern
+ * versions will. If a modern RTC or BIOS increments the century byte
+ * it may go from 0x19 to 0x20, but in some buggy cases 0x1a is produced.
+ */
+
+/*
+ * A struct tm has int fields
+ * tm_sec (0-59, 60 or 61 only for leap seconds)
+ * tm_min (0-59)
+ * tm_hour (0-23)
+ * tm_mday (1-31)
+ * tm_mon (0-11)
+ * tm_year (number of years since 1900)
+ * tm_wday (0-6, 0=Sunday)
+ * tm_yday (0-365)
+ * tm_isdst (>0: yes, 0: no, <0: unknown)
+ */
+
+#include <unistd.h> /* for geteuid() */
+#include <fcntl.h> /* for O_RDWR */
+
+#include "nls.h"
+
+#if defined(__i386__) || defined(__alpha__)
+#include <asm/io.h> /* for inb, outb */
+#else
+void outb(int a, int b){}
+int inb(int c){ return 0; }
+#endif
+
+#include "clock.h"
+
+#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
+#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10)
+
+#define TM_EPOCH 1900
+int cmos_epoch = 1900; /* 1980 for an alpha in ARC console time */
+ /* One also sees 1952 (Digital Unix?)
+ and 1958 (ALPHA_PRE_V1_2_SRM_CONSOLE) */
+
+/* Martin Ostermann writes:
+The problem with the Jensen is twofold: First, it has the clock at a
+different address. Secondly, it has a distinction beween "local" and
+normal bus addresses. The local ones pertain to the hardware integrated
+into the chipset, like serial/parallel ports and of course, the RTC.
+Those need to be addressed differently. This is handled fine in the kernel,
+and it's not a problem, since this usually gets totally optimized by the
+compile. But the i/o routines of (g)libc lack this support so far.
+The result of this is, that the old clock program worked only on the
+Jensen when USE_DEV_PORT was defined, but not with the normal inb/outb
+functions.
+ */
+int use_dev_port = 0; /* 1 for Jensen */
+int dev_port_fd;
+unsigned short clock_ctl_addr = 0x70; /* 0x170 for Jensen */
+unsigned short clock_data_addr = 0x71; /* 0x171 for Jensen */
+
+
+int century_byte = 0; /* 0: don't access a century byte
+ 50 (0x32): usual PC value
+ 55 (0x37): PS/2 */
+
+#ifdef __alpha__
+int funkyTOY = 0; /* 1 for PC164/LX164/SX164 type alpha */
+#endif
+
+#ifdef __alpha
+
+static int
+is_in_cpuinfo(char *fmt, char *str)
+{
+ FILE *cpuinfo;
+ char field[256];
+ char format[256];
+ int found = 0;
+
+ sprintf(format, "%s : %s", fmt, "%255s");
+
+ if ((cpuinfo = fopen ("/proc/cpuinfo", "r")) != NULL) {
+ while (!feof(cpuinfo)) {
+ if (fscanf (cpuinfo, format, field) == 1) {
+ if (strncmp(field, str, strlen(str)) == 0)
+ found = 1;
+ break;
+ }
+ fgets (field, 256, cpuinfo);
+ }
+ fclose(cpuinfo);
+ }
+ return found;
+}
+
+/* Set cmos_epoch, either from user options, or by asking the kernel,
+ or by looking at /proc/cpu_info */
+void
+set_cmos_epoch(int ARCconsole, int SRM) {
+ unsigned long epoch;
+
+ /* Believe the user */
+ if (ARCconsole)
+ cmos_epoch = 1980;
+
+ if (ARCconsole || SRM)
+ return;
+
+
+ /* If we can ask the kernel, we don't need guessing from /proc/cpuinfo */
+ if (get_epoch_rtc(&epoch, 1) == 0) {
+ cmos_epoch = epoch;
+ return;
+ }
+
+
+ /* See whether we are dealing with SRM or MILO, as they have
+ different "epoch" ideas. */
+ if (is_in_cpuinfo("system serial number", "MILO")) {
+ ARCconsole = 1;
+ if (debug) printf (_("booted from MILO\n"));
+ }
+
+ /* See whether we are dealing with a RUFFIAN aka UX, as they have REALLY
+ different TOY (TimeOfYear) format: BCD, and not an ARC-style epoch.
+ BCD is detected dynamically, but we must NOT adjust like ARC. */
+ if (ARCconsole && is_in_cpuinfo("system type", "Ruffian")) {
+ ARCconsole = 0;
+ if (debug) printf (_("Ruffian BCD clock\n"));
+ }
+
+ if (ARCconsole)
+ cmos_epoch = 1980;
+}
+
+void
+set_cmos_access(int Jensen, int funky_toy) {
+
+ /* See whether we're dealing with a Jensen---it has a weird I/O
+ system. DEC was just learning how to build Alpha PCs. */
+ if (Jensen || is_in_cpuinfo("system type", "Jensen")) {
+ use_dev_port = 1;
+ clock_ctl_addr = 0x170;
+ clock_data_addr = 0x171;
+ if (debug) printf (_("clockport adjusted to 0x%x\n"), clock_ctl_addr);
+ }
+
+ /* see whether we are dealing with PC164/LX164/SX164, as they have a TOY
+ that must be accessed differently to work correctly. */
+ if (funky_toy ||
+ is_in_cpuinfo("system variation", "PC164") ||
+ is_in_cpuinfo("system variation", "LX164") ||
+ is_in_cpuinfo("system variation", "SX164")) {
+ funkyTOY = 1;
+ if (debug) printf (_("funky TOY!\n"));
+ }
+}
+#endif
+
+
+
+
+#ifdef __i386__
+
+/*
+ * Try to do CMOS access atomically, so that no other processes
+ * can get a time slice while we are reading or setting the clock.
+ * (Also, if the kernel time is synchronized with an external source,
+ * the kernel itself will fiddle with the RTC every 11 minutes.)
+ */
+
+static unsigned long
+atomic(const char *name, unsigned long (*op)(unsigned long),
+ unsigned long arg)
+{
+ unsigned long v;
+ __asm__ volatile ("cli");
+ v = (*op)(arg);
+ __asm__ volatile ("sti");
+ return v;
+}
+
+#elif __alpha__
+
+/*
+ * The Alpha doesn't allow user-level code to disable interrupts (for
+ * good reasons). Instead, we ensure atomic operation by performing
+ * the operation and checking whether the high 32 bits of the cycle
+ * counter changed. If they did, a context switch must have occurred
+ * and we redo the operation. As long as the operation is reasonably
+ * short, it will complete atomically, eventually.
+ */
+
+static unsigned long
+atomic(const char *name, unsigned long (*op)(unsigned long),
+ unsigned long arg)
+{
+ unsigned long ts1, ts2, n, v;
+
+ for (n = 0; n < 1000; ++n) {
+ asm volatile ("rpcc %0" : "r="(ts1));
+ v = (*op)(arg);
+ asm volatile ("rpcc %0" : "r="(ts2));
+
+ if ((ts1 ^ ts2) >> 32 == 0) {
+ return v;
+ }
+ }
+ fprintf(stderr, _("%s: atomic %s failed for 1000 iterations!"), progname, name);
+ exit(1);
+}
+
+#else
+
+/*
+ * Hmmh, this isn't very atomic. Maybe we should force an error
+ * instead?
+ */
+static unsigned long
+atomic(const char *name, unsigned long (*op)(unsigned long),
+ unsigned long arg)
+{
+ return (*op)(arg);
+}
+
+#endif
+
+
+static inline
+unsigned long cmos_read(unsigned long reg)
+{
+ if (use_dev_port) {
+ unsigned char v = reg | 0x80;
+ lseek(dev_port_fd, clock_ctl_addr, 0);
+ write(dev_port_fd, &v, 1);
+ lseek(dev_port_fd, clock_data_addr, 0);
+ read(dev_port_fd, &v, 1);
+ return v;
+ } else {
+ /* We only want to read CMOS data, but unfortunately
+ writing to bit 7 disables (1) or enables (0) NMI;
+ since this bit is read-only we have to guess the old status.
+ Various docs suggest that one should disable NMI while
+ reading/writing CMOS data, and enable it again afterwards.
+ This would yield the sequence
+ outb (reg | 0x80, 0x70);
+ val = inb(0x71);
+ outb (0x0d, 0x70); // 0x0d: random read-only location
+ Other docs state that "any write to 0x70 should be followed
+ by an action to 0x71 or the RTC wil be left in an unknown state".
+ Most docs say that it doesnt matter at all what one does.
+ */
+ /* bit 0x80: disable NMI while reading - should we?
+ Let us follow the kernel and not disable.
+ Called only with 0 <= reg < 128 */
+ outb (reg, clock_ctl_addr);
+ return inb (clock_data_addr);
+ }
+}
+
+static inline
+unsigned long cmos_write(unsigned long reg, unsigned long val)
+{
+ if (use_dev_port) {
+ unsigned char v = reg | 0x80;
+ lseek(dev_port_fd, clock_ctl_addr, 0);
+ write(dev_port_fd, &v, 1);
+ v = (val & 0xff);
+ lseek(dev_port_fd, clock_data_addr, 0);
+ write(dev_port_fd, &v, 1);
+ } else {
+ outb (reg, clock_ctl_addr);
+ outb (val, clock_data_addr);
+ }
+ return 0;
+}
+
+unsigned long cmos_set_time(unsigned long arg)
+{
+ unsigned char save_control, save_freq_select, pmbit = 0;
+ struct tm tm = *(struct tm *) arg;
+ unsigned int century;
+
+/*
+ * CMOS byte 10 (clock status register A) has 3 bitfields:
+ * bit 7: 1 if data invalid, update in progress (read-only bit)
+ * (this is raised 224 us before the actual update starts)
+ * 6-4 select base frequency
+ * 010: 32768 Hz time base (default)
+ * 111: reset
+ * all other combinations are manufacturer-dependent
+ * (e.g.: DS1287: 010 = start oscillator, anything else = stop)
+ * 3-0 rate selection bits for interrupt
+ * 0000 none (may stop RTC)
+ * 0001, 0010 give same frequency as 1000, 1001
+ * 0011 122 microseconds (minimum, 8192 Hz)
+ * .... each increase by 1 halves the frequency, doubles the period
+ * 1111 500 milliseconds (maximum, 2 Hz)
+ * 0110 976.562 microseconds (default 1024 Hz)
+ */
+
+ save_control = cmos_read (11); /* tell the clock it's being set */
+ cmos_write (11, (save_control | 0x80));
+ save_freq_select = cmos_read (10); /* stop and reset prescaler */
+ cmos_write (10, (save_freq_select | 0x70));
+
+ tm.tm_year += TM_EPOCH;
+ century = tm.tm_year/100;
+ tm.tm_year -= cmos_epoch;
+ tm.tm_year %= 100;
+ tm.tm_mon += 1;
+ tm.tm_wday += 1;
+
+ if (!(save_control & 0x02)) { /* 12hr mode; the default is 24hr mode */
+ if (tm.tm_hour == 0)
+ tm.tm_hour = 24;
+ if (tm.tm_hour > 12) {
+ tm.tm_hour -= 12;
+ pmbit = 0x80;
+ }
+ }
+
+ if (!(save_control & 0x04)) { /* BCD mode - the default */
+ BIN_TO_BCD(tm.tm_sec);
+ BIN_TO_BCD(tm.tm_min);
+ BIN_TO_BCD(tm.tm_hour);
+ BIN_TO_BCD(tm.tm_wday);
+ BIN_TO_BCD(tm.tm_mday);
+ BIN_TO_BCD(tm.tm_mon);
+ BIN_TO_BCD(tm.tm_year);
+ BIN_TO_BCD(century);
+ }
+
+ cmos_write (0, tm.tm_sec);
+ cmos_write (2, tm.tm_min);
+ cmos_write (4, tm.tm_hour | pmbit);
+ cmos_write (6, tm.tm_wday);
+ cmos_write (7, tm.tm_mday);
+ cmos_write (8, tm.tm_mon);
+ cmos_write (9, tm.tm_year);
+ if (century_byte)
+ cmos_write (century_byte, century);
+
+
+ /* The kernel sources, linux/arch/i386/kernel/time.c, have the
+ following comment:
+
+ The following flags have to be released exactly in this order,
+ otherwise the DS12887 (popular MC146818A clone with integrated
+ battery and quartz) will not reset the oscillator and will not
+ update precisely 500 ms later. You won't find this mentioned
+ in the Dallas Semiconductor data sheets, but who believes data
+ sheets anyway ... -- Markus Kuhn
+ */
+
+ cmos_write (11, save_control);
+ cmos_write (10, save_freq_select);
+ return 0;
+}
+
+static int
+hclock_read(unsigned long reg) {
+ return atomic("clock read", cmos_read, (reg));
+}
+
+static void
+hclock_set_time(const struct tm *tm) {
+ atomic("set time", cmos_set_time, (unsigned long)(tm));
+}
+
+static inline int
+cmos_clock_busy() {
+ return
+#ifdef __alpha__
+ /* poll bit 4 (UF) of Control Register C */
+ funkyTOY ? (hclock_read(12) & 0x10) :
+#endif
+ /* poll bit 7 (UIP) of Control Register A */
+ (hclock_read(10) & 0x80);
+}
+
+
+static int
+synchronize_to_clock_tick_cmos(void) {
+ int i;
+
+ /* Wait for rise. Should be within a second, but in case something
+ weird happens, we have a limit on this loop to reduce the impact
+ of this failure.
+ */
+ for (i = 0; !cmos_clock_busy(); i++)
+ if (i >= 10000000)
+ return 1;
+
+ /* Wait for fall. Should be within 2.228 ms. */
+ for (i = 0; cmos_clock_busy(); i++)
+ if (i >= 1000000)
+ return 1;
+ return 0;
+}
+
+
+
+static int
+read_hardware_clock_cmos(struct tm *tm) {
+/*----------------------------------------------------------------------------
+ Read the hardware clock and return the current time via <tm> argument.
+ Assume we have an ISA machine and read the clock directly with CPU I/O
+ instructions.
+
+ This function is not totally reliable. It takes a finite and
+ unpredictable amount of time to execute the code below. During that
+ time, the clock may change and we may even read an invalid value in
+ the middle of an update. We do a few checks to minimize this
+ possibility, but only the kernel can actually read the clock
+ properly, since it can execute code in a short and predictable
+ amount of time (by turning of interrupts).
+
+ In practice, the chance of this function returning the wrong time is
+ extremely remote.
+
+-----------------------------------------------------------------------------*/
+ bool got_time = FALSE;
+ unsigned char status, pmbit;
+
+ status = pmbit = 0; /* just for gcc */
+
+ while (!got_time) {
+ /* Bit 7 of Byte 10 of the Hardware Clock value is the Update In Progress
+ (UIP) bit, which is on while and 244 uS before the Hardware Clock
+ updates itself. It updates the counters individually, so reading
+ them during an update would produce garbage. The update takes 2mS,
+ so we could be spinning here that long waiting for this bit to turn
+ off.
+
+ Furthermore, it is pathologically possible for us to be in this
+ code so long that even if the UIP bit is not on at first, the
+ clock has changed while we were running. We check for that too,
+ and if it happens, we start over.
+ */
+
+ if (!cmos_clock_busy()) {
+ /* No clock update in progress, go ahead and read */
+ tm->tm_sec = hclock_read(0);
+ tm->tm_min = hclock_read(2);
+ tm->tm_hour = hclock_read(4);
+ tm->tm_wday = hclock_read(6);
+ tm->tm_mday = hclock_read(7);
+ tm->tm_mon = hclock_read(8);
+ tm->tm_year = hclock_read(9);
+ status = hclock_read(11);
+#if 0
+ if (century_byte)
+ century = hclock_read(century_byte);
+#endif
+
+ /* Unless the clock changed while we were reading, consider this
+ a good clock read .
+ */
+ if (tm->tm_sec == hclock_read (0))
+ got_time = TRUE;
+ }
+ /* Yes, in theory we could have been running for 60 seconds and
+ the above test wouldn't work!
+ */
+ }
+
+ if (!(status & 0x04)) { /* BCD mode - the default */
+ BCD_TO_BIN(tm->tm_sec);
+ BCD_TO_BIN(tm->tm_min);
+ pmbit = (tm->tm_hour & 0x80);
+ tm->tm_hour &= 0x7f;
+ BCD_TO_BIN(tm->tm_hour);
+ BCD_TO_BIN(tm->tm_wday);
+ BCD_TO_BIN(tm->tm_mday);
+ BCD_TO_BIN(tm->tm_mon);
+ BCD_TO_BIN(tm->tm_year);
+#if 0
+ BCD_TO_BIN(century);
+#endif
+ }
+
+ /* We don't use the century byte of the Hardware Clock
+ since we don't know its address (usually 50 or 55).
+ Here, we follow the advice of the X/Open Base Working Group:
+ "if century is not specified, then values in the range [69-99]
+ refer to years in the twentieth century (1969 to 1999 inclusive),
+ and values in the range [00-68] refer to years in the twenty-first
+ century (2000 to 2068 inclusive)."
+ */
+
+ tm->tm_wday -= 1;
+ tm->tm_mon -= 1;
+ tm->tm_year += (cmos_epoch - TM_EPOCH);
+ if (tm->tm_year < 69)
+ tm->tm_year += 100;
+ if (pmbit) {
+ tm->tm_hour += 12;
+ if (tm->tm_hour == 24)
+ tm->tm_hour = 0;
+ }
+
+ tm->tm_isdst = -1; /* don't know whether it's daylight */
+ return 0;
+}
+
+
+
+static int
+set_hardware_clock_cmos(const struct tm *new_broken_time) {
+
+ hclock_set_time(new_broken_time);
+ return 0;
+}
+
+static int
+i386_iopl(const int level) {
+#if defined(__i386__) || defined(__alpha__)
+ extern int iopl(const int level);
+ return iopl(level);
+#else
+ return -2;
+#endif
+}
+
+static int
+get_permissions_cmos(void) {
+ int rc;
+
+ if (use_dev_port) {
+ if ((dev_port_fd = open("/dev/port", O_RDWR)) < 0) {
+ int errsv = errno;
+ fprintf(stderr, _("Cannot open /dev/port: %s"), strerror(errsv));
+ rc = 1;
+ } else
+ rc = 0;
+ } else {
+ rc = i386_iopl(3);
+ if (rc == -2) {
+ fprintf(stderr, _("I failed to get permission because I didnt try.\n"));
+ } else if (rc != 0) {
+ rc = errno;
+ fprintf(stderr, _("%s is unable to get I/O port access: "
+ "the iopl(3) call failed.\n"), progname);
+ if(rc == EPERM && geteuid())
+ fprintf(stderr, _("Probably you need root privileges.\n"));
+ }
+ }
+ return rc ? 1 : 0;
+}
+
+static struct clock_ops cmos = {
+ "direct I/O instructions to ISA clock",
+ get_permissions_cmos,
+ read_hardware_clock_cmos,
+ set_hardware_clock_cmos,
+ synchronize_to_clock_tick_cmos,
+};
+
+
+/* return &cmos if cmos clock present, NULL otherwise */
+/* choose this construction to avoid gcc messages about unused variables */
+
+struct clock_ops *
+probe_for_cmos_clock(void){
+ int have_cmos =
+#if defined(__i386__) || defined(__alpha__)
+ TRUE;
+#else
+ FALSE;
+#endif
+ return have_cmos ? &cmos : NULL;
+}
diff --git a/sys-utils/hwclock.8 b/clock/hwclock.8
index 58f4a259e..0a216840a 100644
--- a/sys-utils/hwclock.8
+++ b/clock/hwclock.8
@@ -20,12 +20,16 @@ clock \- query and set the hardware clock (RTC)
.PP
other options:
.PP
-.B "--utc --directisa --test --debug"
+.B "--utc --localtime --directisa --test --debug"
+.PP
+and arcane options for DEC Alpha:
+.PP
+.B "--arc --jensen --srm --funky-toy"
.PP
Minimum unique abbreviations of all options are acceptable.
.PP
-Also, equivalent options -r, -w, -s, -a, -v, -u, and -D are accepted for
-compatibility with the program "clock".
+Also, equivalent options -r, -w, -s, -a, -v, -u, -D, -A, -J, -S, and -F
+are accepted for compatibility with the program "clock".
.SH DESCRIPTION
.I hwclock
@@ -48,6 +52,11 @@ what function to perform:
.TP
.B \-\-show
Read the Hardware Clock and print the time on Standard Output.
+The time is always in local time, even if you keep your Hardware Clock
+in Coordinated Universal Time. See the
+.B \-\-utc
+option.
+
.TP
.B \-\-set
Set the Hardware Clock to the time given by the
@@ -58,8 +67,11 @@ option.
Set the System Time from the Hardware Clock.
Also set the kernel's timezone value to the local timezone as indicated by
-the TZ environment variable and/or /usr/lib/zoneinfo, as tzset(3) would
-interpret them. EXCEPT: always set the Daylight Savings Time part of
+the TZ environment variable and/or
+.IR /usr/lib/zoneinfo ,
+as
+.BR tzset (3)
+would interpret them. EXCEPT: always set the Daylight Savings Time part of
the kernel's timezone value to 0 ("not Daylight Savings Time"). If DST
is indicated, just add an hour to the base part.
@@ -108,6 +120,12 @@ option is an argument to the
program. For example,
.sp
.I hwclock --set --date="9/22/96 16:45:05"
+.sp
+The argument is in local time, even if you keep your Hardware Clock in
+Coordinated Universal time. See the
+.I \-\-utc
+option.
+
.TP
.B \-\-epoch=year
Specifies the year which is the beginning of the Hardware Clock's
@@ -122,28 +140,40 @@ For example,
The following options apply to most functions.
.TP
.B \-\-utc
+.TP
+.B \-\-localtime
Indicates that the Hardware Clock is kept in Coordinated Universal
-Time. It is your choice whether to keep your clock in UTC or local
-time, but nothing in the clock tells which you've chosen. So this
-option is how you give that information to
-.I hwclock.
+Time or local time, respectively. It is your choice whether to keep
+your clock in UTC or local time, but nothing in the clock tells which
+you've chosen. So this option is how you give that information to
+.IR hwclock .
-In order to avoid any possible misunderstandings: all conversation
-with the program
-.I hwclock
-is done in local time. If you have your clock in UTC
-(as is common on a Unix system) then the option
-.B --utc
-tells
+If you specify the wrong one of these options (or specify neither and
+take a wrong default), both setting and querying of the Hardware Clock
+will be messed up.
+
+If you specify neither
+.B \-\-utc
+nor
+.B \-\-localtime
+, the default is whichever was specified the last time
.I hwclock
-to do the appropriate conversions: `hwclock \-\-show \-\-utc'
-will tell you the local time, assuming the hardware clock is in UTC,
-and `hwclock \-\-set \-\-date="XXX" \-\-utc' will set the
-hardware clock to the UTC equivalent of the local time XXX.
+was used to set the clock (i.e. hwclock was successfully run with the
+.B \-\-set
+,
+.B \-\-systohc
+,
+or
+.B \-\-adjust
+options), as recorded in the adjtime file. If the adjtime file doesn't
+exist, the default is local time.
+
.TP
.B \-\-directisa
-is meaningful only on an ISA machine. For all other machines, it has
-no effect. This option tells
+is meaningful only on an ISA machine or an Alpha (which implements enough
+of ISA to be, roughly speaking, an ISA machine for
+.IR hwclock 's
+purposes). For other machines, it has no effect. This option tells
.I hwclock
to use explicit I/O instructions to access the Hardware Clock.
Without this option,
@@ -154,6 +184,93 @@ use the explicit I/O instructions anyway.
The rtc device driver was new in Linux Release 2.
.TP
+.B \-\-badyear
+Indicates that the Hardware Clock is incapable of storing years outside
+the range 1994-1999. There is a problem in some BIOSes (almost all
+Award BIOSes made between 4/26/94 and 5/31/95) wherein they are unable
+to deal with years after 1999. If one attempts to set the year-of-century
+value to something less than 94 (or 95 in some cases), the value that
+actually gets set is 94 (or 95). Thus, if you have one of these machines,
+.I hwclock
+cannot set the year after 1999 and cannot use the value of the clock as
+the true time in the normal way.
+
+To compensate for this (without your getting a BIOS update, which would
+definitely be preferable), always use
+.B \-\-badyear
+if you have one of these machines. When
+.I hwclock
+knows it's working with a brain-damaged clock, it ignores the year part of
+the Hardware Clock value and instead tries to guess the year based on the
+last calibrated date in the adjtime file, by assuming that that date is
+within the past year. For this to work, you had better do a
+.I hwclock \-\-set
+or
+.I hwclock \-\-systohc
+at least once a year!
+
+Though
+.I hwclock
+ignores the year value when it reads the Hardware Clock, it sets the
+year value when it sets the clock. It sets it to 1995, 1996, 1997, or
+1998, whichever one has the same position in the leap year cycle as
+the true year. That way, the Hardware Clock inserts leap days where
+they belong. Again, if you let the Hardware Clock run for more than a
+year without setting it, this scheme could be defeated and you could
+end up losing a day.
+
+.I hwclock
+warns you that you probably need
+.B \-\-badyear
+whenever it finds your Hardware Clock set to 1994 or 1995.
+
+.TP
+.B \-\-srm
+.TP
+.B \-\-arc
+.TP
+.B \-\-jensen
+.TP
+.B \-\-funky\-toy
+These options all tell
+.I hwclock
+what kind of Alpha machine you have. They
+are invalid if you don't have an Alpha and shouldn't be necessary if you
+do, because
+.I hwclock
+should be able to determine by itself what it's
+running on. These options make it possible for
+.I hwclock
+to work even when
+its environment does not conform to its expectations and thus it cannot
+accurately determine what sort of system it is running on. If you think
+hwclock is incorrectly determining the system's characteristics, try
+running with the
+.B \-\-debug
+option to see what conclusions the program is
+reaching and how. If you find you need one of these options to make
+.I hwclock
+work, contact the
+.I hwclock
+maintainer to see if the program can be improved to detect your system
+automatically.
+
+.B \-\-jensen
+means you are running on a Jensen model.
+
+.B \-\-arc
+means your machine is running with ARC console time.
+
+.B \-\-srm
+means your machine is running with SRM console time.
+
+.B \-\-funky\-toy
+means that on your machine, one has to use the UF bit instead
+of the UIP bit in the Hardware Clock to detect a time transition. "Toy"
+in the option name refers to the Time Of Year facility of the machine.
+
+
+.TP
.B \-\-test
Do everything except actually updating the Hardware Clock or anything
else. This is useful, especially in conjunction with
@@ -208,12 +325,12 @@ for which ISA was designed, the Hardware Clock is the only real time clock.
.PP
It is important that the System Time not have any discontinuities such as
would happen if you used the
-.I date(1L)
+.BR date (1L)
program to set it while the system is running. You can, however, do whatever
you want to the Hardware Clock while the system is running, and the next
time Linux starts up, it will do so with the adjusted time from the Hardware
Clock. You can also use the program
-.I adjtimex(8)
+.BR adjtimex (8)
to smoothly adjust the System Time while the system runs.
.PP
A Linux kernel maintains a concept of a local timezone for the system.
@@ -244,104 +361,93 @@ users of the timezone value would actually compute the wrong local
time.
.PP
Therefore,
-.I
-hwclock
+.I hwclock
violates the definition of the kernel's timezone value and always sets
the DST part to zero. If DST is supposed to be in effect,
-.I
-hwclock
+.I hwclock
simply adds an hour to the geographical part.
.SH How hwclock Accesses the Hardware Clock
.PP
-.I
-hwclock
+.I hwclock
Uses many different ways to get and set Hardware Clock values.
The most normal way is to do I/O to the device special file /dev/rtc,
which is presumed to be driven by the rtc device driver. However,
this method is not always available. For one thing, the rtc driver is
a relatively recent addition to Linux. Older systems don't have it.
+Also, though there are versions of the rtc driver that work on DEC
+Alphas, there appear to be plenty of Alphas on which the rtc driver
+does not work (a common symptom is hwclock hanging).
.PP
On older systems, the method of accessing the Hardware Clock depends on
the system hardware.
.PP
On an ISA system,
-.I
-hwclock
-can directly access the "CMOS memory" registers that constitute the clock,
-by doing I/O to Ports 0x70 and 0x71. It can only do this if running with
-superuser effective userid.
+.I hwclock
+can directly access the "CMOS memory" registers that
+constitute the clock, by doing I/O to Ports 0x70 and 0x71. It does
+this with actual I/O instructions and consequently can only do it if
+running with superuser effective userid. (In the case of a Jensen
+Alpha, there is no way for
+.I hwclock
+to execute those I/O instructions, and so it uses instead the
+/dev/port device special file, which provides almost as low-level an
+interface to the I/O subsystem).
This is a really poor method of accessing the clock, for all the
reasons that user space programs are generally not supposed to do
direct I/O and disable interrupts. Hwclock provides it because it is
-the only method available with older Linux kernels for ISA machines.
+the only method available on ISA and Alpha systems which don't have
+working rtc device drivers available.
.PP
On an m68k system,
-.I
-hwclock
+.I hwclock
can access the clock via the console driver, via the device special
file /dev/tty1.
.PP
-On an Alpha,
-.I
-/dev/rtc
-is the only choice.
-
-There are or were some Alpha Linux systems that don't have /dev/rtc
-and there are or were programs that accessed the clock via almost
-direct I/O using /dev/port. However, this is not as good a method as
-/dev/rtc and such programs were not widely enough used that hwclock
-has any need to be backward compatible with them. So hwclock does not
-provide the /dev/port method and consequently will not work on an
-Alpha that doesn't have /dev/rtc.
-
-.PP
-.I
-hwclock
+.I hwclock
tries to use /dev/rtc. If it is compiled for a kernel that doesn't have
that function or it is unable to open /dev/rtc,
-.I
-hwclock
-will fall back to another method, if available. On an ISA
+.I hwclock
+will fall back to another method, if available. On an ISA or Alpha
machine, you can force
-.I
-hwclock
+.I hwclock
to use the direct manipulation of the CMOS registers without even trying
-/dev/rtc by specifying the --directisa option.
+.I /dev/rtc
+by specifying the \-\-directisa option.
.SH The Adjust Function
.PP
The Hardware Clock is usually not very accurate. However, much of its
-inaccuracy is completely predictable -- it gains or loses the same amount
+inaccuracy is completely predictable - it gains or loses the same amount
of time every day. This is called systematic drift.
-.I Hwclock's
+.IR hwclock 's
"adjust" function lets you make systematic corrections to correct the
systematic drift.
.PP
It works like this:
-.I Hwclock
+.I hwclock
keeps a file,
.I /etc/adjtime,
that keeps some historical information. This is called the adjtime file.
.PP
Suppose you start with no adjtime file. You issue a
-.I hwclock --set
+.I hwclock \-\-set
command to set the Hardware Clock to the true current time.
.I Hwclock
creates the adjtime file and records in it the current time as the
last time the clock was calibrated.
5 days
later, the clock has gained 10 seconds, so you issue another
-.I hwclock --set
+.I hwclock \-\-set
command to set it back 10 seconds.
.I Hwclock
updates the adjtime file to show the current time as the last time the
clock was calibrated, and records 2 seconds per day as the systematic
drift rate. 24 hours go by, and then you issue a
-.I hwclock --adjust
+.I hwclock \-\-adjust
command.
.I Hwclock
consults the adjtime file and sees that the clock gains 2 seconds per
@@ -349,15 +455,15 @@ day when left alone and that it has been left alone for exactly one
day. So it subtracts 2 seconds from the Hardware Clock. It then
records the current time as the last time the clock was adjusted.
Another 24 hours goes by and you issue another
-.I hwclock --adjust.
+.I hwclock \-\-adjust.
.I Hwclock
does the same thing: subtracts 2 seconds and updates the adjtime file
with the current time as the last time the clock was adjusted.
.PP
Every time you calibrate (set) the clock (using
-.I --set
+.I \-\-set
or
-.I --systohc
+.I \-\-systohc
),
.I hwclock
recalculates the systematic drift rate based on how long it has been
@@ -374,23 +480,36 @@ the accumulated drift will be more than a second and
will do the adjustment then.
.PP
It is good to do a
-.I hwclock --adjust
+.I hwclock \-\-adjust
just before the
-.I hwclock --hctosys
+.I hwclock \-\-hctosys
at system startup time, and maybe periodically while the system is
running via cron.
.PP
+The adjtime file, while named for its historical purpose of controlling
+adjustments only, actually contains other information for use by hwclock
+in remembering information from one invocation to the next.
+.PP
The format of the adjtime file is, in ASCII:
.PP
Line 1: 3 numbers, separated by blanks: 1) systematic drift rate in
seconds per day, floating point decimal; 2) Resulting number of
seconds since 1969 UTC of most recent adjustment or calibration,
decimal integer; 3) zero (for compatibility with
-.I clock
-).
+.IR clock )
+as a decimal integer.
.PP
Line 2: 1 number: Resulting number of seconds since 1969 UTC of most
-recent calibration.
+recent calibration. Zero if there has been no calibration yet or it
+is known that any previous calibration is moot (for example, because
+the Hardware Clock has been found, since that calibration, not to
+contain a valid time). This is a decimal integer.
+.PP
+Line 3: "UTC" or "LOCAL". Tells whether the Hardware Clock is set to
+Coordinated Universal Time or local time. You can always override this
+value with options on the
+.I hwclock
+command line.
.PP
You can use an adjtime file that was previously used with the
.I clock
@@ -398,7 +517,7 @@ program with
.I hwclock.
-.SH Automatic Hardware Clock Synchronization By the Kernel
+.SH "Automatic Hardware Clock Synchronization By the Kernel"
You should be aware of another way that the Hardware Clock is kept
synchronized in some systems. The Linux kernel has a mode wherein it
@@ -411,41 +530,70 @@ network or to a radio clock hooked up to your system. See RFC 1305).
This mode (we'll call it "11 minute mode") is off until something
turns it on. The ntp daemon xntpd is one thing that turns it on. You
can turn it off by running anything, including
-.I hwclock --hctosys
-, that sets the System Time the old fashioned way.
+.IR "hwclock \-\-hctosys" ,
+that sets the System Time the old fashioned way.
To see if it is on or
off, use the command
-.I adjtimex --print
+.I adjtimex \-\-print
and look at the value of "status". If the "64" bit of this number
(expressed in binary) equal to 0, 11 minute mode is on. Otherwise, it
is off.
If your system runs with 11 minute mode on, don't use
-.I hwclock --adjust
+.I hwclock \-\-adjust
or
-.I hwclock --hctosys .
+.IR "hwclock \-\-hctosys" .
You'll just make a mess. It is acceptable to use a
-.I hwclock --hctosys
+.I hwclock \-\-hctosys
at startup time to get a reasonable System Time until your system is
able to set the System Time from the external source and start 11
minute mode.
-.SH ENVIRONMENT VARIABLES
+.SH ISA Hardware Clock Century value
+
+There is some sort of standard that defines CMOS memory Byte 50 on an ISA
+machine as an indicator of what century it is.
+.I hwclock
+does not use or set that byte because there are some machines that
+don't define the byte that way, and it really isn't necessary anyway,
+since the year-of-century does a good job of implying which century it
+is.
+
+If you have a bona fide use for a CMOS century byte, contact the
+.I hwclock
+maintainer; an option may be appropriate.
+
+Note that this section is only relevant when you are using the "direct
+ISA" method of accessing the Hardware Clock.
+
+
+
+.SH "ENVIRONMENT VARIABLES"
.I TZ
.SH FILES
.I /etc/adjtime
.I /usr/lib/zoneinfo/
-
-.SH SEE ALSO
-adjtimex(8), date(1), gettimeofday(2), settimeofday(2), crontab(1),
-tzset(3)
+.I /dev/rtc
+.I /dev/port
+.I /dev/tty1
+.I /proc/cpuinfo
+
+.SH "SEE ALSO"
+.BR adjtimex (8),
+.BR date (1),
+.BR gettimeofday (2),
+.BR settimeofday (2),
+.BR crontab (1),
+.BR tzset (3)
.SH AUTHORS
Written By Bryan Henderson, September 1996 (bryanh@giraffe-data.com),
based on work done on the
.I clock
-program by Charles Hedrick, Rob Hooft, and Harald Koenig. See the source
-code for complete history and credits.
+program by Charles Hedrick, Rob Hooft, and Harald Koenig.
+See the source code for complete history and credits.
+
+
diff --git a/clock/hwclock.c b/clock/hwclock.c
new file mode 100644
index 000000000..a496e0570
--- /dev/null
+++ b/clock/hwclock.c
@@ -0,0 +1,1290 @@
+/*
+ * hwclock.c
+ *
+ * clock.c was written by Charles Hedrick, hedrick@cs.rutgers.edu, Apr 1992
+ * Modified for clock adjustments - Rob Hooft <hooft@chem.ruu.nl>, Nov 1992
+ * Improvements by Harald Koenig <koenig@nova.tat.physik.uni-tuebingen.de>
+ * and Alan Modra <alan@spri.levels.unisa.edu.au>.
+ *
+ * Major rewrite by Bryan Henderson <bryanh@giraffe-data.com>, 96.09.19.
+ * The new program is called hwclock. New features:
+ * - You can set the hardware clock without also modifying the system clock.
+ * - You can read and set the clock with finer than 1 second precision.
+ * - When you set the clock, hwclock automatically refigures the drift
+ * rate, based on how far off the clock was before you set it.
+ *
+ * Reshuffled things, added sparc code, and re-added alpha stuff
+ * by David Mosberger <davidm@azstarnet.com>
+ * and Jay Estabrook <jestabro@amt.tay1.dec.com>
+ * and Martin Ostermann <ost@coments.rwth-aachen.de>, aeb@cwi.nl, 990212.
+ *
+ * Fix for Award 2094 bug, Dave Coffin (dcoffin@shore.net) 11/12/98
+ */
+
+/*
+ * clock [-u] -r - read hardware clock
+ * clock [-u] -w - write hardware clock from system time
+ * clock [-u] -s - set system time from hardware clock
+ * clock [-u] -a - set system time from hardware clock, adjust the time
+ * to correct for systematic error, and write it back to
+ * the hardware clock
+ * -u indicates cmos clock is kept in universal time
+ * -A indicates cmos clock is kept in Alpha ARC console time (0 == 1980)
+ * -J indicates we're dealing with a Jensen (early DEC Alpha PC)
+ */
+
+/*
+ * Explanation of `adjusting' (Rob Hooft):
+ *
+ * The problem with my machine is that its CMOS clock is 10 seconds
+ * per day slow. With this version of clock.c, and my '/etc/rc.local'
+ * reading '/etc/clock -au' instead of '/etc/clock -u -s', this error
+ * is automatically corrected at every boot.
+ *
+ * To do this job, the program reads and writes the file '/etc/adjtime'
+ * to determine the correction, and to save its data. In this file are
+ * three numbers:
+ *
+ * 1) the correction in seconds per day. (So if your clock runs 5
+ * seconds per day fast, the first number should read -5.0)
+ * 2) the number of seconds since 1/1/1970 the last time the program
+ * was used
+ * 3) the remaining part of a second which was leftover after the last
+ * adjustment
+ *
+ * Installation and use of this program:
+ *
+ * a) create a file '/etc/adjtime' containing as the first and only line:
+ * '0.0 0 0.0'
+ * b) run 'clock -au' or 'clock -a', depending on whether your cmos is in
+ * universal or local time. This updates the second number.
+ * c) set your system time using the 'date' command.
+ * d) update your cmos time using 'clock -wu' or 'clock -w'
+ * e) replace the first number in /etc/adjtime by your correction.
+ * f) put the command 'clock -au' or 'clock -a' in your '/etc/rc.local'
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/stat.h>
+#include <shhopt.h>
+
+#include "clock.h"
+#include "../version.h"
+#include "nls.h"
+
+#define MYNAME "hwclock"
+#define VERSION "2.4c"
+
+char *progname = MYNAME;
+
+/* The struct that holds our hardware access routines */
+struct clock_ops *ur;
+
+#define FLOOR(arg) ((arg >= 0 ? (int) arg : ((int) arg) - 1));
+
+/* Here the information for time adjustments is kept. */
+#define ADJPATH "/etc/adjtime"
+
+/* Store the date here when "badyear" flag is set. */
+#define LASTDATE "/var/lib/lastdate"
+
+struct adjtime {
+ /* This is information we keep in the adjtime file that tells us how
+ to do drift corrections. Elements are all straight from the
+ adjtime file, so see documentation of that file for details.
+ Exception is <dirty>, which is an indication that what's in this
+ structure is not what's in the disk file (because it has been
+ updated since read from the disk file).
+ */
+ bool dirty;
+ float drift_factor;
+ time_t last_adj_time;
+ float not_adjusted;
+ time_t last_calib_time;
+};
+
+bool debug;
+ /* We are running in debug mode, wherein we put a lot of information about
+ what we're doing to standard output. */
+
+bool badyear;
+ /* Workaround for Award 4.50g BIOS bug: keep the year in a file. */
+
+/*
+ * Almost all Award BIOS's made between 04/26/94 and 05/31/95
+ * have a nasty bug limiting the RTC year byte to the range 94-99.
+ * Any year between 2000 and 2093 gets changed to 2094, every time
+ * you start the system.
+ * With the --badyear option, we write the date to file and hope
+ * that the file is updated at least once a year.
+ * I recommend putting this command "hwclock --badyear" in the monthly
+ * crontab, just to be safe. -- Dave Coffin 11/12/98
+ */
+void
+write_date_to_file (struct tm *tm) {
+ FILE *fp;
+
+ if ((fp = fopen(LASTDATE,"w"))) {
+ fprintf(fp,"%02d.%02d.%04d\n", tm->tm_mday, tm->tm_mon+1,
+ tm->tm_year+1900);
+ fclose(fp);
+ } else
+ perror(LASTDATE);
+}
+
+void
+read_date_from_file (struct tm *tm) {
+ int last_mday, last_mon, last_year;
+ FILE *fp;
+
+ if ((fp = fopen(LASTDATE,"r"))) {
+ if (fscanf (fp,"%d.%d.%d\n", &last_mday, &last_mon, &last_year) == 3) {
+ tm->tm_year = last_year-1900;
+ if ((tm->tm_mon << 5) + tm->tm_mday < ((last_mon-1) << 5) + last_mday)
+ tm->tm_year ++;
+ }
+ fclose(fp);
+ }
+ write_date_to_file (tm);
+}
+
+static float
+time_diff(struct timeval subtrahend, struct timeval subtractor) {
+/*---------------------------------------------------------------------------
+ The difference in seconds between two times in "timeval" format.
+----------------------------------------------------------------------------*/
+ return( (subtrahend.tv_sec - subtractor.tv_sec)
+ + (subtrahend.tv_usec - subtractor.tv_usec) / 1E6 );
+}
+
+
+static struct timeval
+time_inc(struct timeval addend, float increment) {
+/*----------------------------------------------------------------------------
+ The time, in "timeval" format, which is <increment> seconds after
+ the time <addend>. Of course, <increment> may be negative.
+-----------------------------------------------------------------------------*/
+ struct timeval newtime;
+
+ newtime.tv_sec = addend.tv_sec + (int) increment;
+ newtime.tv_usec = addend.tv_usec + (increment - (int) increment) * 1E6;
+
+ /* Now adjust it so that the microsecond value is between 0 and 1 million */
+ if (newtime.tv_usec < 0) {
+ newtime.tv_usec += 1E6;
+ newtime.tv_sec -= 1;
+ } else if (newtime.tv_usec >= 1E6) {
+ newtime.tv_usec -= 1E6;
+ newtime.tv_sec += 1;
+ }
+ return(newtime);
+}
+
+
+
+static void
+read_adjtime(struct adjtime *adjtime_p, int *rc_p) {
+/*----------------------------------------------------------------------------
+ Read the adjustment parameters out of the /etc/adjtime file.
+
+ Return them as the adjtime structure <*adjtime_p>.
+
+ If there is no /etc/adjtime file, return defaults.
+ If values are missing from the file, return defaults for them.
+
+ return *rc_p = 0 if all OK, !=0 otherwise.
+
+-----------------------------------------------------------------------------*/
+ FILE *adjfile;
+ int rc; /* local return code */
+ struct stat statbuf; /* We don't even use the contents of this. */
+
+ rc = stat(ADJPATH, &statbuf);
+ if (rc < 0 && errno == ENOENT) {
+ /* He doesn't have a adjtime file, so we'll use defaults. */
+ adjtime_p->drift_factor = 0;
+ adjtime_p->last_adj_time = 0;
+ adjtime_p->not_adjusted = 0;
+ adjtime_p->last_calib_time = 0;
+
+ *rc_p = 0;
+ } else {
+ adjfile = fopen(ADJPATH, "r"); /* open file for reading */
+ if (adjfile == NULL) {
+ outsyserr("cannot open file " ADJPATH);
+ *rc_p = 2;
+ } else {
+ char line1[81]; /* String: first line of adjtime file */
+ char line2[81]; /* String: second line of adjtime file */
+
+ line1[0] = '\0'; /* In case fgets fails */
+ fgets(line1, sizeof(line1), adjfile);
+ line2[0] = '\0'; /* In case fgets fails */
+ fgets(line2, sizeof(line2), adjfile);
+
+ fclose(adjfile);
+
+ /* Set defaults in case values are missing from file */
+ adjtime_p->drift_factor = 0;
+ adjtime_p->last_adj_time = 0;
+ adjtime_p->not_adjusted = 0;
+ adjtime_p->last_calib_time = 0;
+
+ sscanf(line1, "%f %d %f",
+ &adjtime_p->drift_factor,
+ (int *) &adjtime_p->last_adj_time,
+ &adjtime_p->not_adjusted);
+
+ sscanf(line2, "%d", (int *) &adjtime_p->last_calib_time);
+
+ *rc_p = 0;
+ }
+ adjtime_p->dirty = FALSE;
+
+ if (debug) {
+ printf(_("Last drift adjustment done at %d seconds after 1969\n"),
+ (int) adjtime_p->last_adj_time);
+ printf(_("Last calibration done at %d seconds after 1969\n"),
+ (int) adjtime_p->last_calib_time);
+ }
+ }
+}
+
+
+static void
+synchronize_to_clock_tick(int *retcode_p) {
+/*-----------------------------------------------------------------------------
+ Wait until the falling edge of the Hardware Clock's update flag so
+ that any time that is read from the clock immediately after we
+ return will be exact.
+
+ The clock only has 1 second precision, so it gives the exact time only
+ once per second, right on the falling edge of the update flag.
+
+ We wait (up to one second) either blocked waiting for an rtc device
+ or in a CPU spin loop. The former is probably not very accurate.
+
+ Return *retcode_p == 0 if it worked, nonzero if it didn't.
+
+-----------------------------------------------------------------------------*/
+ if (debug) printf(_("Waiting for clock tick...\n"));
+
+ *retcode_p = ur->synchronize_to_clock_tick();
+
+ if (debug) printf(_("...got clock tick\n"));
+}
+
+
+
+static void
+mktime_tz(struct tm tm, const bool universal,
+ bool *valid_p, time_t *systime_p) {
+/*-----------------------------------------------------------------------------
+ Convert a time in broken down format (hours, minutes, etc.) into standard
+ unix time (seconds into epoch). Return it as *systime_p.
+
+ The broken down time is argument <tm>. This broken down time is either in
+ local time zone or UTC, depending on value of logical argument "universal".
+ True means it is in UTC.
+
+ If the argument contains values that do not constitute a valid time,
+ and mktime() recognizes this, return *valid_p == false and
+ *systime_p undefined. However, mktime() sometimes goes ahead and
+ computes a fictional time "as if" the input values were valid,
+ e.g. if they indicate the 31st day of April, mktime() may compute
+ the time of May 1. In such a case, we return the same fictional
+ value mktime() does as *systime_p and return *valid_p == true.
+
+-----------------------------------------------------------------------------*/
+ time_t mktime_result; /* The value returned by our mktime() call */
+ char *zone; /* Local time zone name */
+
+ /* We use the C library function mktime(), but since it only works on
+ local time zone input, we may have to fake it out by temporarily
+ changing the local time zone to UTC.
+ */
+ zone = (char *) getenv("TZ"); /* remember original time zone */
+ mktime_result = mktime(&tm);
+ if (universal) {
+ /* Set timezone to UTC */
+ setenv("TZ", "", TRUE);
+ /* Note: tzset() gets called implicitly by the time code, but only the
+ first time. When changing the environment variable, better call
+ tzset() explicitly.
+ */
+ tzset();
+ }
+ mktime_result = mktime(&tm);
+ if (mktime_result == -1) {
+ /* This apparently (not specified in mktime() documentation) means
+ the 'tm' structure does not contain valid values (however, not
+ containing valid values does _not_ imply mktime() returns -1).
+ */
+ *valid_p = FALSE;
+ *systime_p = 0;
+ if (debug)
+ printf(_("Invalid values in hardware clock: "
+ "%2d/%.2d/%.2d %.2d:%.2d:%.2d\n"),
+ tm.tm_year, tm.tm_mon+1, tm.tm_mday,
+ tm.tm_hour, tm.tm_min, tm.tm_sec
+ );
+ } else {
+ *valid_p = TRUE;
+ *systime_p = mktime_result;
+ if (debug)
+ printf(_("Hw clock time : %.2d:%.2d:%.2d = %d seconds since 1969\n"),
+ tm.tm_hour, tm.tm_min, tm.tm_sec, (int) *systime_p);
+ }
+ /* now put back the original zone. */
+ if (zone) setenv("TZ", zone, TRUE);
+ else unsetenv("TZ");
+ tzset();
+}
+
+
+static void
+read_hardware_clock(const bool universal, bool *valid_p, time_t *systime_p){
+/*----------------------------------------------------------------------------
+ Read the hardware clock and return the current time via <tm> argument.
+
+ Use the method indicated by <method> argument to access the hardware clock.
+-----------------------------------------------------------------------------*/
+ struct tm tm;
+ int err;
+
+ err = ur->read_hardware_clock(&tm);
+
+ if (badyear)
+ read_date_from_file(&tm);
+
+ if (debug)
+ printf (_("Time read from Hardware Clock: %02d:%02d:%02d\n"),
+ tm.tm_hour, tm.tm_min, tm.tm_sec);
+ mktime_tz(tm, universal, valid_p, systime_p);
+}
+
+
+static void
+set_hardware_clock(const time_t newtime,
+ const bool universal,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the time <newtime>, in local time zone or UTC,
+ according to <universal>.
+----------------------------------------------------------------------------*/
+ int err;
+ struct tm new_broken_time;
+ /* Time to which we will set Hardware Clock, in broken down format, in
+ the time zone of caller's choice
+ */
+
+ if (universal)
+ new_broken_time = *gmtime(&newtime);
+ else
+ new_broken_time = *localtime(&newtime);
+
+ if (debug)
+ printf(_("Setting Hardware Clock to %.2d:%.2d:%.2d "
+ "= %d seconds since 1969\n"),
+ new_broken_time.tm_hour, new_broken_time.tm_min,
+ new_broken_time.tm_sec, (int) newtime);
+
+ if (testing)
+ printf(_("Clock not changed - testing only.\n"));
+ else {
+ if (badyear) {
+ /*
+ * Write the real year to a file, then write a fake year
+ * between 1995 and 1998 to the RTC. This way, Award BIOS boots
+ * on 29 Feb 2000 thinking that it's 29 Feb 1996.
+ */
+ write_date_to_file (&new_broken_time);
+ new_broken_time.tm_year = 95 + ((new_broken_time.tm_year+1) & 3);
+ }
+ err = ur->set_hardware_clock(&new_broken_time);
+ }
+}
+
+
+
+static void
+set_hardware_clock_exact(const time_t settime,
+ const struct timeval ref_time,
+ const bool universal,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the time "settime", in local time zone or UTC,
+ according to "universal".
+
+ But correct "settime" and wait for a fraction of a second so that
+ "settime" is the value of the Hardware Clock as of system time
+ "ref_time", which is in the past. For example, if "settime" is
+ 14:03:05 and "ref_time" is 12:10:04.5 and the current system
+ time is 12:10:06.0: Wait .5 seconds (to make exactly 2 seconds since
+ "ref_time") and then set the Hardware Clock to 14:03:07, thus
+ getting a precise and retroactive setting of the clock.
+
+ (Don't be confused by the fact that the system clock and the Hardware
+ Clock differ by two hours in the above example. That's just to remind
+ you that there are two independent time scales here).
+
+ This function ought to be able to accept set times as fractional times.
+ Idea for future enhancement.
+
+-----------------------------------------------------------------------------*/
+ time_t newtime; /* Time to which we will set Hardware Clock */
+ struct timeval now_time; /* locally used time */
+
+ gettimeofday(&now_time, NULL);
+ newtime = settime + (int) time_diff(now_time, ref_time) + 1;
+ if (debug)
+ printf(_("Time elapsed since reference time has been %.6f seconds.\n"
+ "Delaying further to reach the next full second.\n"),
+ time_diff(now_time, ref_time));
+
+ /* Now delay some more until Hardware Clock time newtime arrives */
+ do gettimeofday(&now_time, NULL);
+ while (time_diff(now_time, ref_time) < newtime - settime);
+
+ set_hardware_clock(newtime, universal, testing);
+}
+
+
+
+static void
+display_time(const bool hclock_valid, const time_t systime,
+ const float sync_duration) {
+/*----------------------------------------------------------------------------
+ Put the time "systime" on standard output in display format.
+ Except if hclock_valid == false, just tell standard output that we don't
+ know what time it is.
+
+ Include in the output the adjustment "sync_duration".
+-----------------------------------------------------------------------------*/
+ if (!hclock_valid)
+ fprintf(stderr, _("The Hardware Clock registers contain values that are "
+ "either invalid (e.g. 50th day of month) or beyond the range "
+ "we can handle (e.g. Year 2095).\n"));
+ else {
+ char *ctime_now; /* Address of static storage containing time string */
+
+ /* For some strange reason, ctime() is designed to include a newline
+ character at the end. We have to remove that.
+ */
+ ctime_now = ctime(&systime); /* Compute display value for time */
+ *(ctime_now+strlen(ctime_now)-1) = '\0'; /* Cut off trailing newline */
+
+ printf(_("%s %.6f seconds\n"), ctime_now, -(sync_duration));
+ }
+}
+
+
+
+static int
+interpret_date_string(const char *date_opt, time_t * const time_p) {
+/*----------------------------------------------------------------------------
+ Interpret the value of the --date option, which is something like
+ "13:05:01". In fact, it can be any of the myriad ASCII strings that specify
+ a time which the "date" program can understand. The date option value in
+ question is our "dateopt" argument.
+
+ The specified time is in the local time zone.
+
+ Our output, "*time_p", is a seconds-into-epoch time.
+
+ We use the "date" program to interpret the date string. "date" must be
+ runnable by issuing the command "date" to the /bin/sh shell. That means
+ in must be in the current PATH.
+
+ If anything goes wrong (and many things can), we return return code
+ 10 and arbitrary *time_p. Otherwise, return code is 0 and *time_p
+ is valid.
+----------------------------------------------------------------------------*/
+ FILE *date_child_fp;
+ char date_resp[100];
+ const char magic[]="seconds-into-epoch=";
+ char date_command[100];
+ int retcode; /* our eventual return code */
+ int rc; /* local return code */
+
+ if (date_opt == NULL) {
+ fprintf(stderr, _("No --date option specified.\n"));
+ retcode = 14;
+ } else if (strchr(date_opt, '"') != NULL) {
+ /* Quotation marks in date_opt would ruin the date command we construct.
+ */
+ fprintf(stderr, _("The value of the --date option is not a valid date.\n"
+ "In particular, it contains quotation marks.\n"));
+ retcode = 12;
+ } else {
+ sprintf(date_command, "date --date=\"%s\" +seconds-into-epoch=%%s",
+ date_opt);
+ if (debug) printf(_("Issuing date command: %s\n"), date_command);
+
+ date_child_fp = popen(date_command, "r");
+ if (date_child_fp == NULL) {
+ outsyserr(_("Unable to run 'date' program in /bin/sh shell. "
+ "popen() failed"));
+ retcode = 10;
+ } else {
+ date_resp[0] = '\0'; /* in case fgets fails */
+ fgets(date_resp, sizeof(date_resp), date_child_fp);
+ if (debug) printf(_("response from date command = %s\n"), date_resp);
+ if (strncmp(date_resp, magic, sizeof(magic)-1) != 0) {
+ fprintf(stderr, _("The date command issued by %s returned "
+ "unexpected results.\n"
+ "The command was:\n %s\nThe response was:\n %s\n"),
+ MYNAME, date_command, date_resp);
+ retcode = 8;
+ } else {
+ int seconds_since_epoch;
+ rc = sscanf(date_resp + sizeof(magic)-1, "%d", &seconds_since_epoch);
+ if (rc < 1) {
+ fprintf(stderr, _("The date command issued by %s returned"
+ "something other than an integer where the converted"
+ "time value was expected.\n"
+ "The command was:\n %s\nThe response was:\n %s\n"),
+ MYNAME, date_command, date_resp);
+ retcode = 6;
+ } else {
+ retcode = 0;
+ *time_p = seconds_since_epoch;
+ if (debug)
+ printf(_("date string %s equates to %d seconds since 1969.\n"),
+ date_opt, (int) *time_p);
+ }
+ }
+ fclose(date_child_fp);
+ }
+ }
+ return(retcode);
+}
+
+
+
+static int
+set_system_clock(const bool hclock_valid, const time_t newtime,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the System Clock to time 'newtime'.
+
+ Also set the kernel time zone value to the value indicated by the
+ TZ environment variable and/or /usr/lib/zoneinfo/, interpreted as
+ tzset() would interpret them. Except: do not consider Daylight
+ Savings Time to be a separate component of the time zone. Include
+ any effect of DST in the basic timezone value and set the kernel
+ DST value to 0.
+
+ EXCEPT: if hclock_valid is false, just issue an error message
+ saying there is no valid time in the Hardware Clock to which to set
+ the system time.
+
+ If 'testing' is true, don't actually update anything -- just say we
+ would have.
+-----------------------------------------------------------------------------*/
+ int retcode; /* our eventual return code */
+
+ if (!hclock_valid) {
+ fprintf(stderr,_("The Hardware Clock does not contain a valid time, so "
+ "we cannot set the System Time from it.\n"));
+ retcode = 1;
+ } else {
+ struct timeval tv;
+ int rc; /* local return code */
+
+ tv.tv_sec = newtime;
+ tv.tv_usec = 0;
+
+ tzset(); /* init timezone, daylight from TZ or ...zoneinfo/localtime */
+ /* An undocumented function of tzset() is to set global variabales
+ 'timezone' and 'daylight'
+ */
+
+ if (debug) {
+ printf( _("Calling settimeofday:\n") );
+ printf( _("\ttv.tv_sec = %ld, tv.tv_usec = %ld\n"),
+ (long) tv.tv_sec, (long) tv.tv_usec );
+ printf( _("\ttz.tz_minuteswest = %ld\n"), timezone/60 - 60*daylight);
+ }
+ if (testing) {
+ printf(_("Not setting system clock because running in test mode.\n"));
+ retcode = 0;
+ } else {
+ /* For documentation of settimeofday(), in addition to its man page,
+ see kernel/time.c in the Linux source code.
+ */
+ const struct timezone tz = { timezone/60 - 60*daylight, 0 };
+ /* put daylight in minuteswest rather than dsttime,
+ since the latter is mostly ignored ... */
+ rc = settimeofday(&tv, &tz);
+ if (rc != 0) {
+ if (errno == EPERM)
+ fprintf(stderr, _("Must be superuser to set system clock.\n"));
+ else
+ outsyserr(_("settimeofday() failed"));
+ retcode = 1;
+ } else retcode = 0;
+ }
+ }
+ return(retcode);
+}
+
+
+static void
+adjust_drift_factor(struct adjtime *adjtime_p,
+ const time_t nowtime,
+ const bool hclock_valid, const time_t hclocktime ) {
+/*---------------------------------------------------------------------------
+ Update the drift factor in <*adjtime_p> to reflect the fact that the
+ Hardware Clock was calibrated to <nowtime> and before that was set
+ to <hclocktime>.
+
+ We assume that the user has been doing regular drift adjustments
+ using the drift factor in the adjtime file, so if <nowtime> and
+ <clocktime> are different, that means the adjustment factor isn't
+ quite right.
+
+ We record in the adjtime file the time at which we last calibrated
+ the clock so we can compute the drift rate each time we calibrate.
+
+ EXCEPT: if <hclock_valid> is false, assume Hardware Clock was not set
+ before to anything meaningful and regular adjustments have not been
+ done, so don't adjust the drift factor.
+
+----------------------------------------------------------------------------*/
+ if (!hclock_valid) {
+ if (debug)
+ printf(_("Not adjusting drift factor because the Hardware Clock "
+ "previously contained garbage.\n"));
+ } else if ((hclocktime - adjtime_p->last_calib_time) < 23 * 60 * 60) {
+ if (debug)
+ printf(_("Not adjusting drift factor because it has been less than a "
+ "day since the last calibration.\n"));
+ } else {
+ const float factor_adjust =
+ ((float) (nowtime - hclocktime)
+ / (hclocktime - adjtime_p->last_calib_time))
+ * 24 * 60 * 60;
+
+ if (debug)
+ printf(_("Clock drifted %d seconds in the past %d seconds "
+ "in spite of a drift factor of %f seconds/day.\n"
+ "Adjusting drift factor by %f seconds/day\n"),
+ (int) (nowtime - hclocktime),
+ (int) (hclocktime - adjtime_p->last_calib_time),
+ adjtime_p->drift_factor,
+ factor_adjust );
+
+ adjtime_p->drift_factor += factor_adjust;
+ }
+ adjtime_p->last_calib_time = nowtime;
+
+ adjtime_p->last_adj_time = nowtime;
+
+ adjtime_p->not_adjusted = 0;
+
+ adjtime_p->dirty = TRUE;
+}
+
+
+
+static void
+calculate_adjustment(
+ const float factor,
+ const time_t last_time,
+ const float not_adjusted,
+ const time_t systime,
+ int *adjustment_p,
+ float *retro_p,
+ const int debug ) {
+/*----------------------------------------------------------------------------
+ Do the drift adjustment calculation.
+
+ The way we have to set the clock, we need the adjustment in two parts:
+
+ 1) an integer number of seconds (return as *adjustment_p)
+
+ 2) a positive fraction of a second (less than 1) (return as *retro_p)
+
+ The sum of these two values is the adjustment needed. Positive means to
+ advance the clock or insert seconds. Negative means to retard the clock
+ or remove seconds.
+----------------------------------------------------------------------------*/
+ float exact_adjustment;
+
+ exact_adjustment = ((float) (systime - last_time)) * factor / (24 * 60 * 60)
+ + not_adjusted;
+ *adjustment_p = FLOOR(exact_adjustment);
+
+ *retro_p = exact_adjustment - (float) *adjustment_p;
+ if (debug) {
+ printf (_("Time since last adjustment is %d seconds\n"),
+ (int) (systime - last_time));
+ printf (_("Need to insert %d seconds and refer time back "
+ "%.6f seconds ago\n"),
+ *adjustment_p, *retro_p);
+ }
+}
+
+
+
+static void
+save_adjtime(const struct adjtime adjtime, const bool testing) {
+/*-----------------------------------------------------------------------------
+ Write the contents of the <adjtime> structure to its disk file.
+
+ But if the contents are clean (unchanged since read from disk), don't
+ bother.
+-----------------------------------------------------------------------------*/
+ char newfile[405]; /* Stuff to write to disk file */
+
+ if (adjtime.dirty) {
+ /* snprintf is not always available, but this is safe
+ as long as libc does not use more than 100 positions for %ld or %f */
+ sprintf(newfile, "%f %ld %f\n%ld\n",
+ adjtime.drift_factor,
+ (long) adjtime.last_adj_time,
+ adjtime.not_adjusted,
+ (long) adjtime.last_calib_time );
+
+ if (testing) {
+ printf(_("Not updating adjtime file because of testing mode.\n"));
+ printf(_("Would have written the following to %s:\n%s"),
+ ADJPATH, newfile);
+ } else {
+ FILE *adjfile;
+ int err = 0;
+
+ adjfile = fopen(ADJPATH, "w");
+ if (adjfile == NULL) {
+ outsyserr("Could not open file with the clock adjustment parameters "
+ "in it (" ADJPATH ") for writing");
+ err = 1;
+ } else {
+ if (fprintf(adjfile, newfile) < 0) {
+ outsyserr("Could not update file with the clock adjustment "
+ "parameters (" ADJPATH ") in it");
+ err = 1;
+ }
+ if (fclose(adjfile) < 0) {
+ outsyserr("Could not update file with the clock adjustment "
+ "parameters (" ADJPATH ") in it");
+ err = 1;
+ }
+ }
+ if (err)
+ fprintf(stderr, _("Drift adjustment parameters not updated.\n"));
+ }
+ }
+}
+
+
+
+static void
+do_adjustment(struct adjtime *adjtime_p,
+ const bool hclock_valid, const time_t hclocktime,
+ const struct timeval read_time,
+ const bool universal, const bool testing) {
+/*---------------------------------------------------------------------------
+ Do the adjustment requested, by 1) setting the Hardware Clock (if
+ necessary), and 2) updating the last-adjusted time in the adjtime
+ structure.
+
+ Do not update anything if the Hardware Clock does not currently present
+ a valid time.
+
+ arguments <factor> and <last_time> are current values from the adjtime
+ file.
+
+ <hclock_valid> means the Hardware Clock contains a valid time, and that
+ time is <hclocktime>.
+
+ <read_time> is the current system time (to be precise, it is the system
+ time at the time <hclocktime> was read, which due to computational delay
+ could be a short time ago).
+
+ <universal>: the Hardware Clock is kept in UTC.
+
+ <testing>: We are running in test mode (no updating of clock).
+
+ We do not bother to update the clock if the adjustment would be less than
+ one second. This is to avoid cumulative error and needless CPU hogging
+ (remember we use an infinite loop for some timing) if the user runs us
+ frequently.
+
+----------------------------------------------------------------------------*/
+ if (!hclock_valid) {
+ fprintf(stderr, _("The Hardware Clock does not contain a valid time, "
+ "so we cannot adjust it.\n"));
+ } else {
+ int adjustment;
+ /* Number of seconds we must insert in the Hardware Clock */
+ float retro;
+ /* Fraction of second we have to remove from clock after inserting
+ <adjustment> whole seconds.
+ */
+ calculate_adjustment(adjtime_p->drift_factor,
+ adjtime_p->last_adj_time,
+ adjtime_p->not_adjusted,
+ hclocktime,
+ &adjustment, &retro,
+ debug );
+ if (adjustment > 0 || adjustment < -1) {
+ set_hardware_clock_exact(hclocktime + adjustment,
+ time_inc(read_time, -retro),
+ universal, testing);
+ adjtime_p->last_adj_time = hclocktime + adjustment;
+ adjtime_p->not_adjusted = 0;
+ adjtime_p->dirty = TRUE;
+ } else
+ if (debug)
+ printf(_("Needed adjustment is less than one second, "
+ "so not setting clock.\n"));
+ }
+}
+
+
+
+static void
+determine_clock_access_method(const bool user_requests_ISA) {
+
+ ur = NULL;
+
+ if (user_requests_ISA)
+ ur = probe_for_cmos_clock();
+
+ if (!ur)
+ ur = probe_for_rtc_clock();
+
+ if (!ur)
+ ur = probe_for_kd_clock();
+
+ if (!ur && !user_requests_ISA)
+ ur = probe_for_cmos_clock();
+
+ if (debug) {
+ if (ur)
+ printf(_("Using %s.\n"), ur->interface_name);
+ else
+ printf(_("No usable clock interface found.\n"));
+ }
+}
+
+static void
+manipulate_clock(const bool show, const bool adjust,
+ const bool set, const time_t set_time,
+ const bool hctosys, const bool systohc,
+ const struct timeval startup_time,
+ const bool universal, const bool testing,
+ int *retcode_p
+ ) {
+/*---------------------------------------------------------------------------
+ Do all the normal work of hwclock - read, set clock, etc.
+
+ Issue output to stdout and error message to stderr where appropriate.
+
+ Return rc == 0 if everything went OK, rc != 0 if not.
+----------------------------------------------------------------------------*/
+ struct adjtime adjtime;
+ /* Contents of the adjtime file, or what they should be. */
+ int rc; /* local return code */
+ bool no_auth; /* User lacks necessary authorization to access the clock */
+
+ no_auth = ur->get_permissions();
+
+ if (no_auth) *retcode_p = 1;
+ else {
+ if (adjust || set || systohc)
+ read_adjtime(&adjtime, &rc);
+ else {
+ /* A little trick to avoid reading the file if we don't have to */
+ adjtime.dirty = FALSE;
+ rc = 0;
+ }
+ if (rc != 0) *retcode_p = 2;
+ else {
+ synchronize_to_clock_tick(retcode_p);
+ /* this takes up to 1 second */
+ if (*retcode_p == 0) {
+ struct timeval read_time;
+ /* The time at which we read the Hardware Clock */
+
+ bool hclock_valid;
+ /* The Hardware Clock gives us a valid time, or at least something
+ close enough to fool mktime().
+ */
+
+ time_t hclocktime;
+ /* The time the hardware clock had just after we
+ synchronized to its next clock tick when we started up.
+ Defined only if hclock_valid is true.
+ */
+
+ gettimeofday(&read_time, NULL);
+ read_hardware_clock(universal, &hclock_valid, &hclocktime);
+
+ if (show) {
+ display_time(hclock_valid, hclocktime,
+ time_diff(read_time, startup_time));
+ *retcode_p = 0;
+ } else if (set) {
+ set_hardware_clock_exact(set_time, startup_time,
+ universal, testing);
+ adjust_drift_factor(&adjtime, set_time, hclock_valid, hclocktime);
+ *retcode_p = 0;
+ } else if (adjust) {
+ do_adjustment(&adjtime, hclock_valid, hclocktime,
+ read_time, universal, testing);
+ *retcode_p = 0;
+ } else if (systohc) {
+ struct timeval nowtime, reftime;
+ /* We can only set_hardware_clock_exact to a whole seconds
+ time, so we set it with reference to the most recent
+ whole seconds time.
+ */
+ gettimeofday(&nowtime, NULL);
+ reftime.tv_sec = nowtime.tv_sec;
+ reftime.tv_usec = 0;
+
+ set_hardware_clock_exact((time_t) reftime.tv_sec, reftime,
+ universal, testing);
+ *retcode_p = 0;
+ adjust_drift_factor(&adjtime, (time_t) reftime.tv_sec, hclock_valid,
+ hclocktime);
+ } else if (hctosys) {
+ rc = set_system_clock(hclock_valid, hclocktime, testing);
+ if (rc != 0) {
+ printf(_("Unable to set system clock.\n"));
+ *retcode_p = 1;
+ } else *retcode_p = 0;
+ }
+ save_adjtime(adjtime, testing);
+ }
+ }
+ }
+}
+
+
+static void
+manipulate_epoch(const bool getepoch, const bool setepoch,
+ const int epoch_opt, const bool testing) {
+/*----------------------------------------------------------------------------
+ Get or set the Hardware Clock epoch value in the kernel, as appropriate.
+ <getepoch>, <setepoch>, and <epoch> are hwclock invocation options.
+
+ <epoch> == -1 if the user did not specify an "epoch" option.
+
+-----------------------------------------------------------------------------*/
+ /*
+ Maintenance note: This should work on non-Alpha machines, but the
+ evidence today (98.03.04) indicates that the kernel only keeps the
+ epoch value on Alphas. If that is ever fixed, this function should be
+ changed.
+ */
+
+#ifndef __alpha__
+ fprintf(stderr, _("The kernel keeps an epoch value for the Hardware Clock "
+ "only on an Alpha machine.\nThis copy of hwclock was built for "
+ "a machine other than Alpha\n(and thus is presumably not running "
+ "on an Alpha now). No action taken.\n"));
+#else
+ if (getepoch) {
+ unsigned long epoch;
+
+ if (get_epoch_rtc(&epoch, 0))
+ fprintf(stderr, _("Unable to get the epoch value from the kernel.\n"));
+ else
+ printf(_("Kernel is assuming an epoch value of %lu\n"), epoch);
+ } else if (setepoch) {
+ if (epoch_opt == -1)
+ fprintf(stderr, _("To set the epoch value, you must use the 'epoch' "
+ "option to tell to what value to set it.\n"));
+ else if (testing)
+ printf(_("Not setting the epoch to %d - testing only.\n"),
+ epoch_opt);
+ else if (set_epoch_rtc(epoch_opt))
+ printf(_("Unable to set the epoch value in the kernel.\n"));
+ }
+#endif
+}
+
+int
+main(int argc, char **argv, char **envp) {
+
+ struct timeval startup_time;
+ /* The time we started up, in seconds into the epoch, including fractions.
+ */
+ time_t set_time; /* Time to which user said to set Hardware Clock */
+
+ bool permitted; /* User is permitted to do the function */
+ int retcode; /* Our eventual return code */
+
+ int rc; /* local return code */
+
+ /* option_def is the control table for the option parser. These other
+ variables are the results of parsing the options and their meanings
+ are given by the option_def. The only exception is <show>, which
+ may be modified after parsing is complete to effect an implied option.
+ */
+ bool show, set, systohc, hctosys, adjust, getepoch, setepoch, version;
+ bool ARCconsole, universal, testing, directisa, Jensen, SRM, funky_toy;
+ char *date_opt;
+ int epoch_opt;
+
+ const optStruct option_def[] = {
+ { 'r', (char *) "show", OPT_FLAG, &show, 0 },
+ { 0, (char *) "set", OPT_FLAG, &set, 0 },
+ { 'w', (char *) "systohc", OPT_FLAG, &systohc, 0 },
+ { 's', (char *) "hctosys", OPT_FLAG, &hctosys, 0 },
+ { 0, (char *) "getepoch", OPT_FLAG, &getepoch, 0 },
+ { 0, (char *) "setepoch", OPT_FLAG, &setepoch, 0 },
+ { 'a', (char *) "adjust", OPT_FLAG, &adjust, 0 },
+ { 'v', (char *) "version", OPT_FLAG, &version, 0 },
+ { 0, (char *) "date", OPT_STRING, &date_opt, 0 },
+ { 0, (char *) "epoch", OPT_UINT, &epoch_opt, 0 },
+ { 'u', (char *) "utc", OPT_FLAG, &universal, 0 },
+ { 0, (char *) "badyear", OPT_FLAG, &badyear, 0 },
+ { 0, (char *) "directisa", OPT_FLAG, &directisa, 0 },
+ { 0, (char *) "test", OPT_FLAG, &testing, 0 },
+ { 'D', (char *) "debug", OPT_FLAG, &debug, 0 },
+#ifdef __alpha__
+ { 'A', (char *) "ARC", OPT_FLAG, &ARCconsole,0 },
+ { 'J', (char *) "Jensen", OPT_FLAG, &Jensen, 0 },
+ { 'S', (char *) "SRM", OPT_FLAG, &SRM, 0 },
+ { 'F', (char *) "funky-toy", OPT_FLAG, &funky_toy, 0 },
+#endif
+ { 0, (char *) NULL, OPT_END, NULL, 0 }
+ };
+ int argc_parse; /* argc, except we modify it as we parse */
+ char **argv_parse; /* argv, except we modify it as we parse */
+
+ gettimeofday(&startup_time, NULL); /* Remember what time we were invoked */
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ /* set option defaults */
+ show = set = systohc = hctosys = adjust = getepoch = setepoch =
+ version = universal = ARCconsole = SRM = funky_toy =
+ directisa = badyear = Jensen = testing = debug = FALSE;
+ date_opt = NULL;
+ epoch_opt = -1;
+
+ argc_parse = argc; argv_parse = argv;
+ optParseOptions(&argc_parse, argv_parse, option_def, 0);
+ /* Uses and sets argc_parse, argv_parse.
+ Sets show, systohc, hctosys, adjust, universal, version, testing,
+ debug, set, date_opt, getepoch, setepoch, epoch_opt
+ */
+ /* This is an ugly routine - for example, if I give an incorrect
+ option, it only says "unrecognized option" without telling
+ me what options are recognized. Rewrite with standard
+ getopt() and usage() and throw shhopt out. */
+
+ if (argc_parse - 1 > 0) {
+ fprintf(stderr, _("%s takes no non-option arguments. "
+ "You supplied %d.\n"),
+ MYNAME, argc_parse - 1);
+ exit(100);
+ }
+
+ if (show + set + systohc + hctosys + adjust +
+ getepoch + setepoch + version > 1) {
+ fprintf(stderr, _("You have specified multiple function options.\n"
+ "You can only perform one function at a time.\n"));
+ exit(100);
+ }
+
+#ifdef __alpha__
+ set_cmos_epoch(ARCconsole, SRM);
+ set_cmos_access(Jensen, funky_toy);
+#endif
+
+ if (set) {
+ rc = interpret_date_string(date_opt, &set_time); /* (time-consuming) */
+ if (rc != 0) {
+ fprintf(stderr, _("No usable set-to time. Cannot set clock.\n"));
+ exit(100);
+ }
+ }
+
+ if (!(show | set | systohc | hctosys | adjust | getepoch | setepoch |
+ version))
+ show = 1; /* default to show */
+
+
+ if (getuid() == 0) permitted = TRUE;
+ else {
+ /* program is designed to run setuid (in some situations) -- be secure! */
+ if (set || hctosys || systohc || adjust) {
+ fprintf(stderr,
+ _("Sorry, only the superuser can change the Hardware Clock.\n"));
+ permitted = FALSE;
+ } else if (setepoch) {
+ fprintf(stderr,
+ _("Sorry, only the superuser can change "
+ "the Hardware Clock epoch in the kernel.\n"));
+ permitted = FALSE;
+ } else permitted = TRUE;
+ }
+
+ if (!permitted) retcode = 2;
+ else {
+ retcode = 0;
+ if (version) {
+ printf(MYNAME " " VERSION "/%s\n",util_linux_version);
+ } else if (getepoch || setepoch) {
+ manipulate_epoch(getepoch, setepoch, epoch_opt, testing);
+ } else {
+ determine_clock_access_method(directisa);
+ if (!ur)
+ fprintf(stderr, _("Cannot access the Hardware Clock via any known "
+ "method. Use --debug option to see the details of our "
+ "search for an access method.\n"));
+ else
+ manipulate_clock(show, adjust, set, set_time, hctosys, systohc,
+ startup_time, universal, testing, &rc);
+ }
+ }
+ exit(retcode);
+}
+
+/* A single routine for greater uniformity */
+void
+outsyserr(char *msg) {
+ fprintf(stderr, _("%s: %s, errno=%d: %s.\n"),
+ progname, msg, errno, strerror(errno));
+}
+
+/****************************************************************************
+
+ History of this program:
+
+ 98.08.12 BJH Version 2.4
+
+ Don't use century byte from Hardware Clock. Add comments telling why.
+
+
+ 98.06.20 BJH Version 2.3.
+
+ Make --hctosys set the kernel timezone from TZ environment variable
+ and/or /usr/lib/zoneinfo. From Klaus Ripke (klaus@ripke.com).
+
+ 98.03.05 BJH. Version 2.2.
+
+ Add --getepoch and --setepoch.
+
+ Fix some word length things so it works on Alpha.
+
+ Make it work when /dev/rtc doesn't have the interrupt functions.
+ In this case, busywait for the top of a second instead of blocking and
+ waiting for the update complete interrupt.
+
+ Fix a bunch of bugs too numerous to mention.
+
+ 97.06.01: BJH. Version 2.1. Read and write the century byte (Byte
+ 50) of the ISA Hardware Clock when using direct ISA I/O. Problem
+ discovered by job (jei@iclnl.icl.nl).
+
+ Use the rtc clock access method in preference to the KDGHWCLK method.
+ Problem discovered by Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>.
+
+ November 1996: Version 2.0.1. Modifications by Nicolai Langfeldt
+ (janl@math.uio.no) to make it compile on linux 1.2 machines as well
+ as more recent versions of the kernel. Introduced the NO_CLOCK
+ access method and wrote feature test code to detect absense of rtc
+ headers.
+
+
+**************************************************************************
+ Maintenance notes
+
+ To compile this, you must use GNU compiler optimization (-O option)
+ in order to make the "extern inline" functions from asm/io.h (inb(),
+ etc.) compile. If you don't optimize, which means the compiler
+ will generate no inline functions, the references to these functions
+ in this program will be compiled as external references. Since you
+ probably won't be linking with any functions by these names, you will
+ have unresolved external references when you link.
+
+ The program is designed to run setuid superuser, since we need to be
+ able to do direct I/O. (More to the point: we need permission to
+ execute the iopl() system call). (However, if you use one of the
+ methods other than direct ISA I/O to access the clock, no setuid is
+ required).
+
+ Here's some info on how we must deal with the time that elapses while
+ this program runs: There are two major delays as we run:
+
+ 1) Waiting up to 1 second for a transition of the Hardware Clock so
+ we are synchronized to the Hardware Clock.
+
+ 2) Running the "date" program to interpret the value of our --date
+ option.
+
+ Reading the /etc/adjtime file is the next biggest source of delay and
+ uncertainty.
+
+ The user wants to know what time it was at the moment he invoked us,
+ not some arbitrary time later. And in setting the clock, he is
+ giving us the time at the moment we are invoked, so if we set the
+ clock some time later, we have to add some time to that.
+
+ So we check the system time as soon as we start up, then run "date"
+ and do file I/O if necessary, then wait to synchronize with a
+ Hardware Clock edge, then check the system time again to see how
+ much time we spent. We immediately read the clock then and (if
+ appropriate) report that time, and additionally, the delay we measured.
+
+ If we're setting the clock to a time given by the user, we wait some
+ more so that the total delay is an integral number of seconds, then
+ set the Hardware Clock to the time the user requested plus that
+ integral number of seconds. N.B. The Hardware Clock can only be set
+ in integral seconds.
+
+ If we're setting the clock to the system clock value, we wait for
+ the system clock to reach the top of a second, and then set the
+ Hardware Clock to the system clock's value.
+
+ Here's an interesting point about setting the Hardware Clock: On my
+ machine, when you set it, it sets to that precise time. But one can
+ imagine another clock whose update oscillator marches on a steady one
+ second period, so updating the clock between any two oscillator ticks
+ is the same as updating it right at the earlier tick. To avoid any
+ complications that might cause, we set the clock as soon as possible
+ after an oscillator tick.
+
+
+ About synchronizing to the Hardware Clock when reading the time: The
+ precision of the Hardware Clock counters themselves is one second.
+ You can't read the counters and find out that is 12:01:02.5. But if
+ you consider the location in time of the counter's ticks as part of
+ its value, then its precision is as infinite as time is continuous!
+ What I'm saying is this: To find out the _exact_ time in the
+ hardware clock, we wait until the next clock tick (the next time the
+ second counter changes) and measure how long we had to wait. We
+ then read the value of the clock counters and subtract the wait time
+ and we know precisely what time it was when we set out to query the
+ time.
+
+ hwclock uses this method, and considers the Hardware Clock to have
+ infinite precision.
+
+
+ Enhancements needed:
+
+ - When waiting for whole second boundary in set_hardware_clock_exact,
+ fail if we miss the goal by more than .1 second, as could happen if
+ we get pre-empted (by the kernel dispatcher).
+
+****************************************************************************/
+
diff --git a/clock/kd.c b/clock/kd.c
new file mode 100644
index 000000000..9ec91f005
--- /dev/null
+++ b/clock/kd.c
@@ -0,0 +1,149 @@
+/* kd.c - KDGHWCLK stuff, possibly m68k only */
+#include <unistd.h> /* for close() */
+#include <fcntl.h> /* for O_RDONLY */
+#include <sys/ioctl.h>
+
+#include "clock.h"
+#include "nls.h"
+
+static int con_fd = -1; /* opened by probe_for_kd_clock() */
+ /* never closed */
+
+/* Get defines for KDGHWCLK and KDSHWCLK (m68k) */
+#include <linux/kd.h>
+#ifndef KDGHWCLK
+#define KDGHWCLK 0x4B50 /* get hardware clock */
+#define KDSHWCLK 0x4B51 /* set hardware clock */
+struct hwclk_time {
+ unsigned sec; /* 0..59 */
+ unsigned min; /* 0..59 */
+ unsigned hour; /* 0..23 */
+ unsigned day; /* 1..31 */
+ unsigned mon; /* 0..11 */
+ unsigned year; /* 70... */
+ int wday; /* 0..6, 0 is Sunday, -1 means unknown/don't set */
+};
+#endif
+
+static int
+synchronize_to_clock_tick_kd(void) {
+/*----------------------------------------------------------------------------
+ Wait for the top of a clock tick by calling KDGHWCLK in a busy loop until
+ we see it.
+-----------------------------------------------------------------------------*/
+ int i;
+
+ /* The time when we were called (and started waiting) */
+ struct hwclk_time start_time, nowtime;
+
+ if (debug)
+ printf(_("Waiting in loop for time from KDGHWCLK to change\n"));
+
+ if (ioctl(con_fd, KDGHWCLK, &start_time) == -1) {
+ outsyserr(_("KDGHWCLK ioctl to read time failed"));
+ return 3;
+ }
+
+ i = 0;
+ do {
+ if (i++ >= 1000000) {
+ fprintf(stderr, _("Timed out waiting for time change.\n"));
+ return 2;
+ }
+ if (ioctl(con_fd, KDGHWCLK, &nowtime) == -1) {
+ outsyserr(_("KDGHWCLK ioctl to read time failed in loop"));
+ return 3;
+ }
+ } while (start_time.sec == nowtime.sec);
+
+ return 0;
+}
+
+
+static int
+read_hardware_clock_kd(struct tm *tm) {
+/*----------------------------------------------------------------------------
+ Read the hardware clock and return the current time via <tm>
+ argument. Use ioctls to /dev/tty1 on what we assume is an m68k
+ machine.
+
+ Note that we don't use /dev/console here. That might be a serial
+ console.
+-----------------------------------------------------------------------------*/
+ struct hwclk_time t;
+
+ if (ioctl(con_fd, KDGHWCLK, &t) == -1) {
+ outsyserr(_("ioctl() failed to read time from /dev/tty1"));
+ exit(5);
+ }
+
+ tm->tm_sec = t.sec;
+ tm->tm_min = t.min;
+ tm->tm_hour = t.hour;
+ tm->tm_mday = t.day;
+ tm->tm_mon = t.mon;
+ tm->tm_year = t.year;
+ tm->tm_wday = t.wday;
+ tm->tm_isdst = -1; /* Don't know if it's Daylight Savings Time */
+
+ return 0;
+}
+
+
+static int
+set_hardware_clock_kd(const struct tm *new_broken_time) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the time <new_broken_time>. Use ioctls to
+ /dev/tty1 on what we assume is an m68k machine.
+
+ Note that we don't use /dev/console here. That might be a serial console.
+----------------------------------------------------------------------------*/
+ struct hwclk_time t;
+
+ t.sec = new_broken_time->tm_sec;
+ t.min = new_broken_time->tm_min;
+ t.hour = new_broken_time->tm_hour;
+ t.day = new_broken_time->tm_mday;
+ t.mon = new_broken_time->tm_mon;
+ t.year = new_broken_time->tm_year;
+ t.wday = new_broken_time->tm_wday;
+
+ if (ioctl(con_fd, KDSHWCLK, &t ) == -1) {
+ outsyserr(_("ioctl() to open /dev/tty1 failed"));
+ exit(1);
+ }
+ return 0;
+}
+
+static int
+get_permissions_kd(void) {
+ return 0;
+}
+
+static struct clock_ops kd = {
+ "KDGHWCLK interface to m68k clock",
+ get_permissions_kd,
+ read_hardware_clock_kd,
+ set_hardware_clock_kd,
+ synchronize_to_clock_tick_kd,
+};
+
+/* return &kd if KDGHWCLK works, NULL otherwise */
+struct clock_ops *
+probe_for_kd_clock() {
+ struct clock_ops *ret = NULL;
+ struct hwclk_time t;
+
+ if (con_fd < 0)
+ con_fd = open("/dev/tty1", O_RDONLY);
+ if (con_fd >= 0) {
+ if (ioctl( con_fd, KDGHWCLK, &t ) == -1) {
+ if (errno != EINVAL)
+ outsyserr(_("KDGHWCLK ioctl failed"));
+ } else
+ ret = &kd;
+ } else {
+ outsyserr(_("Can't open /dev/tty1"));
+ }
+ return ret;
+}
diff --git a/clock/rtc.c b/clock/rtc.c
new file mode 100644
index 000000000..652388430
--- /dev/null
+++ b/clock/rtc.c
@@ -0,0 +1,389 @@
+/* rtc.c - Use /dev/rtc for clock access */
+#include <unistd.h> /* for close() */
+#include <fcntl.h> /* for O_RDONLY */
+#include <sys/ioctl.h>
+
+#include "clock.h"
+#include "nls.h"
+
+/*
+ * Get defines for rtc stuff.
+ *
+ * Getting the rtc defines is nontrivial.
+ * The obvious way is by including <linux/mc146818rtc.h>
+ * but that again includes <asm/io.h> which again includes ...
+ * and on sparc and alpha this gives compilation errors for
+ * many kernel versions. So, we give the defines ourselves here.
+ * Moreover, some Sparc person decided to be incompatible, and
+ * used a struct rtc_time different from that used in mc146818rtc.h.
+ */
+
+/* On Sparcs, there is a <asm/rtc.h> that defines different ioctls
+ (that are required on my machine). However, this include file
+ does not exist on other architectures. */
+/* One might do:
+#ifdef __sparc__
+#include <asm/rtc.h>
+#endif
+ */
+/* The following is roughly equivalent */
+struct sparc_rtc_time
+{
+ int sec; /* Seconds (0-59) */
+ int min; /* Minutes (0-59) */
+ int hour; /* Hour (0-23) */
+ int dow; /* Day of the week (1-7) */
+ int dom; /* Day of the month (1-31) */
+ int month; /* Month of year (1-12) */
+ int year; /* Year (0-99) */
+};
+
+#define RTCGET _IOR('p', 20, struct sparc_rtc_time)
+#define RTCSET _IOW('p', 21, struct sparc_rtc_time)
+
+
+/* non-sparc stuff */
+#if 0
+#include <linux/version.h>
+/* Check if the /dev/rtc interface is available in this version of
+ the system headers. 131072 is linux 2.0.0. */
+#if LINUX_VERSION_CODE >= 131072
+#include <linux/mc146818rtc.h>
+#endif
+#endif
+
+/* struct rtc_time is present since 1.3.99 */
+/* Earlier (since 1.3.89), a struct tm was used. */
+struct linux_rtc_time {
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+};
+
+/* RTC_RD_TIME etc have this definition since 1.99.9 (pre2.0-9) */
+#ifndef RTC_RD_TIME
+#define RTC_RD_TIME _IOR('p', 0x09, struct linux_rtc_time)
+#define RTC_SET_TIME _IOW('p', 0x0a, struct linux_rtc_time)
+#define RTC_UIE_ON _IO('p', 0x03) /* Update int. enable on */
+#define RTC_UIE_OFF _IO('p', 0x04) /* Update int. enable off */
+#endif
+/* RTC_EPOCH_READ and RTC_EPOCH_SET are present since 2.0.34 and 2.1.89 */
+#ifndef RTC_EPOCH_READ
+#define RTC_EPOCH_READ _IOR('p', 0x0d, unsigned long) /* Read epoch */
+#define RTC_EPOCH_SET _IOW('p', 0x0e, unsigned long) /* Set epoch */
+#endif
+
+
+static int
+do_rtc_read_ioctl(int rtc_fd, struct tm *tm) {
+ int rc;
+ char *ioctlname;
+#ifdef __sparc__
+ struct sparc_rtc_time stm;
+
+ ioctlname = "RTCGET";
+ rc = ioctl(rtc_fd, RTCGET, &stm);
+#else
+ ioctlname = "RTC_RD_TIME";
+ rc = ioctl(rtc_fd, RTC_RD_TIME, tm);
+#endif
+ if (rc == -1) {
+ perror(ioctlname);
+ fprintf(stderr, _("ioctl() to /dev/rtc to read the time failed.\n"));
+ exit(5);
+ }
+#ifdef __sparc__
+ tm->tm_sec = stm.sec;
+ tm->tm_min = stm.min;
+ tm->tm_hour = stm.hour;
+ tm->tm_mday = stm.dom;
+ tm->tm_mon = stm.month - 1;
+ tm->tm_year = stm.year - 1900;
+ tm->tm_wday = stm.dow - 1;
+ tm->tm_yday = -1; /* day in the year */
+#endif
+ tm->tm_isdst = -1; /* don't know whether it's daylight */
+ return 0;
+}
+
+
+static int
+busywait_for_rtc_clock_tick(const int rtc_fd) {
+/*----------------------------------------------------------------------------
+ Wait for the top of a clock tick by reading /dev/rtc in a busy loop until
+ we see it.
+-----------------------------------------------------------------------------*/
+ struct tm start_time;
+ /* The time when we were called (and started waiting) */
+ struct tm nowtime;
+ int i; /* local loop index */
+ int rc;
+
+ if (debug)
+ printf(_("Waiting in loop for time from /dev/rtc to change\n"));
+
+ rc = do_rtc_read_ioctl(rtc_fd, &start_time);
+ if (rc)
+ return 1;
+
+ /* Wait for change. Should be within a second, but in case something
+ weird happens, we have a limit on this loop to reduce the impact
+ of this failure.
+ */
+ for (i = 0;
+ (rc = do_rtc_read_ioctl(rtc_fd, &nowtime)) == 0
+ && start_time.tm_sec == nowtime.tm_sec;
+ i++)
+ if (i >= 1000000) {
+ fprintf(stderr, _("Timed out waiting for time change.\n"));
+ return 2;
+ }
+
+ if (rc)
+ return 3;
+ return 0;
+}
+
+
+
+static int
+synchronize_to_clock_tick_rtc(void) {
+/*----------------------------------------------------------------------------
+ Same as synchronize_to_clock_tick(), but just for /dev/rtc.
+-----------------------------------------------------------------------------*/
+int rtc_fd; /* File descriptor of /dev/rtc */
+int ret;
+
+ rtc_fd = open("/dev/rtc",O_RDONLY);
+ if (rtc_fd == -1) {
+ outsyserr(_("open() of /dev/rtc failed"));
+ ret = 1;
+ } else {
+ int rc; /* Return code from ioctl */
+ /* Turn on update interrupts (one per second) */
+#if defined(__alpha__) || defined(__sparc__)
+ /* Not all alpha kernels reject RTC_UIE_ON, but probably they should. */
+ rc = -1;
+ errno = EINVAL;
+#else
+ rc = ioctl(rtc_fd, RTC_UIE_ON, 0);
+#endif
+ if (rc == -1 && errno == EINVAL) {
+ /* This rtc device doesn't have interrupt functions. This is typical
+ on an Alpha, where the Hardware Clock interrupts are used by the
+ kernel for the system clock, so aren't at the user's disposal.
+ */
+ if (debug) printf(_("/dev/rtc does not have interrupt functions. "));
+ ret = busywait_for_rtc_clock_tick(rtc_fd);
+ } else if (rc != -1) {
+ int rc; /* return code from ioctl */
+ unsigned long dummy;
+
+ /* this blocks until the next update interrupt */
+ rc = read(rtc_fd, &dummy, sizeof(dummy));
+ if (rc == -1) {
+ outsyserr(_("read() to /dev/rtc to wait for clock tick failed"));
+ ret = 1;
+ } else {
+ ret = 0;
+ }
+ /* Turn off update interrupts */
+ rc = ioctl(rtc_fd, RTC_UIE_OFF, 0);
+ if (rc == -1)
+ outsyserr(_("ioctl() to /dev/rtc to turn off update interrupts "
+ "failed"));
+ } else {
+ outsyserr(_("ioctl() to /dev/rtc to turn on update interrupts "
+ "failed unexpectedly"));
+ ret = 1;
+ }
+ close(rtc_fd);
+ }
+ return ret;
+}
+
+
+static int
+read_hardware_clock_rtc(struct tm *tm) {
+/*----------------------------------------------------------------------------
+ Read the hardware clock and return the current time via <tm>
+ argument. Use ioctls to "rtc" device /dev/rtc.
+-----------------------------------------------------------------------------*/
+ int rtc_fd; /* File descriptor of /dev/rtc */
+
+ rtc_fd = open("/dev/rtc",O_RDONLY);
+ if (rtc_fd == -1) {
+ outsyserr(_("open() of /dev/rtc failed"));
+ exit(5);
+ }
+
+ /* Read the RTC time/date */
+ do_rtc_read_ioctl(rtc_fd, tm);
+
+ close(rtc_fd);
+ return 0;
+}
+
+
+static int
+set_hardware_clock_rtc(const struct tm *new_broken_time) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the broken down time <new_broken_time>.
+ Use ioctls to "rtc" device /dev/rtc.
+----------------------------------------------------------------------------*/
+ int rc;
+ int rtc_fd;
+
+ rtc_fd = open("/dev/rtc", O_RDONLY);
+ if (rtc_fd < 0) {
+ outsyserr(_("Unable to open /dev/rtc"));
+ exit(5);
+ } else {
+ char *ioctlname;
+#ifdef __sparc__
+ struct sparc_rtc_time stm;
+
+ stm.sec = new_broken_time->tm_sec;
+ stm.min = new_broken_time->tm_min;
+ stm.hour = new_broken_time->tm_hour;
+ stm.dom = new_broken_time->tm_mday;
+ stm.month = new_broken_time->tm_mon + 1;
+ stm.year = new_broken_time->tm_year + 1900;
+ stm.dow = new_broken_time->tm_wday + 1;
+
+ ioctlname = "RTCSET";
+ rc = ioctl(rtc_fd, RTCSET, &stm);
+#else
+ ioctlname = "RTC_SET_TIME";
+ rc = ioctl(rtc_fd, RTC_SET_TIME, new_broken_time);
+#endif
+ if (rc == -1) {
+ perror(ioctlname);
+ fprintf(stderr, _("ioctl() to /dev/rtc to set the time failed.\n"));
+ exit(5);
+ } else {
+ if (debug)
+ printf(_("ioctl(%s) was successful.\n"), ioctlname);
+ }
+ close(rtc_fd);
+ }
+ return 0;
+}
+
+
+static int
+get_permissions_rtc(void) {
+ return 0;
+}
+
+static struct clock_ops rtc = {
+ "/dev/rtc interface to clock",
+ get_permissions_rtc,
+ read_hardware_clock_rtc,
+ set_hardware_clock_rtc,
+ synchronize_to_clock_tick_rtc,
+};
+
+/* return &rtc if /dev/rtc can be opened, NULL otherwise */
+struct clock_ops *
+probe_for_rtc_clock(){
+ int rtc_fd = open("/dev/rtc", O_RDONLY);
+ if (rtc_fd > 0) {
+ close(rtc_fd);
+ return &rtc;
+ }
+ if (debug)
+ outsyserr(_("Open of /dev/rtc failed"));
+ return NULL;
+}
+
+
+
+int
+get_epoch_rtc(unsigned long *epoch_p, int silent) {
+/*----------------------------------------------------------------------------
+ Get the Hardware Clock epoch setting from the kernel.
+----------------------------------------------------------------------------*/
+ int rtc_fd;
+
+ rtc_fd = open("/dev/rtc", O_RDONLY);
+ if (rtc_fd < 0) {
+ if (!silent) {
+ if (errno == ENOENT)
+ fprintf(stderr, _(
+ "To manipulate the epoch value in the kernel, we must "
+ "access the Linux 'rtc' device driver via the device special "
+ "file /dev/rtc. This file does not exist on this system.\n"));
+ else
+ outsyserr(_("Unable to open /dev/rtc"));
+ }
+ return 1;
+ }
+
+ if (ioctl(rtc_fd, RTC_EPOCH_READ, epoch_p) == -1) {
+ if (!silent)
+ outsyserr(_("ioctl(RTC_EPOCH_READ) to /dev/rtc failed"));
+ close(rtc_fd);
+ return 1;
+ }
+
+ if (debug)
+ printf(_("we have read epoch %ld from /dev/rtc "
+ "with RTC_EPOCH_READ ioctl.\n"), *epoch_p);
+
+ close(rtc_fd);
+ return 0;
+}
+
+
+
+int
+set_epoch_rtc(unsigned long epoch) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock epoch in the kernel.
+----------------------------------------------------------------------------*/
+ int rtc_fd;
+
+ if (epoch < 1900) {
+ /* kernel would not accept this epoch value */
+ /* Hmm - bad habit, deciding not to do what the user asks
+ just because one believes that the kernel might not like it. */
+ fprintf(stderr, _("The epoch value may not be less than 1900. "
+ "You requested %ld\n"), epoch);
+ return 1;
+ }
+
+ rtc_fd = open("/dev/rtc", O_RDONLY);
+ if (rtc_fd < 0) {
+ if (errno == ENOENT)
+ fprintf(stderr, _("To manipulate the epoch value in the kernel, we must "
+ "access the Linux 'rtc' device driver via the device special "
+ "file /dev/rtc. This file does not exist on this system.\n"));
+ else
+ outsyserr(_("Unable to open /dev/rtc"));
+ return 1;
+ }
+
+ if (debug)
+ printf(_("setting epoch to %ld "
+ "with RTC_EPOCH_SET ioctl to /dev/rtc.\n"), epoch);
+
+ if (ioctl(rtc_fd, RTC_EPOCH_SET, epoch) == -1) {
+ if (errno == EINVAL)
+ fprintf(stderr, _("The kernel device driver for /dev/rtc "
+ "does not have the RTC_EPOCH_SET ioctl.\n"));
+ else
+ outsyserr(_("ioctl(RTC_EPOCH_SET) to /dev/rtc failed"));
+ close(rtc_fd);
+ return 1;
+ }
+
+ close(rtc_fd);
+ return 0;
+}
diff --git a/sys-utils/shhopt-1.1.lsm b/clock/shhopt-1.1.lsm
index a61a26969..a61a26969 100644
--- a/sys-utils/shhopt-1.1.lsm
+++ b/clock/shhopt-1.1.lsm
diff --git a/clock/shhopt.c b/clock/shhopt.c
new file mode 100644
index 000000000..e55a7293a
--- /dev/null
+++ b/clock/shhopt.c
@@ -0,0 +1,468 @@
+/* $Id: shhopt.c,v 2.2 1997/07/06 23:11:55 aebr Exp $ */
+/**************************************************************************
+ *
+ * FILE shhopt.c
+ *
+ * DESCRIPTION Functions for parsing command line arguments. Values
+ * of miscellaneous types may be stored in variables,
+ * or passed to functions as specified.
+ *
+ * REQUIREMENTS Some systems lack the ANSI C -function strtoul. If your
+ * system is one of those, you'll ned to write one yourself,
+ * or get the GNU liberty-library (from prep.ai.mit.edu).
+ *
+ * WRITTEN BY Sverre H. Huseby <sverrehu@ifi.uio.no>
+ *
+ **************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <errno.h>
+
+#include "shhopt.h"
+#include "nls.h"
+
+/**************************************************************************
+ * *
+ * P R I V A T E D A T A *
+ * *
+ **************************************************************************/
+
+static void optFatalFunc(const char *, ...);
+static void (*optFatal)(const char *format, ...) = optFatalFunc;
+
+
+
+/**************************************************************************
+ * *
+ * P R I V A T E F U N C T I O N S *
+ * *
+ **************************************************************************/
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME optFatalFunc
+ *
+ * FUNCTION Show given message and abort the program.
+ *
+ * INPUT format, ...
+ * Arguments used as with printf().
+ *
+ * RETURNS Never returns. The program is aborted.
+ *
+ */
+void optFatalFunc(const char *format, ...)
+{
+ va_list ap;
+
+ fflush(stdout);
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ exit(99);
+}
+
+
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME optStructCount
+ *
+ * FUNCTION Get number of options in a optStruct.
+ *
+ * INPUT opt array of possible options.
+ *
+ * RETURNS Number of options in the given array.
+ *
+ * DESCRIPTION Count elements in an optStruct-array. The strcture must
+ * be ended using an element of type OPT_END.
+ *
+ */
+static int optStructCount(const optStruct opt[])
+{
+ int ret = 0;
+
+ while (opt[ret].type != OPT_END)
+ ++ret;
+ return ret;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME optMatch
+ *
+ * FUNCTION Find a matching option.
+ *
+ * INPUT opt array of possible options.
+ * s string to match, without `-' or `--'.
+ * lng match long option, otherwise short.
+ *
+ * RETURNS Index to the option if found, -1 if not found.
+ *
+ * DESCRIPTION Short options are matched from the first character in
+ * the given string.
+ *
+ */
+static int optMatch(const optStruct opt[], const char *s, int lng)
+{
+ int nopt, q, matchlen = 0;
+ char *p;
+
+ nopt = optStructCount(opt);
+ if (lng) {
+ if ((p = strchr(s, '=')) != NULL)
+ matchlen = p - s;
+ else
+ matchlen = strlen(s);
+ }
+ for (q = 0; q < nopt; q++) {
+ if (lng) {
+ if (!opt[q].longName)
+ continue;
+ if (strncmp(s, opt[q].longName, matchlen) == 0)
+ return q;
+ } else {
+ if (!opt[q].shortName)
+ continue;
+ if (*s == opt[q].shortName)
+ return q;
+ }
+ }
+ return -1;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME optString
+ *
+ * FUNCTION Return a (static) string with the option name.
+ *
+ * INPUT opt the option to stringify.
+ * lng is it a long option?
+ *
+ * RETURNS Pointer to static string.
+ *
+ */
+static char *optString(const optStruct *opt, int lng)
+{
+ static char ret[31];
+
+ if (lng) {
+ strcpy(ret, "--");
+ strncpy(ret + 2, opt->longName, 28);
+ } else {
+ ret[0] = '-';
+ ret[1] = opt->shortName;
+ ret[2] = '\0';
+ }
+ return ret;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME optNeedsArgument
+ *
+ * FUNCTION Check if an option requires an argument.
+ *
+ * INPUT opt the option to check.
+ *
+ * RETURNS Boolean value.
+ *
+ */
+static int optNeedsArgument(const optStruct *opt)
+{
+ return opt->type == OPT_STRING
+ || opt->type == OPT_INT
+ || opt->type == OPT_UINT
+ || opt->type == OPT_LONG
+ || opt->type == OPT_ULONG;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME argvRemove
+ *
+ * FUNCTION Remove an entry from an argv-array.
+ *
+ * INPUT argc pointer to number of options.
+ * argv array of option-/argument-strings.
+ * i index of option to remove.
+ *
+ * OUTPUT argc new argument count.
+ * argv array with given argument removed.
+ *
+ */
+static void argvRemove(int *argc, char *argv[], int i)
+{
+ if (i >= *argc)
+ return;
+ while (i++ < *argc)
+ argv[i - 1] = argv[i];
+ --*argc;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME optExecute
+ *
+ * FUNCTION Perform the action of an option.
+ *
+ * INPUT opt array of possible options.
+ * arg argument to option, if it applies.
+ * lng was the option given as a long option?
+ *
+ * RETURNS Nothing. Aborts in case of error.
+ *
+ */
+void optExecute(const optStruct *opt, char *arg, int lng)
+{
+ switch (opt->type) {
+ case OPT_FLAG:
+ if (opt->flags & OPT_CALLFUNC)
+ ((void (*)(void)) opt->arg)();
+ else
+ *((int *) opt->arg) = 1;
+ break;
+
+ case OPT_STRING:
+ if (opt->flags & OPT_CALLFUNC)
+ ((void (*)(char *)) opt->arg)(arg);
+ else
+ *((char **) opt->arg) = arg;
+ break;
+
+ case OPT_INT:
+ case OPT_LONG: {
+ long tmp;
+ char *e;
+
+ tmp = strtol(arg, &e, 10);
+ if (*e)
+ optFatal(_("invalid number `%s'\n"), arg);
+ if (errno == ERANGE
+ || (opt->type == OPT_INT && (tmp > INT_MAX || tmp < INT_MIN)))
+ optFatal(_("number `%s' to `%s' out of range\n"),
+ arg, optString(opt, lng));
+ if (opt->type == OPT_INT) {
+ if (opt->flags & OPT_CALLFUNC)
+ ((void (*)(int)) opt->arg)((int) tmp);
+ else
+ *((int *) opt->arg) = (int) tmp;
+ } else /* OPT_LONG */ {
+ if (opt->flags & OPT_CALLFUNC)
+ ((void (*)(long)) opt->arg)(tmp);
+ else
+ *((long *) opt->arg) = tmp;
+ }
+ break;
+ }
+
+ case OPT_UINT:
+ case OPT_ULONG: {
+ unsigned long tmp;
+ char *e;
+
+ tmp = strtoul(arg, &e, 10);
+ if (*e)
+ optFatal(_("invalid number `%s'\n"), arg);
+ if (errno == ERANGE
+ || (opt->type == OPT_UINT && tmp > UINT_MAX))
+ optFatal(_("number `%s' to `%s' out of range\n"),
+ arg, optString(opt, lng));
+ if (opt->type == OPT_UINT) {
+ if (opt->flags & OPT_CALLFUNC)
+ ((void (*)(unsigned)) opt->arg)((unsigned) tmp);
+ else
+ *((unsigned *) opt->arg) = (unsigned) tmp;
+ } else /* OPT_ULONG */ {
+ if (opt->flags & OPT_CALLFUNC)
+ ((void (*)(unsigned long)) opt->arg)(tmp);
+ else
+ *((unsigned long *) opt->arg) = tmp;
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+}
+
+
+
+/**************************************************************************
+ * *
+ * P U B L I C F U N C T I O N S *
+ * *
+ **************************************************************************/
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME optSetFatalFunc
+ *
+ * FUNCTION Set function used to display error message and exit.
+ *
+ * SYNOPSIS #include "shhmsg.h"
+ * void optSetFatalFunc(void (*f)(const char *, ...));
+ *
+ * INPUT f function accepting printf()'like parameters,
+ * that _must_ abort the program.
+ *
+ */
+void optSetFatalFunc(void (*f)(const char *, ...))
+{
+ optFatal = f;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ *
+ * NAME optParseOptions
+ *
+ * FUNCTION Parse commandline options.
+ *
+ * SYNOPSIS #include "shhopt.h"
+ * void optParseOptions(int *argc, char *argv[],
+ * const optStruct opt[], int allowNegNum);
+ *
+ * INPUT argc Pointer to number of options.
+ * argv Array of option-/argument-strings.
+ * opt Array of possible options.
+ * allowNegNum
+ * a negative number is not to be taken as
+ * an option.
+ *
+ * OUTPUT argc new argument count.
+ * argv array with arguments removed.
+ *
+ * RETURNS Nothing. Aborts in case of error.
+ *
+ * DESCRIPTION This function checks each option in the argv-array
+ * against strings in the opt-array, and `executes' any
+ * matching action. Any arguments to the options are
+ * extracted and stored in the variables or passed to
+ * functions pointed to by entries in opt.
+ *
+ * Options and arguments used are removed from the argv-
+ * array, and argc is decreased accordingly.
+ *
+ * Any error leads to program abortion.
+ *
+ */
+void optParseOptions(int *argc, char *argv[],
+ const optStruct opt[], int allowNegNum)
+{
+ int ai, /* argv index. */
+ optarg, /* argv index of option argument, or -1 if none. */
+ mi, /* Match index in opt. */
+ done;
+ char *arg, /* Pointer to argument to an option. */
+ *o, /* pointer to an option character */
+ *p;
+
+ /*
+ * Loop through all arguments.
+ */
+ for (ai = 0; ai < *argc; ) {
+ /*
+ * "--" indicates that the rest of the argv-array does not
+ * contain options.
+ */
+ if (strcmp(argv[ai], "--") == 0) {
+ argvRemove(argc, argv, ai);
+ break;
+ }
+
+ if (allowNegNum && argv[ai][0] == '-' && isdigit(argv[ai][1])) {
+ ++ai;
+ continue;
+ } else if (strncmp(argv[ai], "--", 2) == 0) {
+ /* long option */
+ /* find matching option */
+ if ((mi = optMatch(opt, argv[ai] + 2, 1)) < 0)
+ optFatal(_("unrecognized option `%s'\n"), argv[ai]);
+
+ /* possibly locate the argument to this option. */
+ arg = NULL;
+ if ((p = strchr(argv[ai], '=')) != NULL)
+ arg = p + 1;
+
+ /* does this option take an argument? */
+ optarg = -1;
+ if (optNeedsArgument(&opt[mi])) {
+ /* option needs an argument. find it. */
+ if (!arg) {
+ if ((optarg = ai + 1) == *argc)
+ optFatal(_("option `%s' requires an argument\n"),
+ optString(&opt[mi], 1));
+ arg = argv[optarg];
+ }
+ } else {
+ if (arg)
+ optFatal(_("option `%s' doesn't allow an argument\n"),
+ optString(&opt[mi], 1));
+ }
+ /* perform the action of this option. */
+ optExecute(&opt[mi], arg, 1);
+ /* remove option and any argument from the argv-array. */
+ if (optarg >= 0)
+ argvRemove(argc, argv, ai);
+ argvRemove(argc, argv, ai);
+ } else if (*argv[ai] == '-') {
+ /* A dash by itself is not considered an option. */
+ if (argv[ai][1] == '\0') {
+ ++ai;
+ continue;
+ }
+ /* Short option(s) following */
+ o = argv[ai] + 1;
+ done = 0;
+ optarg = -1;
+ while (*o && !done) {
+ /* find matching option */
+ if ((mi = optMatch(opt, o, 0)) < 0)
+ optFatal(_("unrecognized option `-%c'\n"), *o);
+
+ /* does this option take an argument? */
+ optarg = -1;
+ arg = NULL;
+ if (optNeedsArgument(&opt[mi])) {
+ /* option needs an argument. find it. */
+ arg = o + 1;
+ if (!*arg) {
+ if ((optarg = ai + 1) == *argc)
+ optFatal(_("option `%s' requires an argument\n"),
+ optString(&opt[mi], 0));
+ arg = argv[optarg];
+ }
+ done = 1;
+ }
+ /* perform the action of this option. */
+ optExecute(&opt[mi], arg, 0);
+ ++o;
+ }
+ /* remove option and any argument from the argv-array. */
+ if (optarg >= 0)
+ argvRemove(argc, argv, ai);
+ argvRemove(argc, argv, ai);
+ } else {
+ /* a non-option argument */
+ ++ai;
+ }
+ }
+}
diff --git a/sys-utils/shhopt.h b/clock/shhopt.h
index ca8501ef5..ca8501ef5 100644
--- a/sys-utils/shhopt.h
+++ b/clock/shhopt.h
diff --git a/clockB/Makefile b/clockB/Makefile
new file mode 100644
index 000000000..1a2f4ecd6
--- /dev/null
+++ b/clockB/Makefile
@@ -0,0 +1,31 @@
+# Makefile -- Makefile for util-linux Linux utilities
+#
+include ../make_include
+include ../MCONFIG
+
+# Where to put man pages?
+
+MAN8= hwclock.8
+
+# Where to put binaries?
+# See the "install" rule for the links. . .
+
+SBIN= hwclock
+
+
+all: $(SBIN)
+
+
+CFLAGS = -s -Wall -Wwrite-strings -Wstrict-prototypes -Winline $(CDEBUG)
+
+hwclock: hwclock.o rtc.o directio.o kd.o util.o shhopt.o
+hwclock.o: shhopt.h
+hwclock.o rtc.o directio.o kd.o util.o: hwclock.h
+
+install: all
+ $(INSTALLDIR) $(SBINDIR) $(BINDIR) $(USRBINDIR)
+ $(INSTALLBIN) $(SBIN) $(SBINDIR)
+ $(INSTALLMAN) $(MAN8) $(MAN8DIR)
+
+clean:
+ -rm -f *.o *~ core $(SBIN)
diff --git a/clockB/directio.c b/clockB/directio.c
new file mode 100644
index 000000000..d3a77eb19
--- /dev/null
+++ b/clockB/directio.c
@@ -0,0 +1,727 @@
+/**************************************************************************
+
+ This is a component of the hwclock program.
+
+ This file contains the code for accessing the hardware clock via
+ direct I/O (kernel-style input and output operations) as opposed
+ to via a device driver.
+
+
+ MAINTENANCE NOTES
+
+ Here is some information on how the Hardware Clock works, from
+ unknown source and authority. In theory, the specification for this
+ stuff is the specification of Motorola's MC146818A clock chip, used
+ in the early ISA machines. Subsequent machines should have copied
+ its function exactly. In reality, though, the copies are inexact
+ and the MC146818A itself may fail to implement its specifications,
+ and we have just have to work with whatever is there (actually,
+ anything that Windows works with, because that's what determines
+ whether broken hardware has to be fixed!).
+
+ i386 CMOS starts out with 14 bytes clock data
+ alpha has something similar, but with details
+ depending on the machine type.
+
+ byte 0: seconds (0-59)
+ byte 2: minutes (0-59)
+ byte 4: hours (0-23 in 24hr mode,
+ 1-12 in 12hr mode, with high bit unset/set if am/pm)
+ byte 6: weekday (1-7, Sunday=1)
+ byte 7: day of the month (1-31)
+ byte 8: month (1-12)
+ byte 9: year (0-99)
+
+
+ Numbers are stored in BCD/binary if bit 2 of byte 11 is unset/set
+ The clock is in 12hr/24hr mode if bit 1 of byte 11 is unset/set
+ The clock is undefined (being updated) if bit 7 of byte 10 is set.
+ The clock is frozen (to be updated) by setting bit 7 of byte 11
+ Bit 7 of byte 14 indicates whether the CMOS clock is reliable:
+ it is 1 if RTC power has been good since this bit was last read;
+ it is 0 when the battery is dead and system power has been off.
+
+ The century situation is messy:
+
+ Usually byte 50 (0x32) gives the century (in BCD, so 0x19 or 0x20 in
+ pure binary), but IBM PS/2 has (part of) a checksum there and uses
+ byte 55 (0x37). Sometimes byte 127 (0x7f) or Bank 1, byte 0x48
+ gives the century. The original RTC will not access any century
+ byte; some modern versions will. If a modern RTC or BIOS increments
+ the century byte it may go from 0x19 to 0x20, but in some buggy
+ cases 0x1a is produced.
+
+ CMOS byte 10 (clock status register A) has 3 bitfields:
+ bit 7: 1 if data invalid, update in progress (read-only bit)
+ (this is raised 224 us before the actual update starts)
+ 6-4 select base frequency
+ 010: 32768 Hz time base (default)
+ 111: reset
+ all other combinations are manufacturer-dependent
+ (e.g.: DS1287: 010 = start oscillator, anything else = stop)
+ 3-0 rate selection bits for interrupt
+ 0000 none
+ 0001, 0010 give same frequency as 1000, 1001
+ 0011 122 microseconds (minimum, 8192 Hz)
+ .... each increase by 1 halves the frequency, doubles the period
+ 1111 500 milliseconds (maximum, 2 Hz)
+ 0110 976.562 microseconds (default 1024 Hz)
+
+ Avoid setting the RTC clock within 2 seconds of the day rollover
+ that starts a new month or enters daylight saving time.
+
+****************************************************************************/
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+
+#if defined(__i386__) || defined(__alpha__)
+#include <asm/io.h> /* for inb, outb */
+#else
+void outb(int a, int b){}
+int inb(int c){ return 0; }
+#endif
+
+#include "hwclock.h"
+
+#define BCD_TO_BIN(val) (((val)&0x0f) + ((val)>>4)*10)
+#define BIN_TO_BCD(val) ((((val)/10)<<4) + (val)%10)
+
+
+/*----------------------------------------------------------------------------
+ ATOMIC_TOP and ATOMIC_BOTTOM are wierd macros that help us to do
+ atomic operations when we do ugly low level I/O.
+
+ You put ATOMIC_TOP above some code and ATOMIC_BOTTOM below it and
+ it makes sure all the enclosed code executes without interruption
+ by some other process (and, in some cases, even the kernel).
+
+ These work fundamentally differently depending on the machine
+ architecture. In the case of a x86, it simply turns interrupts off
+ at the top and turns them back on at the bottom.
+
+ For Alpha, we can't mess with interrupts (we shouldn't for x86
+ either, but at least it tends to work!), so instead we start a loop
+ at the top and close it at the bottom. This loop repeats the
+ enclosed code until the upper 32 bits of the cycle counter are the
+ same before and after. That means there was no context change
+ while the enclosed code was executing.
+
+ For other architectures, we do nothing, and the atomicity is only
+ feigned.
+
+-----------------------------------------------------------------------------*/
+
+#if defined(__i386__)
+#define ATOMIC_TOP \
+ { \
+ const bool interrupts_were_enabled = interrupts_enabled; \
+ __asm__ volatile ("cli"); \
+ interrupts_enabled = FALSE;
+
+#define ATOMIC_BOTTOM \
+ if (interrupts_were_enabled) { \
+ __asm__ volatile ("sti"); \
+ interrupts_enabled = TRUE; \
+ } \
+ }
+#elif defined(__alpha__)
+#define ATOMIC_TOP \
+ { \
+ unsigned long ts1, ts2, n; \
+ n = 0; \
+ do { \
+ asm volatile ("rpcc %0" : "r="(ts1));
+
+#define ATOMIC_BOTTOM \
+ asm volatile ("rpcc %0" : "r="(ts2)); \
+ n++; \
+ } while ((ts1 ^ ts2) >> 32 != 0); \
+ }
+#else
+#define ATOMIC_BOTTOM
+#define ATOMIC_TOP
+#endif
+
+
+#if defined(__i386__) || defined(__alpha__)
+/* The following are just constants. Oddly, this program will not
+ compile if the inb() and outb() functions use something even
+ slightly different from these variables. This is probably at least
+ partially related to the fact that __builtin_constant_p() doesn't
+ work (is never true) in an inline function. See comment to this
+ effect in asm/io.h.
+*/
+static unsigned short clock_ctl_addr = 0x70;
+static unsigned short clock_data_addr = 0x71;
+#endif
+
+
+static bool interrupts_enabled;
+ /* Interrupts are enabled as normal. We, unfortunately, turn interrupts
+ on the machine off in some places where we do the direct ISA accesses
+ to the Hardware Clock. It is in extremely poor form for a user space
+ program to do this, but that's the price we have to pay to run on an
+ ISA machine without the rtc driver in the kernel.
+
+ Code which turns interrupts off uses this value to determine if they
+ need to be turned back on.
+ */
+
+
+void
+assume_interrupts_enabled(void) {
+ interrupts_enabled = TRUE;
+}
+
+
+
+static int
+i386_iopl(const int level) {
+/*----------------------------------------------------------------------------
+ When compiled for an Intel target, this is just the iopl() kernel call.
+ When compiled for any other target, this is a dummy function.
+
+ We do it this way in order to keep the conditional compilation stuff
+ out of the way so it doesn't mess up readability of the code.
+-----------------------------------------------------------------------------*/
+#ifdef __i386__
+ extern int iopl(int level);
+ return iopl(level);
+#else
+ return -1;
+#endif
+}
+
+
+
+bool
+uf_bit_needed(const bool user_wants_uf) {
+/*----------------------------------------------------------------------------
+ Return true iff the UIP bit doesn't work on this hardware clock, so
+ we will need to use the UF bit to synchronize with the clock (if in
+ fact we synchronize using direct I/O to the clock).
+
+ To wit, we need to use the UF bit on a DEC Alpha PC164/LX164/SX164.
+ Or, of course, if the user told us to.
+-----------------------------------------------------------------------------*/
+ bool retval;
+
+ if (user_wants_uf) retval = TRUE;
+ else {
+ if (alpha_machine && (
+ is_in_cpuinfo("system variation", "PC164") ||
+ is_in_cpuinfo("system variation", "LX164") ||
+ is_in_cpuinfo("system variation", "SX164")))
+ retval = TRUE;
+ else retval = FALSE;
+ }
+ if (debug && retval)
+ printf("We will be using the UF bit instead of the usual "
+ "UIP bit to synchronize with the clock, as required on "
+ "certain models of DEC Alpha.\n");
+
+ return retval;
+}
+
+
+
+int
+zero_year(const bool arc_opt, const bool srm_opt) {
+/*----------------------------------------------------------------------------
+ Return the year of the century (e.g. 0) to which a zero value in
+ the year register of the hardware clock applies (or at least what
+ we are to assume -- nobody can say for sure!)
+
+ 'arc_opt' and 'srm_opt' are the true iff the user specified the
+ corresponding invocation option to instruct us that the machine is an
+ Alpha with ARC or SRM console time.
+
+ A note about hardware clocks:
+
+ ISA machines are simple: the year register is a year-of-century
+ register, so the zero year is zero. On Alphas, we may see 1980 or
+ 1952 (Digital Unix?) or 1958 (ALPHA_PRE_V1_2_SRM_CONSOLE)
+-----------------------------------------------------------------------------*/
+ int retval; /* our return value */
+
+ if (arc_opt || srm_opt) {
+ /* User is telling us what epoch his machine uses. Believe it. */
+ if (arc_opt) retval = 0;
+ else retval = 0;
+ } else {
+ unsigned long kernel_epoch;
+ char *reason; /* malloc'ed */
+
+ get_epoch(&kernel_epoch, &reason);
+ if (reason == NULL) retval = kernel_epoch;
+ else {
+ /* OK, the user doesn't know and the kernel doesn't know;
+ figure it out from the machine model
+ */
+ free(reason); /* Don't care about kernel's excuses */
+ /* See whether we are dealing with SRM or MILO, as they have
+ different "epoch" ideas. */
+ if (is_in_cpuinfo("system serial number", "MILO")) {
+ if (debug) printf("booted from MILO\n");
+ /* See whether we are dealing with a RUFFIAN aka UX, as they
+ have REALLY different TOY (TimeOfYear) format: BCD, and not
+ an ARC-style epoch. BCD is detected dynamically, but we
+ must NOT adjust like ARC.
+ */
+ if (is_in_cpuinfo("system type", "Ruffian")) {
+ if (debug) printf("Ruffian BCD clock\n");
+ retval = 0;
+ } else {
+ if (debug) printf("Not Ruffian BCD clock\n");
+ retval = 80;
+ }
+ } else {
+ if (debug) printf("Not booted from MILO\n");
+ retval = 0;
+ }
+ }
+ }
+ return retval;
+}
+
+
+
+static inline unsigned char
+hclock_read(const unsigned char reg, const int dev_port) {
+/*---------------------------------------------------------------------------
+ Relative byte 'reg' of the Hardware Clock value.
+
+ Get this with direct CPU I/O instructions. If 'dev_port' is not -1,
+ use the /dev/port device driver (via the 'dev_port' file descriptor)
+ to do this I/O. Otherwise, use the kernel's inb()/outb() facility.
+
+ On a system without the inb()/outb() facility, if 'dev_port' is -1,
+ just return 0.
+
+ Results undefined if 'reg' is out of range.
+---------------------------------------------------------------------------*/
+ unsigned char ret;
+
+ ATOMIC_TOP
+ if (dev_port >= 0) {
+ const unsigned char v = reg | 0x80;
+ lseek(dev_port, 0x170, 0);
+ write(dev_port, &v, 1);
+ lseek(dev_port, 0x171, 0);
+ read(dev_port, &ret, 1);
+ } else {
+#if defined(__i386__) || defined(__alpha__)
+ /* & 0x7f ensures that we are not disabling NMI while we read.
+ Setting on Bit 7 here would disable NMI
+
+ Various docs suggest that one should disable NMI while
+ reading/writing CMOS data, and enable it again afterwards.
+ This would yield the sequence
+ outb (reg | 0x80, 0x70);
+ val = inb(0x71);
+ outb (0x0d, 0x70); // 0x0d: random read-only location
+ Other docs state that "any write to 0x70 should be followed
+ by an action to 0x71 or the RTC wil be left in an unknown state".
+ Most docs say that it doesn't matter at all what one does.
+ */
+ outb(reg & 0x7f, clock_ctl_addr);
+ ret = inb(clock_data_addr);
+#else
+ ret = 0;
+#endif
+ }
+ ATOMIC_BOTTOM
+ return ret;
+}
+
+
+
+static inline void
+hclock_write(unsigned char reg, unsigned char val, const int dev_port) {
+/*----------------------------------------------------------------------------
+ Set relative byte 'reg' of the Hardware Clock value to 'val'.
+ Do this with the kernel's outb() function if 'dev_port' is -1, but
+ if not, use the /dev/port device (via the 'dev_port' file descriptor),
+ which is almost the same thing.
+
+ On a non-ISA, non-Alpha machine, if 'dev_port' is -1, do nothing.
+----------------------------------------------------------------------------*/
+ if (dev_port >= 0) {
+ unsigned char v;
+ v = reg | 0x80;
+ lseek(dev_port, 0x170, 0);
+ write(dev_port, &v, 1);
+ v = (val & 0xff);
+ lseek(dev_port, 0x171, 0);
+ write(dev_port, &v, 1);
+ } else {
+#if defined(__i386__) || defined(__alpha__)
+ /* & 0x7f ensures that we are not disabling NMI while we read.
+ Setting on Bit 7 here would disable NMI
+ */
+ outb(reg & 0x7f, clock_ctl_addr);
+ outb(val, clock_data_addr);
+#endif
+ }
+}
+
+
+
+static inline int
+hardware_clock_busy(const int dev_port, const bool use_uf_bit) {
+/*----------------------------------------------------------------------------
+ Return whether the hardware clock is in the middle of an update
+ (which happens once each second).
+
+ Use the clock's UIP bit (bit 7 of Control Register A) to tell
+ unless 'use_uf_bit' is true, in which case use the UF bit (bit 4 of
+ Control Register C).
+-----------------------------------------------------------------------------*/
+ return
+ use_uf_bit ? (hclock_read(12, dev_port) & 0x10) :
+ (hclock_read(10, dev_port) & 0x80);
+}
+
+
+
+void
+synchronize_to_clock_tick_ISA(int *retcode_p, const int dev_port,
+ const bool use_uf_bit) {
+/*----------------------------------------------------------------------------
+ Same as synchronize_to_clock_tick(), but just for ISA.
+-----------------------------------------------------------------------------*/
+ int i; /* local loop index */
+
+ /* Wait for rise. Should be within a second, but in case something
+ weird happens, we have a limit on this loop to reduce the impact
+ of this failure.
+ */
+ for (i = 0;
+ !hardware_clock_busy(dev_port, use_uf_bit) && (i < 10000000);
+ i++);
+ if (i >= 10000000) *retcode_p = 1;
+ else {
+ /* Wait for fall. Should be within 2.228 ms. */
+ for (i = 0;
+ hardware_clock_busy(dev_port, use_uf_bit) && (i < 1000000);
+ i++);
+ if (i >= 10000000) *retcode_p = 1;
+ else *retcode_p = 0;
+ }
+}
+
+
+
+void
+read_hardware_clock_isa(struct tm *tm, const int dev_port,
+ int hc_zero_year) {
+/*----------------------------------------------------------------------------
+ Read the hardware clock and return the current time via <tm> argument.
+ Assume we have an ISA machine and read the clock directly with CPU I/O
+ instructions. If 'dev_port' isn't -1, use the /dev/port facility to
+ do this I/O. Otherwise, use the kernel's inb()/outb() service.
+
+ This function is not totally reliable. It takes a finite and
+ unpredictable amount of time to execute the code below. During that
+ time, the clock may change and we may even read an invalid value in
+ the middle of an update. We do a few checks to minimize this
+ possibility, but only the kernel can actually read the clock
+ properly, since it can execute code in a short and predictable
+ amount of time (by turning off interrupts).
+
+ In practice, the chance of this function returning the wrong time is
+ extremely remote.
+
+-----------------------------------------------------------------------------*/
+ bool got_time;
+ /* We've successfully read a time from the Hardware Clock */
+ int attempts;
+ /* Number of times we've tried to read the clock. This only
+ matters because we will give up (and proceed with garbage in
+ variables) rather than hang if something is broken and we are
+ never able to read the clock
+ */
+ int hclock_sec = 0, hclock_min = 0, hclock_hour = 0, hclock_wday = 0,
+ hclock_mon = 0, hclock_mday = 0, hclock_year = 0;
+ /* The values we got from the Hardware Clock's registers, assuming
+ they are in pure binary.
+ */
+
+ int status = 0; /* Hardware Clock status register, as if pure binary */
+ int adjusted_year;
+ int ampmhour;
+ int pmbit;
+
+ got_time = FALSE;
+ attempts = 0; /* initial value */
+ while (!got_time && attempts++ < 1000000) {
+ /* Bit 7 of Byte 10 of the Hardware Clock value is the Update In Progress
+ (UIP) bit, which is on while and 244 uS before the Hardware Clock
+ updates itself. It updates the counters individually, so reading
+ them during an update would produce garbage. The update takes 2mS,
+ so we could be spinning here that long waiting for this bit to turn
+ off.
+
+ Furthermore, it is pathologically possible for us to be in this
+ code so long that even if the UIP bit is not on at first, the
+ clock has changed while we were running. We check for that too,
+ and if it happens, we start over.
+ */
+
+ if ((hclock_read(10, dev_port) & 0x80) == 0) {
+ /* No clock update in progress, go ahead and read */
+
+ status = hclock_read(11, dev_port);
+
+ hclock_sec = hclock_read(0, dev_port);
+ hclock_min = hclock_read(2, dev_port);
+ hclock_hour = hclock_read(4, dev_port);
+ hclock_wday = hclock_read(6, dev_port);
+ hclock_mday = hclock_read(7, dev_port);
+ hclock_mon = hclock_read(8, dev_port);
+ hclock_year = hclock_read(9, dev_port);
+ /* Unless the clock changed while we were reading, consider this
+ a good clock read .
+ */
+ if (hclock_sec == hclock_read(0, dev_port)) got_time = TRUE;
+ /* Yes, in theory we could have been running for 60 seconds and
+ the above test wouldn't work!
+ */
+ }
+ }
+
+ if (!(status & 0x04)) {
+ /* The hardware clock is in BCD mode. This is normal. */
+ tm->tm_sec = BCD_TO_BIN(hclock_sec);
+ tm->tm_min = BCD_TO_BIN(hclock_min);
+ ampmhour = BCD_TO_BIN(hclock_hour & 0x7f);
+ pmbit = hclock_hour & 0x80;
+ tm->tm_wday = BCD_TO_BIN(hclock_wday) - 1; /* Used to be 3. Why?? */
+ tm->tm_mday = BCD_TO_BIN(hclock_mday);
+ tm->tm_mon = BCD_TO_BIN(hclock_mon) - 1;
+ adjusted_year = BCD_TO_BIN(hclock_year);
+ } else {
+ /* The hardware clock registers are in pure binary format. */
+ tm->tm_sec = hclock_sec;
+ tm->tm_min = hclock_min;
+ ampmhour = hclock_hour & 0x7f;
+ pmbit = hclock_hour & 0x80;
+ tm->tm_wday = hclock_wday - 1; /* Used to be 3. Why?? */
+ tm->tm_mday = hclock_mday;
+ tm->tm_mon = hclock_mon - 1;
+ adjusted_year = hclock_year;
+ }
+
+ if (!(status & 0x02)) {
+ /* Clock is in 12 hour (am/pm) mode. This is unusual. */
+ if (pmbit == 0x80) {
+ if (ampmhour == 12) tm->tm_hour = 12;
+ else tm->tm_hour = 12 + ampmhour;
+ } else {
+ if (ampmhour ==12) tm->tm_hour = 0;
+ else tm->tm_hour = ampmhour;
+ }
+ } else {
+ /* Clock is in 24 hour mode. This is normal. */
+ tm->tm_hour = ampmhour;
+ }
+ /* We don't use the century byte (Byte 50) of the Hardware Clock.
+ Here's why: It didn't exist in the original ISA specification,
+ so old machines don't have it, and even some new ones don't.
+ Some machines, including the IBM Valuepoint 6387-X93, use that
+ byte for something else. Some machines have the century in
+ Byte 55.
+
+ Furthermore, the Linux standard time data structure doesn't
+ allow for times beyond about 2037 and no Linux systems were
+ running before 1937. Therefore, all the century byte could tell
+ us is that the clock is wrong or this whole program is obsolete!
+
+ So we just say if the year of century is less than 37, it's the
+ 2000's, otherwise it's the 1900's.
+
+ Alpha machines (some, anyway) don't have this ambiguity
+ because they do not have a year-of-century register. We
+ pretend they do anyway, for simplicity and to avoid
+ recognizing times that can't be represented in Linux standard
+ time. So even though we already have enough information to
+ know that the clock says 2050, we will render it as 1950.
+ */
+ {
+ const int year_of_century = (adjusted_year + hc_zero_year) % 100;
+ if (year_of_century >= 37) tm->tm_year = year_of_century;
+ else tm->tm_year = year_of_century + 100;
+ }
+ tm->tm_isdst = -1; /* don't know whether it's daylight */
+}
+
+
+
+void
+set_hardware_clock_isa(const struct tm new_tm,
+ const int hc_zero_year,
+ const int dev_port,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the time (in broken down format)
+ new_tm. Use direct I/O instructions to what we assume is
+ an ISA Hardware Clock.
+
+ Iff 'dev_port' is -1, use the kernel inb()/outb() service, otherwise
+ use the /dev/port device (via file descriptor 'dev_port')
+ to do those I/O instructions.
+----------------------------------------------------------------------------*/
+ unsigned char save_control, save_freq_select;
+
+ if (testing)
+ printf("Not setting Hardware Clock because running in test mode.\n");
+ else {
+ int ampmhour;
+ /* The hour number that goes into the hardware clock, taking into
+ consideration whether the clock is in 12 or 24 hour mode
+ */
+ int pmbit;
+ /* Value to OR into the hour register as the am/pm bit */
+ const int adjusted_year =
+ (new_tm.tm_year - hc_zero_year)%100;
+ /* The number that goes in the hardware clock's year register */
+
+ int hclock_sec, hclock_min, hclock_hour, hclock_wday, hclock_mon,
+ hclock_mday, hclock_year;
+ /* The values we will put, in pure binary, in the Hardware Clock's
+ registers.
+ */
+
+ ATOMIC_TOP
+
+ save_control = hclock_read(11, dev_port);
+ /* tell the clock it's being set */
+ hclock_write(11, (save_control | 0x80), dev_port);
+ save_freq_select = hclock_read(10, dev_port);
+ /* stop and reset prescaler */
+ hclock_write (10, (save_freq_select | 0x70), dev_port);
+
+
+ if (!(save_control & 0x02)) {
+ /* Clock is in 12 hour (am/pm) mode. This is unusual. */
+ if (new_tm.tm_hour == 0) {
+ ampmhour = 12;
+ pmbit = 0x00;
+ } else if (new_tm.tm_hour < 12) {
+ ampmhour = new_tm.tm_hour;
+ pmbit = 0x00;
+ } else if (new_tm.tm_hour == 12) {
+ ampmhour = 12;
+ pmbit = 0x80;
+ } else {
+ ampmhour = new_tm.tm_hour - 12;
+ pmbit = 0x80;
+ }
+ } else {
+ /* Clock is in 24 hour mode. This is normal. */
+ ampmhour = new_tm.tm_hour;
+ pmbit = 0x00;
+ }
+
+
+ if (!(save_control & 0x04)) {
+ /* Clock's registers are in BCD. This is normal. */
+ hclock_sec = BIN_TO_BCD(new_tm.tm_sec);
+ hclock_min = BIN_TO_BCD(new_tm.tm_min);
+ hclock_hour = pmbit | BIN_TO_BCD(ampmhour);
+ hclock_wday = BIN_TO_BCD(new_tm.tm_wday + 1); /* Used to be 3. Why??*/
+ hclock_mday = BIN_TO_BCD(new_tm.tm_mday);
+ hclock_mon = BIN_TO_BCD(new_tm.tm_mon + 1);
+ hclock_year = BIN_TO_BCD(adjusted_year);
+ } else {
+ /* Clock's registers are in pure binary. This is unusual. */
+ hclock_sec = new_tm.tm_sec;
+ hclock_min = new_tm.tm_min;
+ hclock_hour = pmbit | ampmhour;
+ hclock_wday = new_tm.tm_wday + 1; /* Used to be 3. Why?? */
+ hclock_mday = new_tm.tm_mday;
+ hclock_mon = new_tm.tm_mon + 1;
+ hclock_year = adjusted_year;
+ }
+
+ hclock_write(0, hclock_sec, dev_port);
+ hclock_write(2, hclock_min, dev_port);
+ hclock_write(4, hclock_hour, dev_port);
+ hclock_write(6, hclock_wday, dev_port);
+ hclock_write(7, hclock_mday, dev_port);
+ hclock_write(8, hclock_mon, dev_port);
+ hclock_write(9, hclock_year, dev_port);
+
+ /* We don't set the century byte (usually Byte 50) because it isn't
+ always there. (see further comments in read_hardware_clock_isa).
+ In previous releases, we did.
+ */
+
+ /* The kernel sources, linux/arch/i386/kernel/time.c, have the
+ following comment:
+
+ The following flags have to be released exactly in this order,
+ otherwise the DS12887 (popular MC146818A clone with integrated
+ battery and quartz) will not reset the oscillator and will not
+ update precisely 500 ms later. You won't find this mentioned
+ in the Dallas Semiconductor data sheets, but who believes data
+ sheets anyway ... -- Markus Kuhn
+
+ Hence, they will also be done in this order here.
+ faith@cs.unc.edu, Thu Nov 9 08:26:37 1995
+ */
+
+ hclock_write (11, save_control, dev_port);
+ hclock_write (10, save_freq_select, dev_port);
+
+ ATOMIC_BOTTOM
+ }
+}
+
+
+
+void
+get_inb_outb_privilege(const enum clock_access_method clock_access,
+ bool * const no_auth_p) {
+
+ if (clock_access == ISA) {
+ const int rc = i386_iopl(3);
+ if (rc != 0) {
+ fprintf(stderr, MYNAME " is unable to get I/O port access. "
+ "I.e. iopl(3) returned nonzero return code %d.\n"
+ "This is often because the program isn't running "
+ "with superuser privilege, which it needs.\n",
+ rc);
+ *no_auth_p = TRUE;
+ } else *no_auth_p = FALSE;
+ } else *no_auth_p = FALSE;
+}
+
+
+
+void
+get_dev_port_access(const enum clock_access_method clock_access,
+ int * dev_port_p) {
+
+ if (clock_access == DEV_PORT) {
+ /* Get the /dev/port file open */
+ *dev_port_p = open("/dev/port", O_RDWR);
+ if (*dev_port_p < 0) {
+ fprintf(stderr, MYNAME "is unable to open the /dev/port file. "
+ "I.e. open() of the file failed with errno = %s (%d).\n"
+ "Run with the --debug option and check documentation "
+ "to find out why we are trying "
+ "to use /dev/port instead of some other means to access "
+ "the Hardware Clock.",
+ strerror(errno), errno);
+ }
+ } else *dev_port_p = 0;
+}
+
+
+
diff --git a/clockB/hwclock.8 b/clockB/hwclock.8
new file mode 100644
index 000000000..0a216840a
--- /dev/null
+++ b/clockB/hwclock.8
@@ -0,0 +1,599 @@
+.TH CLOCK 8 "02 March 1998"
+.SH NAME
+clock \- query and set the hardware clock (RTC)
+.SH SYNOPSIS
+.B "hwclock --show"
+.br
+.B "hwclock --set --date=newdate"
+.br
+.B "hwclock --systohc"
+.br
+.B "hwclock --hctosys"
+.br
+.B "hwclock --getepoch"
+.br
+.B "hwclock --setepoch --epoch=year"
+.br
+.B "hwclock --adjust"
+.br
+.B "hwclock --version"
+.PP
+other options:
+.PP
+.B "--utc --localtime --directisa --test --debug"
+.PP
+and arcane options for DEC Alpha:
+.PP
+.B "--arc --jensen --srm --funky-toy"
+.PP
+Minimum unique abbreviations of all options are acceptable.
+.PP
+Also, equivalent options -r, -w, -s, -a, -v, -u, -D, -A, -J, -S, and -F
+are accepted for compatibility with the program "clock".
+
+.SH DESCRIPTION
+.I hwclock
+is a tool for accessing the Hardware Clock. You can display the
+current time, set the Hardware Clock to a specified time, set the
+Hardware Clock to the System Time, and set the System Time from the
+Hardware Clock.
+.PP
+You can also run
+.I hwclock
+periodically to insert or remove time from the Hardware Clock to
+compensate for systematic drift (where the clock consistently gains or
+loses time at a certain rate if left to run).
+
+.SH OPTIONS
+You need exactly one of the following options to tell
+.I hwclock
+what function to perform:
+.PP
+.TP
+.B \-\-show
+Read the Hardware Clock and print the time on Standard Output.
+The time is always in local time, even if you keep your Hardware Clock
+in Coordinated Universal Time. See the
+.B \-\-utc
+option.
+
+.TP
+.B \-\-set
+Set the Hardware Clock to the time given by the
+.B \-\-date
+option.
+.TP
+.B \-\-hctosys
+Set the System Time from the Hardware Clock.
+
+Also set the kernel's timezone value to the local timezone as indicated by
+the TZ environment variable and/or
+.IR /usr/lib/zoneinfo ,
+as
+.BR tzset (3)
+would interpret them. EXCEPT: always set the Daylight Savings Time part of
+the kernel's timezone value to 0 ("not Daylight Savings Time"). If DST
+is indicated, just add an hour to the base part.
+
+See the discussion of timezones below.
+
+This is a good option to use in one of the system startup scripts.
+.TP
+.B \-\-systohc
+Set the Hardware Clock to the current System Time.
+.TP
+.B \-\-adjust
+Add or subtract time from the Hardware Clock to account for systematic
+drift since the last time the clock was set or adjusted. See discussion
+below.
+.TP
+.B \-\-getepoch
+Print out standard output the kernel's Hardware Clock epoch value.
+This is the number of years into AD to which a zero year value in the
+Hardware Clock refers. For example, if you are using the convention
+that the year counter in your Hardware Clock contains the number of
+full years since 1952, then the kernel's Hardware Counter epoch value
+must be 1952.
+
+This epoch value is used whenever hwclock reads or sets the Hardware Clock.
+.TP
+.B \-\-setepoch
+Set the kernel's Hardware Clock epoch value to the value specified by the
+.B \-\-epoch
+option. See the
+.B \-\-getepoch
+option for details.
+.TP
+.B \-\-version
+Print the version of
+.I hwclock
+on Standard Output.
+.br
+You need the following option if you specify
+.B \-\-set
+option. Otherwise, it is ignored.
+.TP
+.B \-\-date=date_string
+Specifies the time to which to set the Hardware Clock. The value of this
+option is an argument to the
+.I date(1)
+program. For example,
+.sp
+.I hwclock --set --date="9/22/96 16:45:05"
+.sp
+The argument is in local time, even if you keep your Hardware Clock in
+Coordinated Universal time. See the
+.I \-\-utc
+option.
+
+.TP
+.B \-\-epoch=year
+Specifies the year which is the beginning of the Hardware Clock's
+epoch. I.e. the number of years into AD to which a zero value in the
+Hardware Clock's year counter refers.
+
+For example,
+.sp
+.I hwclock --setepoch --epoch=1952
+
+.PP
+The following options apply to most functions.
+.TP
+.B \-\-utc
+.TP
+.B \-\-localtime
+Indicates that the Hardware Clock is kept in Coordinated Universal
+Time or local time, respectively. It is your choice whether to keep
+your clock in UTC or local time, but nothing in the clock tells which
+you've chosen. So this option is how you give that information to
+.IR hwclock .
+
+If you specify the wrong one of these options (or specify neither and
+take a wrong default), both setting and querying of the Hardware Clock
+will be messed up.
+
+If you specify neither
+.B \-\-utc
+nor
+.B \-\-localtime
+, the default is whichever was specified the last time
+.I hwclock
+was used to set the clock (i.e. hwclock was successfully run with the
+.B \-\-set
+,
+.B \-\-systohc
+,
+or
+.B \-\-adjust
+options), as recorded in the adjtime file. If the adjtime file doesn't
+exist, the default is local time.
+
+.TP
+.B \-\-directisa
+is meaningful only on an ISA machine or an Alpha (which implements enough
+of ISA to be, roughly speaking, an ISA machine for
+.IR hwclock 's
+purposes). For other machines, it has no effect. This option tells
+.I hwclock
+to use explicit I/O instructions to access the Hardware Clock.
+Without this option,
+.I hwclock
+will try to use the /dev/rtc device (which it assumes to be driven by the
+rtc device driver). If it is unable to open the device (for read), it will
+use the explicit I/O instructions anyway.
+
+The rtc device driver was new in Linux Release 2.
+.TP
+.B \-\-badyear
+Indicates that the Hardware Clock is incapable of storing years outside
+the range 1994-1999. There is a problem in some BIOSes (almost all
+Award BIOSes made between 4/26/94 and 5/31/95) wherein they are unable
+to deal with years after 1999. If one attempts to set the year-of-century
+value to something less than 94 (or 95 in some cases), the value that
+actually gets set is 94 (or 95). Thus, if you have one of these machines,
+.I hwclock
+cannot set the year after 1999 and cannot use the value of the clock as
+the true time in the normal way.
+
+To compensate for this (without your getting a BIOS update, which would
+definitely be preferable), always use
+.B \-\-badyear
+if you have one of these machines. When
+.I hwclock
+knows it's working with a brain-damaged clock, it ignores the year part of
+the Hardware Clock value and instead tries to guess the year based on the
+last calibrated date in the adjtime file, by assuming that that date is
+within the past year. For this to work, you had better do a
+.I hwclock \-\-set
+or
+.I hwclock \-\-systohc
+at least once a year!
+
+Though
+.I hwclock
+ignores the year value when it reads the Hardware Clock, it sets the
+year value when it sets the clock. It sets it to 1995, 1996, 1997, or
+1998, whichever one has the same position in the leap year cycle as
+the true year. That way, the Hardware Clock inserts leap days where
+they belong. Again, if you let the Hardware Clock run for more than a
+year without setting it, this scheme could be defeated and you could
+end up losing a day.
+
+.I hwclock
+warns you that you probably need
+.B \-\-badyear
+whenever it finds your Hardware Clock set to 1994 or 1995.
+
+.TP
+.B \-\-srm
+.TP
+.B \-\-arc
+.TP
+.B \-\-jensen
+.TP
+.B \-\-funky\-toy
+These options all tell
+.I hwclock
+what kind of Alpha machine you have. They
+are invalid if you don't have an Alpha and shouldn't be necessary if you
+do, because
+.I hwclock
+should be able to determine by itself what it's
+running on. These options make it possible for
+.I hwclock
+to work even when
+its environment does not conform to its expectations and thus it cannot
+accurately determine what sort of system it is running on. If you think
+hwclock is incorrectly determining the system's characteristics, try
+running with the
+.B \-\-debug
+option to see what conclusions the program is
+reaching and how. If you find you need one of these options to make
+.I hwclock
+work, contact the
+.I hwclock
+maintainer to see if the program can be improved to detect your system
+automatically.
+
+.B \-\-jensen
+means you are running on a Jensen model.
+
+.B \-\-arc
+means your machine is running with ARC console time.
+
+.B \-\-srm
+means your machine is running with SRM console time.
+
+.B \-\-funky\-toy
+means that on your machine, one has to use the UF bit instead
+of the UIP bit in the Hardware Clock to detect a time transition. "Toy"
+in the option name refers to the Time Of Year facility of the machine.
+
+
+.TP
+.B \-\-test
+Do everything except actually updating the Hardware Clock or anything
+else. This is useful, especially in conjunction with
+.B \-\-debug,
+in learning about
+.I hwclock.
+.TP
+.B \-\-debug
+Display a lot of information about what
+.I hwclock
+is doing internally. Some of its function is complex and this output
+can help you understand how the program works.
+
+
+.SH NOTES
+
+
+.SH Clocks in a Linux System
+.PP
+There are two main clocks in a Linux system:
+.PP
+.B The Hardware Clock:
+This is a clock that runs independently of any control program running
+in the CPU and even when the machine is powered off.
+
+On an ISA system, this clock is specified as part of the ISA standard.
+The control program can read or set this clock to a whole second, but
+the control program can also detect the edges of the 1 second clock
+ticks, so the clock actually has virtually infinite precision.
+.PP
+This clock is commonly called the hardware clock, the real time clock,
+the RTC, the BIOS clock, and the CMOS clock. Hardware Clock, in its
+capitalized form, was coined for use by
+.I hwclock
+because all of the other names are inappropriate to the point of being
+misleading.
+.PP
+.B The System Time:
+This is the time kept by a clock inside the Linux kernel and driven by
+a timer interrupt. (On an ISA machine, the timer interrupt is part of
+the ISA standard). It has meaning only while Linux is running on the
+machine. The System Time is the number of seconds since 00:00:00
+January 1, 1970 UTC (or more succinctly, the number of seconds since
+1969). The System Time is not an integer, though. It has virtually
+infinite precision.
+.PP
+The System Time is the time that matters. The Hardware Clock's basic
+purpose in a Linux system is to keep time when Linux is not running. You
+initialize the System Time to the time from the Hardware Clock when Linux
+starts up, and then never use the Hardware Clock again. Note that in DOS,
+for which ISA was designed, the Hardware Clock is the only real time clock.
+.PP
+It is important that the System Time not have any discontinuities such as
+would happen if you used the
+.BR date (1L)
+program to set it while the system is running. You can, however, do whatever
+you want to the Hardware Clock while the system is running, and the next
+time Linux starts up, it will do so with the adjusted time from the Hardware
+Clock. You can also use the program
+.BR adjtimex (8)
+to smoothly adjust the System Time while the system runs.
+.PP
+A Linux kernel maintains a concept of a local timezone for the system.
+But don't be misled -- almost nobody cares what timezone the kernel
+thinks it is in. Instead, programs that care about the timezone
+(perhaps because they want to display a local time for you) almost
+always use a more traditional method of determining the timezone: They
+use the TZ environment variable and/or the /usr/local/timezone
+directory, as explained in the man page for tzset(3). However, some
+programs and fringe parts of the Linux kernel such as filesystems use
+the kernel timezone value. An example is the vfat filesystem. If the
+kernel timezone value is wrong, the vfat filesystem will report and
+set the wrong timestamps on files.
+.PP
+.I hwclock
+sets the kernel timezone to the value indicated by TZ and/or
+/usr/local/timezone when you set the System Time using the
+.B \-\-hctosys
+option.
+.PP
+A complication is that the timezone value actually consists of two
+parts: 1) how far from the Standard Meridian the locality is
+geographically, and 2) whether or not a Daylight Savings Time (DST)
+convention is in effect in the locality at the present time. In
+practice, the DST part of the timezone value is almost never used, so
+if the geographical part were to be set to its correct value, the
+users of the timezone value would actually compute the wrong local
+time.
+.PP
+Therefore,
+.I hwclock
+violates the definition of the kernel's timezone value and always sets
+the DST part to zero. If DST is supposed to be in effect,
+.I hwclock
+simply adds an hour to the geographical part.
+
+.SH How hwclock Accesses the Hardware Clock
+.PP
+.I hwclock
+Uses many different ways to get and set Hardware Clock values.
+The most normal way is to do I/O to the device special file /dev/rtc,
+which is presumed to be driven by the rtc device driver. However,
+this method is not always available. For one thing, the rtc driver is
+a relatively recent addition to Linux. Older systems don't have it.
+Also, though there are versions of the rtc driver that work on DEC
+Alphas, there appear to be plenty of Alphas on which the rtc driver
+does not work (a common symptom is hwclock hanging).
+.PP
+On older systems, the method of accessing the Hardware Clock depends on
+the system hardware.
+.PP
+On an ISA system,
+.I hwclock
+can directly access the "CMOS memory" registers that
+constitute the clock, by doing I/O to Ports 0x70 and 0x71. It does
+this with actual I/O instructions and consequently can only do it if
+running with superuser effective userid. (In the case of a Jensen
+Alpha, there is no way for
+.I hwclock
+to execute those I/O instructions, and so it uses instead the
+/dev/port device special file, which provides almost as low-level an
+interface to the I/O subsystem).
+
+This is a really poor method of accessing the clock, for all the
+reasons that user space programs are generally not supposed to do
+direct I/O and disable interrupts. Hwclock provides it because it is
+the only method available on ISA and Alpha systems which don't have
+working rtc device drivers available.
+
+.PP
+On an m68k system,
+.I hwclock
+can access the clock via the console driver, via the device special
+file /dev/tty1.
+.PP
+.I hwclock
+tries to use /dev/rtc. If it is compiled for a kernel that doesn't have
+that function or it is unable to open /dev/rtc,
+.I hwclock
+will fall back to another method, if available. On an ISA or Alpha
+machine, you can force
+.I hwclock
+to use the direct manipulation of the CMOS registers without even trying
+.I /dev/rtc
+by specifying the \-\-directisa option.
+
+
+.SH The Adjust Function
+.PP
+The Hardware Clock is usually not very accurate. However, much of its
+inaccuracy is completely predictable - it gains or loses the same amount
+of time every day. This is called systematic drift.
+.IR hwclock 's
+"adjust" function lets you make systematic corrections to correct the
+systematic drift.
+.PP
+It works like this:
+.I hwclock
+keeps a file,
+.I /etc/adjtime,
+that keeps some historical information. This is called the adjtime file.
+.PP
+Suppose you start with no adjtime file. You issue a
+.I hwclock \-\-set
+command to set the Hardware Clock to the true current time.
+.I Hwclock
+creates the adjtime file and records in it the current time as the
+last time the clock was calibrated.
+5 days
+later, the clock has gained 10 seconds, so you issue another
+.I hwclock \-\-set
+command to set it back 10 seconds.
+.I Hwclock
+updates the adjtime file to show the current time as the last time the
+clock was calibrated, and records 2 seconds per day as the systematic
+drift rate. 24 hours go by, and then you issue a
+.I hwclock \-\-adjust
+command.
+.I Hwclock
+consults the adjtime file and sees that the clock gains 2 seconds per
+day when left alone and that it has been left alone for exactly one
+day. So it subtracts 2 seconds from the Hardware Clock. It then
+records the current time as the last time the clock was adjusted.
+Another 24 hours goes by and you issue another
+.I hwclock \-\-adjust.
+.I Hwclock
+does the same thing: subtracts 2 seconds and updates the adjtime file
+with the current time as the last time the clock was adjusted.
+.PP
+Every time you calibrate (set) the clock (using
+.I \-\-set
+or
+.I \-\-systohc
+),
+.I hwclock
+recalculates the systematic drift rate based on how long it has been
+since the last calibration, how long it has been since the last
+adjustment, what drift rate was assumed in any intervening
+adjustments, and the amount by which the clock is presently off.
+.PP
+A small amount of error creeps in any time
+.I hwclock
+sets the clock, so it refrains from making an adjustment that would be
+less than 1 second. Later on, when you request an adjustment again,
+the accumulated drift will be more than a second and
+.I hwclock
+will do the adjustment then.
+.PP
+It is good to do a
+.I hwclock \-\-adjust
+just before the
+.I hwclock \-\-hctosys
+at system startup time, and maybe periodically while the system is
+running via cron.
+.PP
+The adjtime file, while named for its historical purpose of controlling
+adjustments only, actually contains other information for use by hwclock
+in remembering information from one invocation to the next.
+.PP
+The format of the adjtime file is, in ASCII:
+.PP
+Line 1: 3 numbers, separated by blanks: 1) systematic drift rate in
+seconds per day, floating point decimal; 2) Resulting number of
+seconds since 1969 UTC of most recent adjustment or calibration,
+decimal integer; 3) zero (for compatibility with
+.IR clock )
+as a decimal integer.
+.PP
+Line 2: 1 number: Resulting number of seconds since 1969 UTC of most
+recent calibration. Zero if there has been no calibration yet or it
+is known that any previous calibration is moot (for example, because
+the Hardware Clock has been found, since that calibration, not to
+contain a valid time). This is a decimal integer.
+.PP
+Line 3: "UTC" or "LOCAL". Tells whether the Hardware Clock is set to
+Coordinated Universal Time or local time. You can always override this
+value with options on the
+.I hwclock
+command line.
+.PP
+You can use an adjtime file that was previously used with the
+.I clock
+program with
+.I hwclock.
+
+
+.SH "Automatic Hardware Clock Synchronization By the Kernel"
+
+You should be aware of another way that the Hardware Clock is kept
+synchronized in some systems. The Linux kernel has a mode wherein it
+copies the System Time to the Hardware Clock every 11 minutes.
+This is a good mode to use when you are using something sophisticated
+like ntp to keep your System Time synchronized. (ntp is a way to keep
+your System Time synchronized either to a time server somewhere on the
+network or to a radio clock hooked up to your system. See RFC 1305).
+
+This mode (we'll call it "11 minute mode") is off until something
+turns it on. The ntp daemon xntpd is one thing that turns it on. You
+can turn it off by running anything, including
+.IR "hwclock \-\-hctosys" ,
+that sets the System Time the old fashioned way.
+
+To see if it is on or
+off, use the command
+.I adjtimex \-\-print
+and look at the value of "status". If the "64" bit of this number
+(expressed in binary) equal to 0, 11 minute mode is on. Otherwise, it
+is off.
+
+If your system runs with 11 minute mode on, don't use
+.I hwclock \-\-adjust
+or
+.IR "hwclock \-\-hctosys" .
+You'll just make a mess. It is acceptable to use a
+.I hwclock \-\-hctosys
+at startup time to get a reasonable System Time until your system is
+able to set the System Time from the external source and start 11
+minute mode.
+
+
+.SH ISA Hardware Clock Century value
+
+There is some sort of standard that defines CMOS memory Byte 50 on an ISA
+machine as an indicator of what century it is.
+.I hwclock
+does not use or set that byte because there are some machines that
+don't define the byte that way, and it really isn't necessary anyway,
+since the year-of-century does a good job of implying which century it
+is.
+
+If you have a bona fide use for a CMOS century byte, contact the
+.I hwclock
+maintainer; an option may be appropriate.
+
+Note that this section is only relevant when you are using the "direct
+ISA" method of accessing the Hardware Clock.
+
+
+
+.SH "ENVIRONMENT VARIABLES"
+.I TZ
+
+.SH FILES
+.I /etc/adjtime
+.I /usr/lib/zoneinfo/
+.I /dev/rtc
+.I /dev/port
+.I /dev/tty1
+.I /proc/cpuinfo
+
+.SH "SEE ALSO"
+.BR adjtimex (8),
+.BR date (1),
+.BR gettimeofday (2),
+.BR settimeofday (2),
+.BR crontab (1),
+.BR tzset (3)
+
+.SH AUTHORS
+Written By Bryan Henderson, September 1996 (bryanh@giraffe-data.com),
+based on work done on the
+.I clock
+program by Charles Hedrick, Rob Hooft, and Harald Koenig.
+See the source code for complete history and credits.
+
+
diff --git a/clockB/hwclock.c b/clockB/hwclock.c
new file mode 100644
index 000000000..e7f1c919b
--- /dev/null
+++ b/clockB/hwclock.c
@@ -0,0 +1,1744 @@
+/**************************************************************************
+ hwclock
+***************************************************************************
+
+ This is a program for reading and setting the Hardware Clock on an ISA
+ family computer. This is the clock that is also known as the RTC,
+ real time clock, or, unfortunately, the CMOS clock.
+
+ See man page for details.
+
+ By Bryan Henderson, 96.09.19. bryanh@giraffe-data.com
+
+ Based on work by others; see history at end of source code.
+
+**************************************************************************/
+/**************************************************************************
+ Maintenance notes
+
+ To compile this, you must use GNU compiler optimization (-O option)
+ in order to make the "extern inline" functions from asm/io.h (inb(),
+ etc.) compile. If you don't optimize, which means the compiler
+ will generate no inline functions, the references to these functions
+ in this program will be compiled as external references. Since you
+ probably won't be linking with any functions by these names, you will
+ have unresolved external references when you link.
+
+ The program is designed to run setuid superuser, since we need to be
+ able to do direct I/O. (More to the point: we need permission to
+ execute the iopl() system call). (However, if you use one of the
+ methods other than direct ISA I/O to access the clock, no setuid is
+ required).
+
+ Here's some info on how we must deal with the time that elapses while
+ this program runs: There are two major delays as we run:
+
+ 1) Waiting up to 1 second for a transition of the Hardware Clock so
+ we are synchronized to the Hardware Clock.
+
+ 2) Running the "date" program to interpret the value of our --date
+ option.
+
+ Reading the /etc/adjtime file is the next biggest source of delay and
+ uncertainty.
+
+ The user wants to know what time it was at the moment he invoked us,
+ not some arbitrary time later. And in setting the clock, he is
+ giving us the time at the moment we are invoked, so if we set the
+ clock some time later, we have to add some time to that.
+
+ So we check the system time as soon as we start up, then run "date"
+ and do file I/O if necessary, then wait to synchronize with a
+ Hardware Clock edge, then check the system time again to see how
+ much time we spent. We immediately read the clock then and (if
+ appropriate) report that time, and additionally, the delay we measured.
+
+ If we're setting the clock to a time given by the user, we wait some
+ more so that the total delay is an integral number of seconds, then
+ set the Hardware Clock to the time the user requested plus that
+ integral number of seconds. N.B. The Hardware Clock can only be set
+ in integral seconds.
+
+ If we're setting the clock to the system clock value, we wait for
+ the system clock to reach the top of a second, and then set the
+ Hardware Clock to the system clock's value.
+
+ Here's an interesting point about setting the Hardware Clock: On my
+ machine, when you set it, it sets to that precise time. But one can
+ imagine another clock whose update oscillator marches on a steady one
+ second period, so updating the clock between any two oscillator ticks
+ is the same as updating it right at the earlier tick. To avoid any
+ complications that might cause, we set the clock as soon as possible
+ after an oscillator tick.
+
+
+ About synchronizing to the Hardware Clock when reading the time: The
+ precision of the Hardware Clock counters themselves is one second.
+ You can't read the counters and find out that is 12:01:02.5. But if
+ you consider the location in time of the counter's ticks as part of
+ its value, then its precision is as infinite as time is continuous!
+ What I'm saying is this: To find out the _exact_ time in the
+ hardware clock, we wait until the next clock tick (the next time the
+ second counter changes) and measure how long we had to wait. We
+ then read the value of the clock counters and subtract the wait time
+ and we know precisely what time it was when we set out to query the
+ time.
+
+ hwclock uses this method, and considers the Hardware Clock to have
+ infinite precision.
+
+ Definition of century: In this program, a century is a 100 year
+ period in which all the years' numbers in the Gregorian calendar
+ differ only in their last two decimal digits. E.g. 1900-1999 is
+ a century. The 20th Century (1901-2000), however, is not.
+
+
+ About the unusual situation of the Jensen variety of Alpha:
+
+ Martin Ostermann writes:
+
+ The problem with the Jensen is twofold: First, it has the clock at a
+ different address. Secondly, it has a distinction beween "local" and
+ normal bus addresses. The local ones pertain to the hardware integrated
+ into the chipset, like serial/parallel ports and of course, the RTC.
+ Those need to be addressed differently. This is handled fine in the kernel,
+ and it's not a problem, since this usually gets totally optimized by the
+ compile. But the i/o routines of (g)libc lack this support so far.
+ The result of this is, that the old clock program worked only on the
+ Jensen when USE_DEV_PORT was defined, but not with the normal inb/outb
+ functions.
+
+
+
+ Enhancements needed:
+
+ - When waiting for whole second boundary in set_hardware_clock_exact,
+ fail if we miss the goal by more than .1 second, as could happen if
+ we get pre-empted (by the kernel dispatcher).
+
+****************************************************************************/
+
+#include <string.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/stat.h>
+#include "shhopt.h"
+#include "../version.h" /* Defines UTIL_LINUX, among other things */
+#include "hwclock.h"
+
+#define FLOOR(arg) ((arg >= 0 ? (int) arg : ((int) arg) - 1));
+
+/* Here the information for time adjustments is kept. */
+#define ADJPATH "/etc/adjtime"
+
+/* Note that we must define the boolean type as int because we use the
+ shhopt option processing library which, unfortunately, returns flag
+ options as integers. It is customary to define bool as char, but
+ then we would have to do a lot of conversion in order to interface
+ with shhopt.
+*/
+
+/* The following are times, in unix standard format (seconds since 1969) */
+#define START_OF_1994 757411200
+#define END_OF_1995 820396800
+
+struct adjtime {
+ /* This is information we keep in the adjtime file that tells us how
+ to do drift corrections, among other things. Elements are all
+ straight from the adjtime file, so see documentation of that file
+ for details. Exception is <dirty>, which is an indication that
+ what's in this structure is not what's in the disk file (because
+ it has been updated since read from the disk file).
+ */
+
+ bool dirty;
+ float drift_factor;
+ time_t last_adj_time;
+ float not_adjusted;
+ time_t last_calib_time;
+ /* The most recent time that we set the clock from an external
+ authority (as opposed to just doing a drift adjustment)
+ */
+ enum a_local_utc {LOCAL, UTC} local_utc;
+ /* To which time zone, local or UTC, we most recently set the
+ hardware clock.
+ */
+};
+
+
+
+
+
+bool debug;
+ /* We are running in debug mode, wherein we put a lot of information about
+ what we're doing to standard output. Because of the pervasive and yet
+ background nature of this value, this is a global variable. */
+
+
+
+/* We're going to assume that if the CPU is in the Intel x86 family,
+ this is an ISA family machine. For all practical purposes, this is
+ the case at the time of this writing, especially after we assume a
+ Linux kernel is running on it.
+ */
+const bool isa_machine =
+#ifdef __i386__
+TRUE
+#else
+FALSE;
+#endif
+;
+
+const bool alpha_machine =
+#ifdef __alpha__
+TRUE
+#else
+FALSE;
+#endif
+;
+
+
+
+static bool
+hw_clock_is_utc(const bool utc, const bool local_opt,
+ const struct adjtime adjtime) {
+/*----------------------------------------------------------------------------
+ Return true iff the hardware clock keeps Coordinated Universal Time
+ rather than local time.
+
+ 'utc' means the user told us in the invocation options that the
+ hardware clock is kept in UTC.
+-----------------------------------------------------------------------------*/
+
+ bool retval; /* our return value */
+
+ if (utc) retval = TRUE;
+ else if (local_opt) retval = FALSE;
+ else retval = (adjtime.local_utc == UTC);
+ if (debug) printf("Assuming hardware clock is kept in %s time.\n",
+ retval ? "UTC" : "LOCAL");
+ return retval;
+}
+
+
+
+static void
+read_adjtime(struct adjtime *adjtime_p, int *rc_p) {
+/*----------------------------------------------------------------------------
+ Read the adjustment parameters and other persistent variables out of
+ the /etc/adjtime file.
+
+ Return them as the adjtime structure <*adjtime_p>.
+
+ If there is no /etc/adjtime file, return defaults.
+ If values are missing from the file, return defaults for them.
+
+ return *rc_p = 0 if all OK, !=0 otherwise.
+
+ Note: The default is LOCAL rather than UTC for historical reasons.
+
+-----------------------------------------------------------------------------*/
+ FILE *adjfile;
+ int rc; /* local return code */
+ struct stat statbuf; /* We don't even use the contents of this. */
+
+ rc = stat(ADJPATH, &statbuf);
+ if (rc < 0 && errno == ENOENT) {
+ /* He doesn't have a adjtime file, so we'll use defaults. */
+ adjtime_p->drift_factor = 0;
+ adjtime_p->last_adj_time = 0;
+ adjtime_p->not_adjusted = 0;
+ adjtime_p->last_calib_time = 0;
+ adjtime_p->local_utc = LOCAL;
+
+ *rc_p = 0;
+ } else {
+ adjfile = fopen(ADJPATH, "r"); /* open file for reading */
+ if (adjfile == NULL) {
+ const int fopen_errno = errno;
+ fprintf(stderr, MYNAME " is unable to open file " ADJPATH ". "
+ "fopen() errno=%d:%s", fopen_errno, strerror(fopen_errno));
+ *rc_p = 2;
+ } else {
+ char line1[81]; /* String: first line of adjtime file */
+ char line2[81]; /* String: second line of adjtime file */
+ char line3[81]; /* String: third line of adjtime file */
+
+ line1[0] = '\0'; /* In case fgets fails */
+ fgets(line1, sizeof(line1), adjfile);
+ line2[0] = '\0'; /* In case fgets fails */
+ fgets(line2, sizeof(line2), adjfile);
+ line3[0] = '\0'; /* In case fgets fails */
+ fgets(line3, sizeof(line3), adjfile);
+
+ fclose(adjfile);
+
+ /* Set defaults in case values are missing from file */
+ adjtime_p->drift_factor = 0;
+ adjtime_p->last_adj_time = 0;
+ adjtime_p->not_adjusted = 0;
+ adjtime_p->last_calib_time = 0;
+ adjtime_p->local_utc = LOCAL;
+
+ sscanf(line1, "%f %d %f",
+ &adjtime_p->drift_factor,
+ (int *) &adjtime_p->last_adj_time,
+ &adjtime_p->not_adjusted);
+
+ sscanf(line2, "%d", (int *) &adjtime_p->last_calib_time);
+
+ {
+ char local_utc_string[sizeof(line3)];
+
+ local_utc_string[0] = '\0'; /* In case nothing in line3 */
+ sscanf(line3, "%s", local_utc_string);
+
+ *rc_p = 0; /* Initial assumption - local/utc token is valid */
+ if (strlen(local_utc_string) == 0)
+ adjtime_p->local_utc = LOCAL;
+ else if (strcmp(local_utc_string, "UTC") == 0)
+ adjtime_p->local_utc = UTC;
+ else if (strcmp(local_utc_string, "LOCAL") == 0)
+ adjtime_p->local_utc = LOCAL;
+ else {
+ fprintf(stderr, "%s: The first token of the third line of the file "
+ ADJPATH " is invalid. It must be LOCAL or UTC, indicating "
+ "to which time zone the hardware clock is set. Its "
+ "present value is '%s'.\n", MYNAME, local_utc_string);
+ *rc_p = 5;
+ }
+ }
+ }
+ adjtime_p->dirty = FALSE;
+
+ if (debug) {
+ printf("Last drift adjustment done %s (Time %d)\n",
+ ctime2(adjtime_p->last_adj_time),
+ (int) adjtime_p->last_adj_time);
+ printf("Last calibration done %s (Time %d)\n",
+ ctime2(adjtime_p->last_calib_time),
+ (int) adjtime_p->last_calib_time);
+ }
+ }
+}
+
+
+
+static void
+synchronize_to_clock_tick(enum clock_access_method clock_access,
+ const int dev_port, const bool use_uf_bit,
+ int *retcode_p) {
+/*-----------------------------------------------------------------------------
+ Wait until the moment the Hardware Clock updates to the next second,
+ so we know the exact time.
+
+ The clock only has 1 second precision, so it gives the exact time only
+ once per second.
+
+ Return *retcode_p == 0 if it worked, nonzero if it didn't.
+-----------------------------------------------------------------------------*/
+ if (debug) printf("Waiting for clock tick...\n");
+
+ switch (clock_access) {
+ case ISA: synchronize_to_clock_tick_ISA(retcode_p, -1, use_uf_bit); break;
+ case DEV_PORT: synchronize_to_clock_tick_ISA(retcode_p, dev_port,
+ use_uf_bit); break;
+ case RTC_IOCTL: synchronize_to_clock_tick_RTC(retcode_p); break;
+ case KD: synchronize_to_clock_tick_KD(retcode_p); break;
+ default:
+ fprintf(stderr, "%s: Internal error in synchronize_to_clock_tick. "
+ "Invalid value for clock_access argument: %d.\n",
+ MYNAME, clock_access);
+ *retcode_p = 1;
+ }
+ if (debug) printf("...got clock tick\n");
+ return;
+}
+
+
+static struct tm
+make_within_one_year(const struct tm base_tm, const time_t last_known_time) {
+/*----------------------------------------------------------------------------
+ Compute a time that is the same as the input base_tm, except for a
+ different year. The year shall be whatever year it takes to make the
+ output time within one year after last_known_time.
+
+ The timezone for both the input and output values is the value of
+ the TZ environment variable.
+-----------------------------------------------------------------------------*/
+ struct tm broken_last_known_time;
+ /* The input time last_known_time, in broken down format */
+ struct tm test_time;
+
+ if (debug)
+ printf("Ignoring clock year and assuming "
+ "it's within 1 year after %s\n",
+ ctime2(last_known_time));
+
+ broken_last_known_time = *localtime(&last_known_time);
+
+ test_time = base_tm;
+ test_time.tm_year = broken_last_known_time.tm_year;
+
+ if (mktime(&test_time) < last_known_time)
+ test_time.tm_year += 1;
+
+ return(test_time);
+}
+
+
+
+static void
+mktime_tz(struct tm hw_tm, const bool universal, const bool badyear,
+ const time_t last_known_time,
+ bool *valid_p, time_t *systime_p) {
+/*-----------------------------------------------------------------------------
+ Convert a time in broken down format (hours, minutes, etc.) as read
+ from the Hardware Clock into standard unix time (seconds into
+ epoch). Return it as *systime_p.
+
+ The broken down time is argument <tm>. This broken down time is
+ either in local time zone or UTC, depending on value of logical
+ argument 'universal'. True means it is in UTC.
+
+ Argument 'badyear' true means the input time is from one of those
+ machines with the Award BIOS that is incapable of storing a year
+ value less than 94 or 95, which means we can't use the year value
+ from the clock (see documentation of hwclock's --badyear option).
+ In this case, we instead determine the year by assuming that it's
+ less than a year since the time <last_known_time>.
+
+
+ If the argument contains values that do not constitute a valid time,
+ and mktime() recognizes this, return *valid_p == false and
+ *systime_p undefined. However, mktime() sometimes goes ahead and
+ computes a fictional time "as if" the input values were valid,
+ e.g. if they indicate the 31st day of April, mktime() may compute
+ the time of May 1. In such a case, we return the same fictional
+ value mktime() does as *systime_p and return *valid_p == true.
+
+-----------------------------------------------------------------------------*/
+ time_t mktime_result; /* The value returned by our mktime() call */
+ struct tm adjusted_tm;
+ /* The same as the value from our argument, except if we determine
+ the year in the argument is garbage, this value contains the year
+ computed from the ADJTIME file instead.
+ */
+ char *zone; /* Local time zone name */
+
+ /* We use the C library function mktime(), but since it only works on
+ local time zone input, we may have to fake it out by temporarily
+ changing the local time zone to UTC.
+ */
+ zone = (char *) getenv("TZ"); /* remember original time zone */
+
+ if (universal) {
+ /* Set timezone to UTC */
+ setenv("TZ", "UTC 0", TRUE);
+ /* Note: tzset() gets called implicitly by the time code, but only the
+ first time. When changing the environment variable, better call
+ tzset() explicitly.
+
+ Also: documentation for tzset() says if TZ = "", that means UTC.
+ But practice shows that that only works if tzset() hasn't already
+ been called before. So we explicitly say "UTC 0".
+ */
+ tzset();
+ }
+
+ if (badyear)
+ adjusted_tm = make_within_one_year(hw_tm, last_known_time);
+ else adjusted_tm = hw_tm;
+
+ mktime_result = mktime(&adjusted_tm);
+ if (mktime_result == -1) {
+ /* This apparently (not specified in mktime() documentation) means
+ the 'adjusted_tm' structure does not contain valid values (however, not
+ containing valid values does _not_ imply mktime() returns -1).
+ */
+ /* Note that we are assuming here that the invalidity came from the
+ hardware values and was not introduced by our adjustments!
+ */
+ *valid_p = FALSE;
+ *systime_p = 0;
+ if (debug)
+ printf("Invalid values in hardware clock: "
+ "%2d/%.2d/%.2d %.2d:%.2d:%.2d\n",
+ hw_tm.tm_year, hw_tm.tm_mon+1, hw_tm.tm_mday,
+ hw_tm.tm_hour, hw_tm.tm_min, hw_tm.tm_sec
+ );
+ } else {
+ *valid_p = TRUE;
+ *systime_p = mktime_result;
+ if (debug)
+ printf("Hw clock time : %s = %d seconds since 1969\n",
+ ctime2(*systime_p), (int) *systime_p);
+ }
+ /* now put back the original zone. */
+ if (zone) setenv("TZ", zone, TRUE);
+ else unsetenv("TZ");
+ tzset();
+}
+
+
+
+static void
+read_hardware_clock(const enum clock_access_method method,
+ const int dev_port,
+ const bool universal, const int hc_zero_year,
+ const bool badyear,
+ const time_t last_known_time,
+ bool *valid_p, time_t *systime_p) {
+/*----------------------------------------------------------------------------
+ Read the hardware clock and return the current time via *systime_p
+ argument.
+
+ If the hardware clock fails to tell us a time, return *valid_p == false
+ and undefined value as *systime_p. Otherwise *valid_p == true.
+
+ Consider the hardware clock to be set in Coordinated Universal Time
+ (UTC) iff 'universal' == true.
+
+ Consider the year value of the clock to be useless iff 'badyear' == true.
+
+ Recognize that the present time is is after 'last_known_time', which
+ information may be necessary to interpret the value of some hardware
+ clocks.
+
+ Use the method indicated by 'method' argument to access the hardware clock.
+-----------------------------------------------------------------------------*/
+ struct tm tm;
+
+ switch (method) {
+ case RTC_IOCTL:
+ read_hardware_clock_rtc_ioctl(&tm);
+ break;
+ case ISA:
+ read_hardware_clock_isa(&tm, -1, hc_zero_year);
+ break;
+ case DEV_PORT:
+ read_hardware_clock_isa(&tm, dev_port, hc_zero_year);
+ break;
+ case KD:
+ read_hardware_clock_kd(&tm);
+ break;
+ default:
+ fprintf(stderr,
+ "%s: Internal error: invalid value for clock access method.\n",
+ MYNAME);
+ exit(5);
+ }
+ if (debug)
+ printf ("Time read from Hardware Clock: Y=%d M=%d D=%d %02d:%02d:%02d\n",
+ tm.tm_year, tm.tm_mon+1, tm.tm_mday,
+ tm.tm_hour, tm.tm_min, tm.tm_sec);
+ mktime_tz(tm, universal, badyear, last_known_time, valid_p, systime_p);
+}
+
+
+
+static void
+set_hardware_clock(const enum clock_access_method method,
+ const int dev_port,
+ const time_t newtime,
+ const bool universal,
+ const int hc_zero_year, const bool badyear,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the time 'newtime', in local time zone or UTC,
+ according to 'universal'.
+
+ 'badyear' true means the clock is incapable of storing the proper
+ year value, so we instead store 95, 96, 97, or 98 so that it is at
+ least in the right place in the leap year cycle (and will remain so
+ for at least the next year).
+
+ Use the method indicated by the 'method' argument.
+----------------------------------------------------------------------------*/
+ struct tm new_broken_time;
+ /* Time to which we will set Hardware Clock, in broken down format, in
+ the time zone of caller's choice
+ */
+
+ if (universal) new_broken_time = *gmtime(&newtime);
+ else new_broken_time = *localtime(&newtime);
+
+ /* If the clock is incapable of storing the true year value, change
+ the year to a fictional stand-in year as described in the prolog.
+ */
+ if (badyear)
+ new_broken_time.tm_year = 95 + ((new_broken_time.tm_year + 1) % 4);
+
+ if (debug)
+ printf("Setting Hardware Clock to %.2d:%.2d:%.2d "
+ "= %d seconds since 1969\n",
+ new_broken_time.tm_hour, new_broken_time.tm_min,
+ new_broken_time.tm_sec, (int) newtime);
+
+ switch (method) {
+ case RTC_IOCTL:
+ set_hardware_clock_rtc_ioctl(new_broken_time, testing);
+ break;
+ case ISA:
+ set_hardware_clock_isa(new_broken_time, hc_zero_year, -1, testing);
+ break;
+ case DEV_PORT:
+ set_hardware_clock_isa(new_broken_time, hc_zero_year, dev_port, testing);
+ break;
+ case KD:
+ set_hardware_clock_kd(new_broken_time, testing);
+ break;
+ default:
+ fprintf(stderr,
+ "%s: Internal error: invalid value for clock access method.\n",
+ MYNAME);
+ exit(5);
+ }
+}
+
+
+
+static void
+set_hardware_clock_exact(const time_t settime,
+ const struct timeval ref_time,
+ const enum clock_access_method clock_access,
+ const int dev_port,
+ const bool universal,
+ const int hc_zero_year,
+ const bool badyear,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the time 'settime', in local time zone or UTC,
+ according to 'universal'.
+
+ But iff 'badyear', use a fictional year as appropriate for the --badyear
+ option.
+
+ But correct 'settime' and wait for a fraction of a second so that
+ 'settime' is the value of the Hardware Clock as of system time
+ 'ref_time', which is in the past. For example, if 'settime' is
+ 14:03:05 and 'ref_time' is 12:10:04.5 and the current system
+ time is 12:10:06.0: Wait .5 seconds (to make exactly 2 seconds since
+ 'ref_time') and then set the Hardware Clock to 14:03:07, thus
+ getting a precise and retroactive setting of the clock.
+
+ (Don't be confused by the fact that the system clock and the Hardware
+ Clock differ by two hours in the above example. That's just to remind
+ you that there are two independent time scales here).
+
+ This function ought to be able to accept set times as fractional times.
+ Idea for future enhancement.
+
+-----------------------------------------------------------------------------*/
+ time_t newtime; /* Time to which we will set Hardware Clock */
+ struct timeval now_time; /* locally used time */
+
+ gettimeofday(&now_time, NULL);
+ newtime = settime + (int) time_diff(now_time, ref_time) + 1;
+ if (debug)
+ printf("Time elapsed since reference time has been %.6f seconds.\n"
+ "Delaying further to reach the next full second.\n",
+ time_diff(now_time, ref_time));
+
+ /* Now delay some more until Hardware Clock time 'newtime' arrives */
+ do gettimeofday(&now_time, NULL);
+ while (time_diff(now_time, ref_time) < newtime - settime);
+
+ set_hardware_clock(clock_access, dev_port, newtime,
+ universal, hc_zero_year, badyear, testing);
+}
+
+
+
+static void
+display_time(const bool hclock_valid, const time_t systime,
+ const float sync_duration, const bool badyear_warn) {
+/*----------------------------------------------------------------------------
+ Put the time 'systime' on standard output in display format.
+ Except if hclock_valid == false, just tell standard output that we don't
+ know what time it is.
+
+ Include in the output the adjustment 'sync_duration'.
+
+ If the year is 1994 or 1995 and 'badyear_warn' is true, warn the
+ user that he has a brain-damaged clock and needs to use --badyear.
+ Since we didn't exist in 1994 and 1995, we know the clock isn't
+ correct.
+
+-----------------------------------------------------------------------------*/
+ if (!hclock_valid)
+ fprintf(stderr, "%s: The Hardware Clock registers contain values that are "
+ "either invalid (e.g. 50th day of month) or beyond the range "
+ "we can handle (e.g. Year 2095).\n", MYNAME);
+ else {
+ if (badyear_warn && (systime > START_OF_1994 && systime < END_OF_1995)) {
+ printf("WARNING: The Hardware Clock shows a time in 1994 "
+ "or 1995. This probably means you have a Hardware Clock "
+ "that is incapable of tracking years after 1999, and you "
+ "must use the --badyear option to make hwclock work for "
+ "you. See hwclock documentation for details.\n");
+ }
+
+ printf("%s %.6f seconds\n", ctime2(systime), -(sync_duration));
+ }
+}
+
+
+
+static int
+interpret_date_string(const char *date_opt, time_t * const time_p) {
+/*----------------------------------------------------------------------------
+ Interpret the value of the --date option, which is something like
+ "13:05:01". In fact, it can be any of the myriad ASCII strings that specify
+ a time which the "date" program can understand. The date option value in
+ question is our "dateopt" argument.
+
+ The specified time is in the local time zone.
+
+ Our output, "*time_p", is a seconds-into-epoch time.
+
+ We use the "date" program to interpret the date string. "date" must be
+ runnable by issuing the command "date" to the /bin/sh shell. That means
+ in must be in the current PATH.
+
+ If anything goes wrong (and many things can), we return return code
+ 10 and arbitrary *time_p. Otherwise, return code is 0 and *time_p
+ is valid.
+----------------------------------------------------------------------------*/
+ FILE *date_child_fp;
+ char date_resp[100];
+ const char magic[]="seconds-into-epoch=";
+ char date_command[100];
+ int retcode; /* our eventual return code */
+ int rc; /* local return code */
+
+ if (date_opt == NULL) {
+ fprintf(stderr, "%s: No --date option specified.\n", MYNAME);
+ retcode = 14;
+ } else if (strchr(date_opt, '"') != NULL) {
+ /* Quotation marks in date_opt would ruin the date command we construct.
+ */
+ fprintf(stderr, "%s: The value of the --date option is not a valid date.\n"
+ "In particular, it contains quotation marks.\n", MYNAME);
+ retcode = 12;
+ } else {
+ sprintf(date_command, "date --date=\"%s\" +seconds-into-epoch=%%s",
+ date_opt);
+ if (debug) printf("Issuing date command: %s\n", date_command);
+
+ date_child_fp = popen(date_command, "r");
+ if (date_child_fp == NULL) {
+ fprintf(stderr, "%s: Unable to run 'date' program in /bin/sh shell. "
+ "popen() failed with errno=%s (%d)\n",
+ MYNAME, strerror(errno), errno);
+ retcode = 10;
+ } else {
+ date_resp[0] = '\0'; /* in case fgets fails */
+ fgets(date_resp, sizeof(date_resp), date_child_fp);
+ if (debug) printf("response from date command = %s\n", date_resp);
+ if (strncmp(date_resp, magic, sizeof(magic)-1) != 0) {
+ fprintf(stderr, "%s: The date command issued by " MYNAME " returned "
+ "unexpected results.\n"
+ "The command was:\n %s\nThe response was:\n %s\n",
+ MYNAME, date_command, date_resp);
+ retcode = 8;
+ } else {
+ int seconds_since_epoch;
+ rc = sscanf(date_resp + sizeof(magic)-1, "%d", &seconds_since_epoch);
+ if (rc < 1) {
+ fprintf(stderr, "%s: The date command issued by " MYNAME " returned"
+ "something other than an integer where the converted"
+ "time value was expected.\n"
+ "The command was:\n %s\nThe response was:\n %s\n",
+ MYNAME, date_command, date_resp);
+ retcode = 6;
+ } else {
+ retcode = 0;
+ *time_p = seconds_since_epoch;
+ if (debug)
+ printf("date string %s equates to %d seconds since 1969.\n",
+ date_opt, (int) *time_p);
+ }
+ }
+ fclose(date_child_fp);
+ }
+ }
+ return(retcode);
+}
+
+
+
+static int
+set_system_clock(const bool hclock_valid, const time_t newtime,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the System Clock to time 'newtime'.
+
+ Also set the kernel time zone value to the value indicated by the
+ TZ environment variable and/or /usr/lib/zoneinfo/, interpreted as
+ tzset() would interpret them. Except: do not consider Daylight
+ Savings Time to be a separate component of the time zone. Include
+ any effect of DST in the basic timezone value and set the kernel
+ DST value to 0.
+
+ EXCEPT: if hclock_valid is false, just issue an error message
+ saying there is no valid time in the Hardware Clock to which to set
+ the system time.
+
+ If 'testing' is true, don't actually update anything -- just say we
+ would have.
+-----------------------------------------------------------------------------*/
+ int retcode; /* our eventual return code */
+
+ if (!hclock_valid) {
+ fprintf(stderr, "%s: The Hardware Clock does not contain a valid time, so "
+ "we cannot set the System Time from it.\n", MYNAME);
+ retcode = 1;
+ } else {
+ struct timeval tv;
+ int rc; /* local return code */
+
+ tv.tv_sec = newtime;
+ tv.tv_usec = 0;
+
+ tzset(); /* init timezone, daylight from TZ or ...zoneinfo/localtime */
+ /* An undocumented function of tzset() is to set global variabales
+ 'timezone' and 'daylight'
+ */
+
+ if (debug) {
+ printf( "Calling settimeofday:\n" );
+ /* Note: tv_sec and tv_usec are declared variously on different
+ systems: int, long, time_t. Casting to long below makes it
+ compile everywhere.
+ */
+ printf( "\ttv.tv_sec = %ld, tv.tv_usec = %ld\n",
+ (long) tv.tv_sec, (long) tv.tv_usec );
+ }
+ if (testing) {
+ printf("Not setting system clock because running in test mode.\n");
+ retcode = 0;
+ } else {
+ /* For documentation of settimeofday() see, in addition to its man page,
+ kernel/time.c in the Linux source code.
+ */
+ const struct timezone tz = { timezone/60 - 60*daylight, 0 };
+ /* put daylight in minuteswest rather than dsttime,
+ since the latter is mostly ignored ... */
+ rc = settimeofday(&tv, &tz);
+ if (rc != 0) {
+ if (errno == EPERM)
+ fprintf(stderr, "%s: Must be superuser to set system clock.\n",
+ MYNAME);
+ else
+ fprintf(stderr,
+ "%s: settimeofday() failed, errno=%s (%d)\n",
+ MYNAME, strerror(errno), errno);
+ retcode = 1;
+ } else retcode = 0;
+ }
+ }
+ return(retcode);
+}
+
+
+static void
+adjust_drift_factor(struct adjtime *adjtime_p,
+ const time_t actual_time,
+ const bool hclock_valid,
+ const struct timeval hclocktime ) {
+/*---------------------------------------------------------------------------
+ Update the drift factor and calibration parameters in '*adjtime_p'
+ to reflect the fact that at some recent instant when the actual time
+ was 'actual_time', the Hardware Clock said the time was
+ 'hclocktime', and that we have corrected the Hardware Clock
+ accordingly. Note that 'hclocktime' is a fractional time, taking
+ into consideration the Hardware Clock register contents and how long
+ those contents had been that.
+
+ We assume that the only cause of error in the Hardware Clock is
+ systematic drift and that the user has been doing regular drift
+ adjustments using the drift factor in the adjtime file. Therefore,
+ if 'actual_time' and 'hclocktime' are different, that means the drift
+ factor isn't quite right.
+
+ EXCEPT: if 'hclock_valid' is false, assume Hardware Clock was not set
+ before to anything meaningful and regular adjustments have not been
+ done, so don't adjust the drift factor.
+
+ Also, don't adjust if the error is more than 30 minutes, because that
+ kind of error probably isn't drift.
+
+----------------------------------------------------------------------------*/
+ if (!hclock_valid) {
+ if (debug)
+ printf("Not adjusting drift factor because the Hardware Clock "
+ "previously contained garbage.\n");
+ } else if (adjtime_p->last_calib_time == 0) {
+ if (debug)
+ printf("Not adjusting drift factor because there is no \n"
+ "previous calibration information (i.e. adjtime file is \n"
+ "nonexistent or has 0 in last calibration time field).\n");
+ } else if (time_diff(hclocktime, t2tv(adjtime_p->last_calib_time))
+ < 23.0 * 60.0 * 60.0) {
+ if (debug)
+ printf("Not adjusting drift factor because it has been less than a "
+ "day since the last calibration.\n");
+ } else {
+ const float sec_per_day = 24.0 * 60.0 * 60.0;
+ float atime_per_htime; /* adjusted time units per hardware time unit */
+ float adj_days; /* days since last adjustment (in hardware clock time) */
+ float cal_days; /* days since last calibration (in hardware clock time) */
+ float exp_drift; /* expected drift (sec) since last adjustment */
+ float unc_drift; /* uncorrected drift (sec) since last calibration */
+ float factor_adjust; /* amount to add to previous drift factor */
+ atime_per_htime = 1.0 + adjtime_p->drift_factor / sec_per_day;
+ adj_days = time_diff(hclocktime, t2tv(adjtime_p->last_adj_time))
+ / sec_per_day;
+ exp_drift = adj_days * adjtime_p->drift_factor + adjtime_p->not_adjusted;
+ unc_drift = time_diff(t2tv(actual_time), hclocktime) - exp_drift;
+ cal_days = ((float)(adjtime_p->last_adj_time - adjtime_p->last_calib_time)
+ + adjtime_p->not_adjusted) / (sec_per_day * atime_per_htime)
+ + adj_days;
+ factor_adjust = unc_drift / cal_days;
+
+ if (unc_drift > 30*60.0) {
+ if (debug)
+ printf("Not adjusting drift factor because we calculated the \n"
+ "uncorrected drift as %.0f seconds, which is so large that \n"
+ "it probably is not drift at all, but rather some \n"
+ "clock setting anomaly.\n\n", unc_drift);
+ } else {
+ if (debug)
+ printf("Clock drifted %.1f seconds in the past %d seconds "
+ "in spite of a drift factor of %f seconds/day.\n"
+ "Adjusting drift factor by %f seconds/day\n",
+ unc_drift,
+ (int) (actual_time - adjtime_p->last_calib_time),
+ adjtime_p->drift_factor,
+ factor_adjust );
+
+ adjtime_p->drift_factor += factor_adjust;
+ }
+ }
+ adjtime_p->last_calib_time = actual_time;
+
+ adjtime_p->last_adj_time = actual_time;
+
+ adjtime_p->not_adjusted = 0;
+
+ adjtime_p->dirty = TRUE;
+}
+
+
+
+static void
+calculate_adjustment(
+ const float factor,
+ const time_t last_time,
+ const float not_adjusted,
+ const time_t systime,
+ int *adjustment_p,
+ float *retro_p,
+ const int debug ) {
+/*----------------------------------------------------------------------------
+ Do the drift adjustment calculation.
+
+ The way we have to set the clock, we need the adjustment in two parts:
+
+ 1) an integer number of seconds (return as *adjustment_p)
+
+ 2) a positive fraction of a second (less than 1) (return as *retro_p)
+
+ The sum of these two values is the adjustment needed. Positive means to
+ advance the clock or insert seconds. Negative means to retard the clock
+ or remove seconds.
+----------------------------------------------------------------------------*/
+ float exact_adjustment;
+
+ exact_adjustment = ((float) (systime - last_time)) * factor / (24 * 60 * 60)
+ + not_adjusted;
+ *adjustment_p = FLOOR(exact_adjustment);
+
+ *retro_p = exact_adjustment - (float) *adjustment_p;
+ if (debug) {
+ printf ("Time since last adjustment is %d seconds\n",
+ (int) (systime - last_time));
+ printf ("Need to insert %d seconds and refer time back "
+ "%.6f seconds ago\n",
+ *adjustment_p, *retro_p);
+ }
+}
+
+
+
+static void
+save_adjtime(const struct adjtime adjtime, const bool testing) {
+/*-----------------------------------------------------------------------------
+ Write the contents of the <adjtime> structure to its disk file.
+
+ But if the contents are clean (unchanged since read from disk), don't
+ bother.
+-----------------------------------------------------------------------------*/
+ char newfile[506]; /* Stuff to write to disk file */
+ /* snprintf is not always available, but this is safe
+ as long as libc does not use more than 100 positions for %ld or %f
+ */
+
+ int rc; /* locally used: return code from a function */
+
+ if (adjtime.dirty) {
+ /* We'd use snprintf here, but apparently, it isn't always available. */
+ sprintf(newfile, "%f %ld %f\n%ld\n%s\n",
+ adjtime.drift_factor,
+ (long) adjtime.last_adj_time,
+ adjtime.not_adjusted,
+ (long) adjtime.last_calib_time,
+ (adjtime.local_utc == UTC) ? "UTC" : "LOCAL"
+ );
+
+ if (testing) {
+ printf("Not updating adjtime file because of testing mode.\n");
+ printf("Would have written the following to %s:\n%s",
+ ADJPATH, newfile);
+ } else {
+ FILE *adjfile;
+
+ adjfile = fopen(ADJPATH, "w");
+ if (adjfile == NULL) {
+ const int fopen_errno = errno;
+ printf("Could not open file with the clock adjustment parameters "
+ "in it (%s) for output.\n"
+ "fopen() returned errno %d: %s.\n"
+ "Drift adjustment parameters not updated.\n",
+ ADJPATH, fopen_errno, strerror(errno));
+ } else {
+ rc = fprintf(adjfile, newfile);
+ if (rc < 0) {
+ const int fprintf_errno = errno;
+ printf("Could not update file (%s) "
+ "with the clock adjustment parameters in it.\n"
+ "fprintf() returned errno %d: %s.\n"
+ "Drift adjustment parameters not updated.\n",
+ ADJPATH, fprintf_errno, strerror(errno));
+ }
+ rc = fclose(adjfile);
+ if (rc < 0) {
+ const int fclose_errno = errno;
+ printf("Could not update file (%s) "
+ "with the clock adjustment parameters in it.\n"
+ "fclose() returned errno %d: %s.\n"
+ "Drift adjustment parameters not updated.\n",
+ ADJPATH, fclose_errno, strerror(errno));
+ }
+ }
+ }
+ } else if (debug)
+ printf("Skipping update of adjtime file because nothing has changed.\n");
+}
+
+
+
+static void
+do_adjustment(struct adjtime *adjtime_p,
+ const bool hclock_valid, const time_t hclocktime,
+ const struct timeval read_time,
+ const enum clock_access_method clock_access,
+ const int dev_port, const bool universal,
+ const int hc_zero_year,
+ const bool badyear, const bool testing) {
+/*---------------------------------------------------------------------------
+ Do the adjustment requested, by 1) setting the Hardware Clock (if
+ necessary), and 2) updating the last-adjusted time in the adjtime
+ structure.
+
+ Do not update anything if the Hardware Clock does not currently present
+ a valid time.
+
+ arguments 'factor' and 'last_time' are current values from the adjtime
+ file.
+
+ 'hclock_valid' means the Hardware Clock contains a valid time, and that
+ time is 'hclocktime'.
+
+ 'read_time' is the current system time (to be precise, it is the system
+ time at the time 'hclocktime' was read, which due to computational delay
+ could be a short time ago).
+
+ 'universal': the Hardware Clock is kept in UTC.
+
+ 'badyear': the Hardware Clock is incapable of storing years outside
+ the range 1994-1999.
+
+ 'testing': We are running in test mode (no updating of clock).
+
+ We do not bother to update the clock if the adjustment would be less than
+ one second. This is to avoid cumulative error and needless CPU hogging
+ (remember we use an infinite loop for some timing) if the user runs us
+ frequently.
+
+----------------------------------------------------------------------------*/
+ if (!hclock_valid) {
+ fprintf(stderr, "%s: The Hardware Clock does not contain a valid time, "
+ "so we cannot adjust it.\n", MYNAME);
+ /* Any previous calibration had to be before the clock got hosed, so
+ wipe out the record of it so it won't be used in the future.
+ */
+ adjtime_p->last_calib_time = 0;
+ adjtime_p->last_adj_time = 0;
+ adjtime_p->not_adjusted = 0;
+ adjtime_p->dirty = TRUE;
+ } else if (adjtime_p->last_adj_time == 0) {
+ if (debug)
+ printf("Not adjusting clock because we have no information about \n"
+ "the previous calibration (i.e. the adjtime file is \n"
+ "nonexistent or contains zero in the last calibrated time \n"
+ "field).\n");
+ } else {
+ int adjustment;
+ /* Number of seconds we must insert in the Hardware Clock */
+ float retro;
+ /* Fraction of second we have to remove from clock after inserting
+ <adjustment> whole seconds.
+ */
+ calculate_adjustment(adjtime_p->drift_factor,
+ adjtime_p->last_adj_time,
+ adjtime_p->not_adjusted,
+ hclocktime,
+ &adjustment, &retro,
+ debug );
+ if (adjustment > 0 || adjustment < -1) {
+ set_hardware_clock_exact(hclocktime + adjustment,
+ time_inc(read_time, -retro),
+ clock_access, dev_port, universal,
+ hc_zero_year, badyear, testing);
+ adjtime_p->last_adj_time = hclocktime + adjustment;
+ adjtime_p->not_adjusted = 0;
+ adjtime_p->dirty = TRUE;
+ } else
+ if (debug)
+ printf("Needed adjustment is less than one second, "
+ "so not setting clock.\n");
+ }
+}
+
+
+static void
+determine_clock_access_method(const bool user_requests_ISA,
+ const bool user_says_jensen,
+ enum clock_access_method *clock_access_p) {
+/*----------------------------------------------------------------------------
+ Figure out how we're going to access the hardware clock, by seeing
+ what facilities are available, looking at invocation options, and
+ using compile-time constants.
+
+ 'user_requests_ISA' means the user explicitly asked for the ISA method,
+ so we'll use that (even if we know it will fail because the machine
+ is incapable!).
+-----------------------------------------------------------------------------*/
+ const bool jensen =
+ user_says_jensen ||
+ (alpha_machine && is_in_cpuinfo("system type", "Jensen"));
+ /* See comments at top of program for how Jensen is a special case. */
+ bool rtc_works;
+ /* The /dev/rtc method is available and seems to work on this machine */
+ bool kdghwclk_works;
+ /* The KDHWCLK method is available and seems to work on this machine. */
+
+ see_if_rtc_works(&rtc_works); /* May issue error messages */
+ see_if_kdghwclk_works(&kdghwclk_works); /* May issue error messages */
+
+ if (user_requests_ISA) *clock_access_p = ISA;
+ else if (rtc_works) *clock_access_p = RTC_IOCTL;
+ else if (kdghwclk_works) *clock_access_p = KD;
+ else if (got_kdghwclk) *clock_access_p = ISA;
+ /* I don't know on what machine the above line makes any sense, but the
+ code has always been this way. -BJH 99.03.31
+ */
+ else if (isa_machine) *clock_access_p = ISA;
+ else if (jensen) *clock_access_p = DEV_PORT;
+ else if (alpha_machine) *clock_access_p = ISA;
+ else *clock_access_p = NOCLOCK;
+ if (debug) {
+ switch (*clock_access_p) {
+ case ISA: printf("Using direct I/O instructions to ISA clock.\n"); break;
+ case KD: printf("Using KDGHWCLK interface to m68k clock.\n"); break;
+ case RTC_IOCTL: printf("Using /dev/rtc interface to clock.\n"); break;
+ case DEV_PORT: printf("Using /dev/port interface to clock.\n"); break;
+ case NOCLOCK: printf("Unable to find a usable clock access method.\n");
+ break;
+ default:
+ printf("determine_clock_access_method() returned invalid value: %d.\n",
+ *clock_access_p);
+ }
+ }
+}
+
+
+
+static void
+do_systohc(const enum clock_access_method clock_access,
+ const int dev_port,
+ const time_t hclocktime, const bool hclock_valid,
+ const struct timeval read_time,
+ const bool universal, const int hc_zero_year,
+ const bool badyear, const bool testing,
+ struct adjtime * const adjtime_p) {
+/*----------------------------------------------------------------------------
+ Perform the specifics of the hwclock --systohc function.
+-----------------------------------------------------------------------------*/
+ struct timeval nowtime, reftime;
+ /* We can only set_hardware_clock_exact to a whole seconds
+ time, so we set it with reference to the most recent
+ whole seconds time.
+ */
+ gettimeofday(&nowtime, NULL);
+ reftime.tv_sec = nowtime.tv_sec;
+ reftime.tv_usec = 0;
+
+ set_hardware_clock_exact((time_t) reftime.tv_sec, reftime,
+ clock_access, dev_port, universal,
+ hc_zero_year, badyear, testing);
+ adjust_drift_factor(adjtime_p, (time_t) reftime.tv_sec, hclock_valid,
+ time_inc(t2tv(hclocktime),
+ - time_diff(read_time, reftime)
+ )
+ );
+}
+
+
+static void
+manipulate_clock(const bool show, const bool adjust,
+ const bool set, const time_t set_time,
+ const bool hctosys, const bool systohc,
+ const struct timeval startup_time,
+ const enum clock_access_method clock_access,
+ const bool utc, const bool local_opt,
+ const bool badyear, const bool arc_opt, const bool srm_opt,
+ const bool user_wants_uf,
+ const bool testing,
+ int *retcode_p
+ ) {
+/*---------------------------------------------------------------------------
+ Do all the normal work of hwclock - read, set clock, etc.
+
+ Issue output to stdout and error message to stderr where appropriate.
+
+ Return rc == 0 if everything went OK, rc != 0 if not.
+----------------------------------------------------------------------------*/
+ struct adjtime adjtime;
+ /* Contents of the adjtime file, or what they should be. */
+ int rc; /* local return code */
+ bool no_auth; /* User lacks necessary authorization to access the clock */
+ int dev_port;
+ /* File descriptor for /dev/port, if we're using it. -1 if we
+ couldn't open it. 0 if we aren't using it.
+ */
+ get_inb_outb_privilege(clock_access, &no_auth);
+
+ if (no_auth) *retcode_p = 1;
+ else {
+ get_dev_port_access(clock_access, &dev_port);
+
+ if (dev_port < 0) *retcode_p = 3;
+ else {
+ read_adjtime(&adjtime, &rc);
+ if (rc != 0) *retcode_p = 2;
+ else {
+ const bool use_uf_bit = uf_bit_needed(user_wants_uf);
+ const int hc_zero_year = zero_year(arc_opt, srm_opt);
+ /* year of century to which a value of zero corresponds in the
+ Hardware Clock's year register.
+ */
+ const bool universal = hw_clock_is_utc(utc, local_opt, adjtime);
+ /* The hardware clock is kept in Coordinated Universal Time. */
+
+ if ((set || systohc || adjust) &&
+ (adjtime.local_utc == UTC) != universal) {
+ adjtime.local_utc = universal ? UTC : LOCAL;
+ adjtime.dirty = TRUE;
+ }
+
+ synchronize_to_clock_tick(clock_access, dev_port, use_uf_bit,
+ retcode_p);
+ /* this takes up to 1 second */
+ if (*retcode_p == 0) {
+ struct timeval read_time;
+ /* The time at which we read the Hardware Clock */
+
+ bool hclock_valid;
+ /* The Hardware Clock gives us a valid time, or at least something
+ close enough to fool mktime().
+ */
+
+ time_t hclocktime;
+ /* The time the hardware clock had just after we
+ synchronized to its next clock tick when we started up.
+ Defined only if hclock_valid is true.
+ */
+
+ gettimeofday(&read_time, NULL);
+ read_hardware_clock(clock_access, dev_port, universal,
+ hc_zero_year, badyear,
+ adjtime.last_calib_time,
+ &hclock_valid, &hclocktime);
+
+ if (show) {
+ display_time(hclock_valid, hclocktime,
+ time_diff(read_time, startup_time), !badyear);
+ *retcode_p = 0;
+ } else if (set) {
+ set_hardware_clock_exact(set_time, startup_time,
+ clock_access, dev_port, universal,
+ hc_zero_year,
+ badyear, testing);
+ adjust_drift_factor(&adjtime, set_time, hclock_valid,
+ time_inc(t2tv(hclocktime),
+ - time_diff(read_time, startup_time)
+ )
+ );
+ *retcode_p = 0;
+ } else if (adjust) {
+ do_adjustment(&adjtime, hclock_valid, hclocktime,
+ read_time, clock_access, dev_port,
+ universal, hc_zero_year,
+ badyear, testing);
+ *retcode_p = 0;
+ } else if (systohc) {
+ do_systohc(clock_access, dev_port,
+ hclocktime, hclock_valid, read_time,
+ universal, hc_zero_year, badyear, testing,
+ &adjtime);
+ *retcode_p = 0;
+ } else if (hctosys) {
+ rc = set_system_clock(hclock_valid, hclocktime, testing);
+ if (rc != 0) {
+ printf("Unable to set system clock.\n");
+ *retcode_p = 1;
+ } else *retcode_p = 0;
+ }
+ save_adjtime(adjtime, testing);
+ }
+ }
+ }
+ if (clock_access == DEV_PORT && dev_port >= 0) close(dev_port);
+ }
+}
+
+
+
+static void
+report_version(void) {
+
+ char *additional_version; /* malloc'ed */
+ /* Stuff to add on to the version report, after the basic version.
+ If this is hwclock packaged with util-linux, this is the
+ util-linux version. Otherwise, it's nothing.
+ */
+
+#ifdef UTIL_LINUX
+ additional_version = malloc(strlen(util_linux_version) + 5);
+ sprintf(additional_version, "/%s", util_linux_version);
+#else
+ additional_version = strdup("");
+#endif
+ printf(MYNAME " " VERSION "%s\n", additional_version);
+ free(additional_version);
+}
+
+
+
+static void
+manipulate_epoch(const bool getepoch, const bool setepoch,
+ const int epoch_opt, const bool testing) {
+/*----------------------------------------------------------------------------
+ Get or set the Hardware Clock epoch value in the kernel, as appropriate.
+ 'getepoch', 'setepoch', and 'epoch' are hwclock invocation options.
+
+ 'epoch' == -1 if the user did not specify an "epoch" option.
+
+-----------------------------------------------------------------------------*/
+ /*
+ Maintenance note: This should work on non-Alpha machines, but the
+ evidence today (98.03.04) indicates that the kernel only keeps the
+ epoch value on Alphas. If that is ever fixed, this function should be
+ changed.
+ */
+
+ if (!alpha_machine)
+ fprintf(stderr,
+ "%s: The kernel keeps an epoch value for the Hardware Clock "
+ "only on an Alpha machine.\nThis copy of hwclock was built for "
+ "a machine other than Alpha\n(and thus is presumably not running "
+ "on an Alpha now). No action taken.\n", MYNAME);
+ else {
+ if (getepoch) {
+ unsigned long epoch;
+ char *reason; /* malloc'ed */
+
+ get_epoch(&epoch, &reason);
+ if (reason != NULL) {
+ printf("Unable to get the epoch value from the kernel. %s\n",
+ reason);
+ free(reason);
+ } else
+ printf("Kernel is assuming an epoch value of %lu\n", epoch);
+ } else if (setepoch) {
+ if (epoch_opt == -1)
+ fprintf(stderr, "%s: To set the epoch value, you must use the 'epoch' "
+ "option to tell to what value to set it.\n", MYNAME);
+ else {
+ int rc;
+ set_epoch(epoch_opt, testing, &rc);
+ if (rc != 0)
+ printf("Unable to set the epoch value in the kernel.\n");
+ }
+ }
+ }
+}
+
+
+
+int
+main(int argc, char **argv, char **envp) {
+/*----------------------------------------------------------------------------
+ MAIN
+-----------------------------------------------------------------------------*/
+ struct timeval startup_time;
+ /* The time we started up, in seconds into the epoch, including fractions.
+ */
+ time_t set_time; /* Time to which user said to set Hardware Clock */
+
+ enum clock_access_method clock_access;
+ /* The method that we determine is best for accessing Hardware Clock
+ on this system.
+ */
+
+ bool permitted; /* User is permitted to do the function */
+ int retcode; /* Our eventual return code */
+
+ int rc; /* local return code */
+
+ /* option_def is the control table for the option parser. These other
+ variables are the results of parsing the options and their meanings
+ are given by the option_def. The only exception is <show>, which
+ may be modified after parsing is complete to effect an implied option.
+ */
+ bool show, set, systohc, hctosys, adjust, getepoch, setepoch, version;
+ bool utc, local_opt, badyear, testing, directisa;
+ bool arc_opt, jensen_opt, srm_opt, funky_opt;
+ char *date_opt;
+ int epoch_opt;
+
+ const optStruct option_def[] = {
+ { 'r', (char *) "show", OPT_FLAG, &show, 0 },
+ { 0, (char *) "set", OPT_FLAG, &set, 0 },
+ { 'w', (char *) "systohc", OPT_FLAG, &systohc, 0 },
+ { 's', (char *) "hctosys", OPT_FLAG, &hctosys, 0 },
+ { 0, (char *) "getepoch", OPT_FLAG, &getepoch, 0 },
+ { 0, (char *) "setepoch", OPT_FLAG, &setepoch, 0 },
+ { 'a', (char *) "adjust", OPT_FLAG, &adjust, 0 },
+ { 'v', (char *) "version", OPT_FLAG, &version, 0 },
+ { 0, (char *) "date", OPT_STRING, &date_opt, 0 },
+ { 0, (char *) "epoch", OPT_UINT, &epoch_opt, 0 },
+ { 'u', (char *) "utc", OPT_FLAG, &utc, 0 },
+ { 0, (char *) "localtime", OPT_FLAG, &local_opt, 0 },
+ { 0, (char *) "badyear", OPT_FLAG, &badyear, 0 },
+ { 0, (char *) "directisa", OPT_FLAG, &directisa, 0 },
+ { 0, (char *) "test", OPT_FLAG, &testing, 0 },
+ { 'D', (char *) "debug", OPT_FLAG, &debug, 0 },
+ { 'A', (char *) "arc", OPT_FLAG, &arc_opt, 0 },
+ { 'J', (char *) "jensen", OPT_FLAG, &jensen_opt,0 },
+ { 'S', (char *) "srm", OPT_FLAG, &srm_opt, 0 },
+ { 'F', (char *) "funky-toy", OPT_FLAG, &funky_opt, 0 },
+ { 0, (char *) NULL, OPT_END, NULL, 0 }
+ };
+ int argc_parse; /* argc, except we modify it as we parse */
+ char **argv_parse; /* argv, except we modify it as we parse */
+
+ assume_interrupts_enabled(); /* Since we haven't messed with them yet */
+
+ gettimeofday(&startup_time, NULL); /* Remember what time we were invoked */
+
+ /* set option defaults */
+ show = set = systohc = hctosys = adjust = getepoch = setepoch =
+ version = utc = local_opt = badyear =
+ directisa = testing = debug =
+ jensen_opt = arc_opt = srm_opt = funky_opt = FALSE;
+ date_opt = NULL;
+ epoch_opt = -1;
+
+ argc_parse = argc; argv_parse = argv;
+ optParseOptions(&argc_parse, argv_parse, option_def, 0);
+ /* Uses and sets argc_parse, argv_parse.
+ Sets show, set, systohc, hctosys, adjust, getepoch, setepoch,
+ version, utc, localtime, badyear,
+ directisa, testing, debug,
+ date_opt, epoch_opt,
+ jensen_opt, arc_opt, srm_opt, funky_opt
+ */
+
+ if (argc_parse - 1 > 0) {
+ fprintf(stderr, MYNAME " takes no non-option arguments. "
+ "You supplied %d. See man page for complete syntax.\n",
+ argc_parse - 1);
+ exit(100);
+ }
+
+ if (show + set + systohc + hctosys + adjust +
+ getepoch + setepoch + version > 1) {
+ fprintf(stderr,
+ "You have specified multiple function options to hwclock.\n"
+ "You can only perform one function at a time.\n");
+ exit(100);
+ }
+
+ if (set) {
+ rc = interpret_date_string(date_opt, &set_time); /* (time-consuming) */
+ if (rc != 0) {
+ fprintf(stderr, "%s: No usable set-to time given. Cannot set clock.\n",
+ MYNAME);
+ exit(100);
+ }
+ }
+
+ if (jensen_opt && !alpha_machine) {
+ fprintf(stderr, "%s: Your options indicate that this is a Jensen model of "
+ "DEC Alpha, but this is not an Alpha machine!\n", MYNAME);
+ exit(100);
+ }
+
+ if (srm_opt && alpha_machine) {
+ fprintf(stderr, "%s: Your options indicate that this machine keeps SRM "
+ "console time, but only DEC Alphas have such a clock and this is "
+ "not an Alpha!\n", MYNAME);
+ exit(100);
+ }
+ if (arc_opt && alpha_machine) {
+ fprintf(stderr, "%s: Your options indicate that this machine's clock"
+ "keeps ARC console time, "
+ "but only DEC Alphas have such a clock and this is "
+ "not an Alpha!\n", MYNAME);
+ exit(100);
+ }
+
+ if (directisa && !(isa_machine || alpha_machine)) {
+ fprintf(stderr, "%s: You have requested direct access to the ISA Hardware "
+ "Clock using machine instructions from the user process. "
+ "But this method only works on an ISA machine with an x86 "
+ "CPU, or a similar machine such as DEC Alpha. "
+ "This is not one.\n", MYNAME);
+ exit(100);
+ }
+
+ if (utc && local_opt) {
+ fprintf(stderr, "%s: The --utc and --localtime options are mutually "
+ "exclusive. You specified both.\n", MYNAME);
+ exit(100);
+ }
+
+
+ if (!(show | set | systohc | hctosys | adjust | getepoch | setepoch |
+ version))
+ show = TRUE; /* default to show */
+
+
+ if (getuid() == 0) permitted = TRUE;
+ else {
+ /* program is designed to run setuid (in some situations) -- be secure! */
+ if (set || hctosys || systohc || adjust) {
+ fprintf(stderr,
+ "%s: Sorry, only the superuser can change the "
+ "Hardware Clock.\n", MYNAME);
+ permitted = FALSE;
+ } else if (setepoch) {
+ fprintf(stderr,
+ "%s: Sorry, only the superuser can change "
+ "the Hardware Clock epoch in the kernel.\n", MYNAME);
+ permitted = FALSE;
+ } else permitted = TRUE;
+ }
+
+ if (!permitted) retcode = 2;
+ else {
+ retcode = 0;
+ if (version) {
+ report_version();
+ } else if (getepoch || setepoch) {
+ manipulate_epoch(getepoch, setepoch, epoch_opt, testing);
+ } else {
+ determine_clock_access_method(directisa, jensen_opt, &clock_access);
+ if (clock_access == NOCLOCK)
+ fprintf(stderr, "%s: Cannot access the Hardware Clock via any known "
+ "method. Use --debug option to see the details of our "
+ "search for an access method.\n", MYNAME);
+ else
+ manipulate_clock(show, adjust, set, set_time, hctosys, systohc,
+ startup_time, clock_access, utc, local_opt, badyear,
+ arc_opt, srm_opt, funky_opt, testing, &rc);
+ }
+ }
+ exit(retcode);
+}
+
+
+/****************************************************************************
+
+ History of this program:
+
+ 99.04.08 BJH Version 2.5
+
+ Make it work on Alphas without /dev/rtc. Thanks to David Mosberger
+ <davidm@azstarnet.com>, Jay Estabrook <jestabro@amt.tay1.dec.com>,
+ Martin Ostermann <ost@coments.rwth-aachen.de>, Andries Brouwer
+ <aeb@cwi.nl>. Most of this code is lifted from another program
+ called "clock" (not the original ancestor of hwclock) that has
+ circulated for use on Alpha.
+
+ Make it work on Sparc.
+
+ Add --badyear option. Thanks to David J Coffin (dcoffin@shore.net)
+ for the design of this.
+
+ Add --localtime option, local/UTC value in adjtime file, and defaults
+ for local/utc.
+
+ Don't set CMOS memory Byte 50 (century byte). On some machines,
+ that byte not only isn't used as a century byte, but it is used for
+ something else.
+
+ Don't update the drift factor if the variation is so huge that it
+ probably wasn't due to drift.
+
+ Compute drift factor with better precision.
+
+ 98.08.12 BJH Version 2.4
+
+ Don't use century byte from Hardware Clock. Add comments telling why.
+
+
+ 98.06.20 BJH Version 2.3.
+
+ Make --hctosys set the kernel timezone from TZ environment variable
+ and/or /usr/lib/zoneinfo. From Klaus Ripke (klaus@ripke.com).
+
+ 98.03.05 BJH. Version 2.2.
+
+ Add --getepoch and --setepoch.
+
+ Fix some word length things so it works on Alpha.
+
+ Make it work when /dev/rtc doesn't have the interrupt functions.
+ In this case, busywait for the top of a second instead of blocking and
+ waiting for the update complete interrupt.
+
+ Fix a bunch of bugs too numerous to mention.
+
+ 97.06.01: BJH. Version 2.1. Read and write the century byte (Byte
+ 50) of the ISA Hardware Clock when using direct ISA I/O. Problem
+ discovered by job (jei@iclnl.icl.nl).
+
+ Use the rtc clock access method in preference to the KDGHWCLK method.
+ Problem discovered by Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>.
+
+ November 1996: Version 2.0.1. Modifications by Nicolai Langfeldt
+ (janl@math.uio.no) to make it compile on linux 1.2 machines as well
+ as more recent versions of the kernel. Introduced the NO_CLOCK
+ access method and wrote feature test code to detect absense of rtc
+ headers.
+
+
+ Bryan Henderson based hwclock on the program "clock", in September
+ 1996. While remaining mostly backward compatible with clock,
+ hwclock added the following:
+
+ - You can set the hardware clock without also modifying the Linux
+ system clock.
+
+ - You can read and set the clock with finer than 1 second precision.
+
+ - When you set the clock, hwclock automatically refigures the drift
+ rate, based on how far off the clock was before you set it. (This
+ is the drift rate that is used with the --adjust function to
+ automatically adjust the clock periodically to compensate for drift).
+
+ - More mnemonic GNU-style command line options.
+
+ - Comments describing how the clock and program work to improve
+ maintainability.
+
+ - Removed the old dead I/O code that worked without the inb/outb
+ instructions and without the asm/io.h definitions.
+
+ The first version of hwclock was Version 2.
+
+ Here is the history section from the "clock" program at the time it was
+ used as a basis for hwclock:
+
+ V1.0
+
+
+ V1.0 by Charles Hedrick, hedrick@cs.rutgers.edu, April 1992.
+
+ ********************
+ V1.1
+ Modified for clock adjustments - Rob Hooft, hooft@chem.ruu.nl, Nov 1992
+ Also moved error messages to stderr. The program now uses getopt.
+ Changed some exit codes. Made 'gcc 2.3 -Wall' happy.
+
+ *****
+ V1.2
+
+ Applied patches by Harald Koenig (koenig@nova.tat.physik.uni-tuebingen.de)
+ Patched and indented by Rob Hooft (hooft@EMBL-Heidelberg.DE)
+
+ A free quote from a MAIL-message (with spelling corrections):
+
+ "I found the explanation and solution for the CMOS reading 0xff problem
+ in the 0.99pl13c (ALPHA) kernel: the RTC goes offline for a small amount
+ of time for updating. Solution is included in the kernel source
+ (linux/kernel/time.c)."
+
+ "I modified clock.c to fix this problem and added an option (now default,
+ look for USE_INLINE_ASM_IO) that I/O instructions are used as inline
+ code and not via /dev/port (still possible via #undef ...)."
+
+ With the new code, which is partially taken from the kernel sources,
+ the CMOS clock handling looks much more "official".
+ Thanks Harald (and Torsten for the kernel code)!
+
+ *****
+ V1.3
+ Canges from alan@spri.levels.unisa.edu.au (Alan Modra):
+ a) Fix a few typos in comments and remove reference to making
+ clock -u a cron job. The kernel adjusts cmos time every 11
+ minutes - see kernel/sched.c and kernel/time.c set_rtc_mmss().
+ This means we should really have a cron job updating
+ /etc/adjtime every 11 mins (set last_time to the current time
+ and not_adjusted to ???).
+ b) Swapped arguments of outb() to agree with asm/io.h macro of the
+ same name. Use outb() from asm/io.h as it's slightly better.
+ c) Changed CMOS_READ and CMOS_WRITE to inline functions. Inserted
+ cli()..sti() pairs in appropriate places to prevent possible
+ errors, and changed ioperm() call to iopl() to allow cli.
+ d) Moved some variables around to localise them a bit.
+ e) Fixed bug with clock -ua or clock -us that cleared environment
+ variable TZ. This fix also cured the annoying display of bogus
+ day of week on a number of machines. (Use mktime(), ctime()
+ rather than asctime() )
+ f) Use settimeofday() rather than stime(). This one is important
+ as it sets the kernel's timezone offset, which is returned by
+ gettimeofday(), and used for display of MSDOS and OS2 file
+ times.
+ g) faith@cs.unc.edu added -D flag for debugging
+
+ V1.4: alan@SPRI.Levels.UniSA.Edu.Au (Alan Modra)
+ Wed Feb 8 12:29:08 1995, fix for years > 2000.
+ faith@cs.unc.edu added -v option to print version. */
+
+
diff --git a/clockB/hwclock.h b/clockB/hwclock.h
new file mode 100644
index 000000000..6a3ab14bd
--- /dev/null
+++ b/clockB/hwclock.h
@@ -0,0 +1,139 @@
+#include <time.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+typedef int bool;
+#define TRUE 1
+#define FALSE 0
+
+#define MYNAME "hwclock"
+#define VERSION "2.5"
+
+
+enum clock_access_method {ISA, RTC_IOCTL, KD, DEV_PORT, NOCLOCK};
+ /* A method for accessing (reading, writing) the hardware clock:
+
+ ISA:
+ via direct CPU I/O instructions that work on an ISA family
+ machine (IBM PC compatible) or most DEC Alphas, which implement
+ enough of ISA to get by.
+
+ RTC_IOCTL:
+ via the rtc device driver, using device special file /dev/rtc.
+
+ KD:
+ via the console driver, using device special file /dev/tty1.
+ This is the m68k ioctl interface, known as KDGHWCLK.
+
+ DEV_PORT:
+ via the /dev/port device, which is almost the same thing as
+ direct I/O instructions via the ISA method, but works on a Jensen
+ model of Alpha, whereas ISA does not. Also, use I/O addresses
+ 0x170 and 0x171 instead of the ISA 0x70 and 0x71.
+
+ NO_CLOCK:
+ Unable to determine a usable access method for the system clock.
+ */
+
+
+
+
+/* hwclock.c */
+extern int debug;
+extern const bool alpha_machine;
+extern const bool isa_machine;
+
+/* directio.c */
+
+extern void
+assume_interrupts_enabled(void);
+
+extern void
+synchronize_to_clock_tick_ISA(int *retcode_p, const int dev_port,
+ const bool use_uf_bit);
+
+extern void
+read_hardware_clock_isa(struct tm *tm, const int dev_port,
+ int hc_zero_year);
+
+extern void
+set_hardware_clock_isa(const struct tm new_tm,
+ const int hc_zero_year,
+ const int dev_port,
+ const bool testing);
+
+extern void
+get_inb_outb_privilege(const enum clock_access_method clock_access,
+ bool * const no_auth_p);
+
+extern void
+get_dev_port_access(const enum clock_access_method clock_access,
+ int * dev_port_p);
+
+extern bool
+uf_bit_needed(const bool user_wants_uf);
+
+extern int
+zero_year(const bool arc_opt, const bool srm_opt);
+
+
+/* rtc.c */
+extern void
+synchronize_to_clock_tick_RTC(int *retcode_p);
+
+extern void
+read_hardware_clock_rtc_ioctl(struct tm *tm);
+
+extern void
+set_hardware_clock_rtc_ioctl(const struct tm new_broken_time,
+ const bool testing);
+extern void
+see_if_rtc_works(bool * const rtc_works_p);
+
+extern void
+get_epoch(unsigned long *epoch_p, char **reason_p);
+
+extern void
+set_epoch(unsigned long epoch, const bool testing, int *retcode_p);
+
+
+/* kd.c */
+
+extern void
+synchronize_to_clock_tick_KD(int *retcode_p);
+
+extern void
+read_hardware_clock_kd(struct tm *tm);
+
+extern void
+set_hardware_clock_kd(const struct tm new_broken_time,
+ const bool testing);
+
+extern void
+see_if_kdghwclk_works(bool * const kdghwclk_works_p);
+
+extern const bool got_kdghwclk;
+
+/* util.c */
+extern bool
+is_in_cpuinfo(const char * const fmt, const char * const str);
+
+extern char *
+ctime2(const time_t time);
+
+extern struct timeval
+t2tv(time_t argument);
+
+extern struct timeval
+t2tv(time_t argument);
+
+extern float
+time_diff(struct timeval subtrahend, struct timeval subtractor);
+
+extern struct timeval
+time_inc(struct timeval addend, float increment);
+
+
+
+
+
diff --git a/clockB/kd.c b/clockB/kd.c
new file mode 100644
index 000000000..68287cb54
--- /dev/null
+++ b/clockB/kd.c
@@ -0,0 +1,219 @@
+/**************************************************************************
+
+ This is a component of the hwclock program.
+
+ This file contains the code for accessing the hardware clock via
+ the KDHWCLK facility of M68k machines.
+
+****************************************************************************/
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/ioctl.h>
+
+#include "hwclock.h"
+
+
+
+#if defined(KDGHWCLK)
+const bool got_kdghwclk = TRUE;
+static const int kdghwclk_ioctl = KDGHWCLK;
+static const int kdshwclk_ioctl = KDSHWCLK;
+#else
+const bool got_kdghwclk = FALSE;
+static const int kdghwclk_ioctl; /* Never used; just to make compile work */
+struct hwclk_time {int sec;};
+ /* Never used; just to make compile work */
+#endif
+
+
+void
+synchronize_to_clock_tick_KD(int *retcode_p) {
+/*----------------------------------------------------------------------------
+ Wait for the top of a clock tick by calling KDGHWCLK in a busy loop until
+ we see it.
+-----------------------------------------------------------------------------*/
+ int con_fd;
+
+ if (debug)
+ printf("Waiting in loop for time from KDGHWCLK to change\n");
+
+ con_fd = open("/dev/tty1", O_RDONLY);
+ if (con_fd < 0) {
+ fprintf(stderr, "%s: open() failed to open /dev/tty1, errno = %s (%d).\n",
+ MYNAME, strerror(errno), errno);
+ *retcode_p = 1;
+ } else {
+ int rc; /* return code from ioctl() */
+ int i; /* local loop index */
+ /* The time when we were called (and started waiting) */
+ struct hwclk_time start_time, nowtime;
+
+ rc = ioctl(con_fd, kdghwclk_ioctl, &start_time);
+ if (rc == -1) {
+ fprintf(stderr, "%s: KDGHWCLK to read time failed, "
+ "errno = %s (%d).\n", MYNAME, strerror(errno), errno);
+ *retcode_p = 3;
+ }
+
+ for (i = 0;
+ (rc = ioctl(con_fd, kdghwclk_ioctl, &nowtime)) != -1
+ && start_time.sec == nowtime.sec && i < 1000000;
+ i++);
+ if (i >= 1000000) {
+ fprintf(stderr, "%s: Timed out waiting for time change.\n", MYNAME);
+ *retcode_p = 2;
+ } else if (rc == -1) {
+ fprintf(stderr, "%s: KDGHWCLK to read time failed, "
+ "errno = %s (%d).\n", MYNAME, strerror(errno), errno);
+ *retcode_p = 3;
+ } else *retcode_p = 0;
+ close(con_fd);
+ }
+}
+
+
+
+void
+read_hardware_clock_kd(struct tm *tm) {
+/*----------------------------------------------------------------------------
+ Read the hardware clock and return the current time via <tm>
+ argument. Use ioctls to /dev/tty1 on what we assume is an m68k
+ machine.
+
+ Note that we don't use /dev/console here. That might be a serial
+ console.
+-----------------------------------------------------------------------------*/
+#ifdef KDGHWCLK
+ int con_fd;
+ struct hwclk_time t;
+
+ con_fd = open("/dev/tty1", O_RDONLY);
+ if (con_fd < 0) {
+ fprintf(stderr, "%s: open() failed to open /dev/tty1, errno = %s (%d).\n",
+ MYNAME, strerror(errno), errno);
+ exit(5);
+ } else {
+ int rc; /* return code from ioctl() */
+
+ rc = ioctl(con_fd, kdghwclk_ioctl, &t);
+ if (rc == -1) {
+ fprintf(stderr, "%s: ioctl() failed to read time from /dev/tty1, "
+ "errno = %s (%d).\n",
+ MYNAME, strerror(errno), errno);
+ exit(5);
+ }
+ close(con_fd);
+ }
+
+ tm->tm_sec = t.sec;
+ tm->tm_min = t.min;
+ tm->tm_hour = t.hour;
+ tm->tm_mday = t.day;
+ tm->tm_mon = t.mon;
+ tm->tm_year = t.year;
+ tm->tm_wday = t.wday;
+ tm->tm_isdst = -1; /* Don't know if it's Daylight Savings Time */
+#else
+ /* This routine should never be invoked. It is here just to make the
+ program compile.
+ */
+#endif
+}
+
+
+
+void
+set_hardware_clock_kd(const struct tm new_broken_time,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the time <new_broken_time>. Use ioctls to
+ /dev/tty1 on what we assume is an m68k machine.
+
+ Note that we don't use /dev/console here. That might be a serial console.
+----------------------------------------------------------------------------*/
+#ifdef KDGHWCLK
+ int con_fd; /* File descriptor of /dev/tty1 */
+ struct hwclk_time t;
+
+ con_fd = open("/dev/tty1", O_RDONLY);
+ if (con_fd < 0) {
+ fprintf(stderr, "%s: Error opening /dev/tty1. Errno: %s (%d)\n",
+ MYNAME, strerror(errno), errno);
+ exit(1);
+ } else {
+ int rc; /* locally used return code */
+
+ t.sec = new_broken_time.tm_sec;
+ t.min = new_broken_time.tm_min;
+ t.hour = new_broken_time.tm_hour;
+ t.day = new_broken_time.tm_mday;
+ t.mon = new_broken_time.tm_mon;
+ t.year = new_broken_time.tm_year;
+ t.wday = new_broken_time.tm_wday;
+
+ if (testing)
+ printf("Not setting Hardware Clock because running in test mode.\n");
+ else {
+ rc = ioctl(con_fd, kdshwclk_ioctl, &t );
+ if (rc < 0) {
+ fprintf(stderr, "%s: ioctl() to open /dev/tty1 failed. "
+ "Errno: %s (%d)\n",
+ MYNAME, strerror(errno), errno);
+ exit(1);
+ }
+ }
+ close(con_fd);
+ }
+#else
+ /* This function should never be invoked. It is here just to make the
+ program compile.
+ */
+#endif
+}
+
+
+
+void
+see_if_kdghwclk_works(bool * const kdghwclk_works_p) {
+/*----------------------------------------------------------------------------
+ Find out if we are capable of accessing the Hardware Clock via the
+ KDHWCLK facility (ioctl to /dev/tty1).
+-----------------------------------------------------------------------------*/
+ if (got_kdghwclk) {
+ int con_fd;
+ struct hwclk_time t;
+
+ con_fd = open("/dev/tty1", O_RDONLY);
+ if (con_fd >= 0) {
+ if (ioctl( con_fd, kdghwclk_ioctl, &t ) >= 0)
+ *kdghwclk_works_p = TRUE;
+ else {
+ if (errno == EINVAL) {
+ /* KDGHWCLK not implemented in this kernel... */
+ *kdghwclk_works_p = FALSE;
+ if (debug)
+ printf(MYNAME "was built with KDGHWCLK capability, but the "
+ "ioctl does not exist in the kernel. The ioctl (to "
+ "/dev/tty1) failed with errno EINVAL.\n");
+ } else {
+ *kdghwclk_works_p = FALSE;
+ fprintf(stderr,
+ "%s: KDGHWCLK ioctl failed, errno = %s (%d).\n",
+ MYNAME, strerror(errno), errno);
+ }
+ }
+ } else {
+ *kdghwclk_works_p = FALSE;
+ fprintf(stderr,
+ "%s: Can't open /dev/tty1. open() errno = %s (%d).\n",
+ MYNAME, strerror(errno), errno);
+ }
+ close(con_fd);
+ } else *kdghwclk_works_p = FALSE;
+}
+
+
+
diff --git a/clockB/rtc.c b/clockB/rtc.c
new file mode 100644
index 000000000..46041b297
--- /dev/null
+++ b/clockB/rtc.c
@@ -0,0 +1,425 @@
+/**************************************************************************
+
+ This is a component of the hwclock program.
+
+ This file contains the code for accessing the hardware clock via
+ the rtc device driver (usually hooked up to the /dev/rtc device
+ special file).
+
+****************************************************************************/
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+
+#include "hwclock.h"
+
+/*
+ Get defines for rtc stuff.
+
+ Getting the rtc defines is nontrivial. The obvious way is by
+ including <linux/mc146818rtc.h> but that again includes <asm/io.h>
+ which again includes ... and on sparc and alpha this gives
+ compilation errors for many kernel versions. So, we give the defines
+ ourselves here. Moreover, some Sparc person decided to be
+ incompatible, and used a struct rtc_time different from that used in
+ mc146818rtc.h.
+*/
+
+/* On Sparcs, there is a <asm/rtc.h> that defines different ioctls
+ (that are required on my machine). However, this include file
+ does not exist on other architectures. */
+/* One might do:
+#ifdef __sparc__
+#include <asm/rtc.h>
+#endif
+ */
+
+/* The following is roughly equivalent */
+struct sparc_rtc_time
+{
+ int sec; /* Seconds (0-59) */
+ int min; /* Minutes (0-59) */
+ int hour; /* Hour (0-23) */
+ int dow; /* Day of the week (1-7) */
+ int dom; /* Day of the month (1-31) */
+ int month; /* Month of year (1-12) */
+ int year; /* Year (0-99) */
+};
+
+
+#define RTCGET _IOR('p', 20, struct sparc_rtc_time)
+#define RTCSET _IOW('p', 21, struct sparc_rtc_time)
+
+
+#include <linux/version.h>
+/* Check if the /dev/rtc interface is available in this version of
+ the system headers. 131072 is linux 2.0.0. Might need to make
+ it conditional on i386 or something too -janl */
+#if LINUX_VERSION_CODE >= 131072
+#include <linux/kd.h>
+static const bool got_rtc = TRUE;
+#else
+static const bool got_rtc = FALSE;
+#endif
+
+/* struct linux_rtc_time is present since Linux 1.3.99 */
+/* Earlier (since 1.3.89), a struct tm was used. */
+struct linux_rtc_time {
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+};
+
+/* RTC_RD_TIME etc have this definition since Linux 1.99.9 (pre2.0-9) */
+#ifndef RTC_RD_TIME
+#define RTC_RD_TIME _IOR('p', 0x09, struct linux_rtc_time)
+#define RTC_SET_TIME _IOW('p', 0x0a, struct linux_rtc_time)
+#define RTC_UIE_ON _IO('p', 0x03) /* Update int. enable on */
+#define RTC_UIE_OFF _IO('p', 0x04) /* Update int. enable off */
+#endif
+/* RTC_EPOCH_READ and RTC_EPOCH_SET ioctls are in kernels since
+ Linux 2.0.34 and 2.1.89
+ */
+#ifndef RTC_EPOCH_READ
+#define RTC_EPOCH_READ _IOR('p', 0x0d, unsigned long) /* Read epoch */
+#define RTC_EPOCH_SET _IOW('p', 0x0e, unsigned long) /* Set epoch */
+#endif
+
+
+
+static void
+do_rtc_read_ioctl(int rtc_fd, struct tm *tm, int *retcode_p) {
+/*----------------------------------------------------------------------------
+ Do the ioctl to read the time. This is, unfortunately, a slightly
+ different function for Sparc than for everything else. But we
+ return the standard 'tm' structure result in spite of the fact that
+ the Sparc ioctl returns something else.
+
+ If the ioctl fails, issue message to stderr and return rc = 1;
+ else, no message and rc = 0.
+-----------------------------------------------------------------------------*/
+ int rc;
+
+#ifdef __sparc__
+ struct sparc_rtc_time stm;
+
+ rc = ioctl(rtc_fd, RTCGET, &stm);
+ tm->tm_sec = stm.sec;
+ tm->tm_min = stm.min;
+ tm->tm_hour = stm.hour;
+ tm->tm_mday = stm.dom;
+ tm->tm_mon = stm.month - 1;
+ tm->tm_year = stm.year - 1900;
+ tm->tm_wday = stm.dow - 1;
+ tm->tm_yday = -1; /* day in the year */
+#else
+ rc = ioctl(rtc_fd, RTC_RD_TIME, tm);
+#endif
+ if (rc == -1) {
+ fprintf(stderr, "%s: ioctl() to /dev/rtc to read the time failed. "
+ "errno = %s (%d)\n", MYNAME, strerror(errno), errno);
+ *retcode_p = 1;
+ } else *retcode_p = 0;
+ tm->tm_isdst = -1; /* don't know whether it's daylight */
+ return;
+}
+
+
+
+void
+get_epoch(unsigned long *epoch_p, char **reason_p){
+/*----------------------------------------------------------------------------
+ Get the Hardware Clock epoch setting from the kernel.
+
+ If we succeed, return the setting (number of year A.D.) as
+ *epoch_p and *reason_p == NULL.
+
+ If we fail, return and English description of what went wrong as a
+ null-terminated string in newly malloc'ed storage and the pointer to
+ it as *reason_p.
+----------------------------------------------------------------------------*/
+ int rtc_fd;
+
+ rtc_fd = open("/dev/rtc", O_RDONLY);
+ if (rtc_fd < 0) {
+ if (errno == ENOENT)
+ *reason_p =
+ strdup("To manipulate the epoch value in the kernel, we must "
+ "access the Linux 'rtc' device driver via the device special "
+ "file /dev/rtc. This file does not exist on this system.\n");
+ else {
+ *reason_p = malloc(200);
+ sprintf(*reason_p, "Unable to open /dev/rtc, open() errno = %s (%d)\n",
+ strerror(errno), errno);
+ }
+ } else {
+ int rc; /* return code from ioctl */
+ rc = ioctl(rtc_fd, RTC_EPOCH_READ, epoch_p);
+ if (rc == -1) {
+ *reason_p = malloc(200);
+ sprintf(*reason_p, "ioctl(RTC_EPOCH_READ) to /dev/rtc failed, "
+ "errno = %s (%d).\n", strerror(errno), errno);
+ } else {
+ *reason_p = NULL;
+ if (debug) printf("we have read epoch %ld from /dev/rtc "
+ "with RTC_EPOCH_READ ioctl.\n", *epoch_p);
+ }
+ close(rtc_fd);
+ }
+ return;
+}
+
+
+
+static void
+busywait_for_rtc_clock_tick(const int rtc_fd, int *retcode_p) {
+/*----------------------------------------------------------------------------
+ Wait for the top of a clock tick by reading /dev/rtc in a busy loop until
+ we see it.
+-----------------------------------------------------------------------------*/
+ struct tm start_time;
+ /* The time when we were called (and started waiting) */
+ int rc;
+
+ if (debug)
+ printf("Waiting in loop for time from /dev/rtc to change\n");
+
+ do_rtc_read_ioctl(rtc_fd, &start_time, &rc);
+ if (rc != 0) *retcode_p = 1;
+ else {
+ /* Wait for change. Should be within a second, but in case something
+ weird happens, we have a limit on this loop to reduce the impact
+ of this failure.
+ */
+ struct tm nowtime;
+ int iterations; /* how many time's we've spun through the loop */
+ int rc; /* Return code from do_rtc_read_ioctl */
+
+ iterations = 0;
+ do {
+ do_rtc_read_ioctl(rtc_fd, &nowtime, &rc);
+ } while (rc == 0 && start_time.tm_sec == nowtime.tm_sec
+ && iterations++ < 1000000);
+
+ if (iterations >= 1000000) {
+ fprintf(stderr, "%s: Timed out waiting for time change.\n", MYNAME);
+ *retcode_p = 2;
+ } else if (rc != 0) *retcode_p = 3;
+ else *retcode_p = 0;
+ }
+}
+
+
+
+void
+synchronize_to_clock_tick_RTC(int *retcode_p) {
+/*----------------------------------------------------------------------------
+ Same as synchronize_to_clock_tick(), but just for /dev/rtc.
+-----------------------------------------------------------------------------*/
+ int rtc_fd; /* File descriptor of /dev/rtc */
+
+ rtc_fd = open("/dev/rtc", O_RDONLY);
+
+ if (rtc_fd == -1) {
+ fprintf(stderr, "%s: open() of /dev/rtc failed, errno = %s (%d).\n",
+ MYNAME, strerror(errno), errno);
+ *retcode_p = 1;
+ } else {
+ int rc; /* Return code from ioctl */
+ /* Turn on update interrupts (one per second) */
+ rc = ioctl(rtc_fd, RTC_UIE_ON, 0);
+ if (rc == -1 && errno == EINVAL) {
+ /* This rtc device doesn't have interrupt functions. This is typical
+ on an Alpha, where the Hardware Clock interrupts are used by the
+ kernel for the system clock, so aren't at the user's disposal.
+ */
+ if (debug) printf("/dev/rtc does not have interrupt functions. \n");
+ busywait_for_rtc_clock_tick(rtc_fd, retcode_p);
+ } else if (rc != -1) {
+ int rc; /* return code from ioctl */
+ unsigned long dummy;
+
+ /* this blocks until the next update interrupt */
+ rc = read(rtc_fd, &dummy, sizeof(dummy));
+ if (rc == -1) {
+ fprintf(stderr, "%s: read() to /dev/rtc to wait for clock tick "
+ "failed, errno = %s (%d).\n", MYNAME, strerror(errno), errno);
+ *retcode_p = 1;
+ } else {
+ *retcode_p = 0;
+ }
+ /* Turn off update interrupts */
+ rc = ioctl(rtc_fd, RTC_UIE_OFF, 0);
+ if (rc == -1) {
+ fprintf(stderr,
+ "%s: ioctl() to /dev/rtc to turn off update interrupts "
+ "failed, errno = %s (%d).\n", MYNAME, strerror(errno), errno);
+ }
+ } else {
+ fprintf(stderr, "%s: ioctl() to /dev/rtc to turn on update interrupts "
+ "failed unexpectedly, errno = %s (%d).\n",
+ MYNAME, strerror(errno), errno);
+ *retcode_p = 1;
+ }
+ close(rtc_fd);
+ }
+}
+
+
+
+void
+read_hardware_clock_rtc_ioctl(struct tm *tm) {
+/*----------------------------------------------------------------------------
+ Read the hardware clock and return the current time via <tm>
+ argument. Use ioctls to "rtc" device /dev/rtc.
+-----------------------------------------------------------------------------*/
+ int rc; /* Local return code */
+ int rtc_fd; /* File descriptor of /dev/rtc */
+
+ rtc_fd = open("/dev/rtc",O_RDONLY);
+if (rtc_fd == -1) {
+fprintf(stderr, "%s: open() of /dev/rtc failed, errno = %s (%d).\n",
+ MYNAME, strerror(errno), errno);
+exit(5);
+ } else {
+ /* Read the RTC time/date */
+
+ rc = ioctl(rtc_fd, RTC_RD_TIME, tm);
+ if (rc == -1) {
+ fprintf(stderr, "%s: ioctl() to /dev/rtc to read the time failed, "
+ "errno = %s (%d).\n", MYNAME, strerror(errno), errno);
+ exit(5);
+ }
+ close(rtc_fd);
+ }
+ tm->tm_isdst = -1; /* don't know whether it's daylight */
+}
+
+
+
+void
+set_hardware_clock_rtc_ioctl(const struct tm new_broken_time,
+ const bool testing) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock to the broken down time <new_broken_time>.
+ Use ioctls to "rtc" device /dev/rtc.
+----------------------------------------------------------------------------*/
+ int rc;
+ int rtc_fd;
+
+ rtc_fd = open("/dev/rtc", O_RDONLY);
+ if (rtc_fd < 0) {
+ fprintf(stderr, "%s: Unable to open /dev/rtc, open() errno = %s (%d)\n",
+ MYNAME, strerror(errno), errno);
+ exit(5);
+ } else {
+ if (testing)
+ printf("Not setting Hardware Clock because running in test mode.\n");
+ else {
+ rc = ioctl(rtc_fd, RTC_SET_TIME, &new_broken_time);
+ if (rc == -1) {
+ fprintf(stderr,
+ "%s: ioctl() (RTC_SET_TIME) to /dev/rtc to set time failed, "
+ "errno = %s (%d).\n", MYNAME, strerror(errno), errno);
+ exit(5);
+ } else {
+ if (debug)
+ printf("ioctl(RTC_SET_TIME) was successful.\n");
+ }
+ }
+ close(rtc_fd);
+ }
+}
+
+
+
+void
+set_epoch(unsigned long epoch, const bool testing, int *retcode_p) {
+/*----------------------------------------------------------------------------
+ Set the Hardware Clock epoch in the kernel.
+----------------------------------------------------------------------------*/
+ if (epoch < 1900)
+ /* kernel would not accept this epoch value */
+ fprintf(stderr, "%s: The epoch value may not be less than 1900. "
+ "You requested %ld\n", MYNAME, epoch);
+ else {
+ int rtc_fd;
+
+ rtc_fd = open("/dev/rtc", O_RDONLY);
+ if (rtc_fd < 0) {
+ if (errno == ENOENT)
+ fprintf(stderr,
+ "%s: To manipulate the epoch value in the kernel, we must "
+ "access the Linux 'rtc' device driver via the device special "
+ "file /dev/rtc. This file does not exist on this system.\n",
+ MYNAME);
+ fprintf(stderr, "%s: Unable to open /dev/rtc, open() errno = %s (%d)\n",
+ MYNAME, strerror(errno), errno);
+ *retcode_p = 1;
+ } else {
+ if (debug) printf("setting epoch to %ld "
+ "with RTC_EPOCH_SET ioctl to /dev/rtc.\n", epoch);
+ if (testing) {
+ printf("Not setting epoch because running in test mode.\n");
+ *retcode_p = 0;
+ } else {
+ int rc; /* return code from ioctl */
+ rc = ioctl(rtc_fd, RTC_EPOCH_SET, epoch);
+ if (rc == -1) {
+ if (errno == EINVAL)
+ fprintf(stderr, "%s: The kernel (specifically, the device driver "
+ "for /dev/rtc) does not have the RTC_EPOCH_SET ioctl. "
+ "Get a newer driver.\n", MYNAME);
+ else
+ fprintf(stderr, "%s: ioctl(RTC_EPOCH_SET) to /dev/rtc failed, "
+ "errno = %s (%d).\n", MYNAME, strerror(errno), errno);
+ *retcode_p = 1;
+ } else *retcode_p = 0;
+ }
+ close(rtc_fd);
+ }
+ }
+}
+
+
+
+void
+see_if_rtc_works(bool * const rtc_works_p) {
+/*----------------------------------------------------------------------------
+ Find out if we are capable of accessing the Hardware Clock via the rtc
+ driver (via device file /dev/rtc).
+-----------------------------------------------------------------------------*/
+ if (got_rtc) {
+ int rtc_fd = open("/dev/rtc", O_RDONLY);
+ if (rtc_fd > 0) {
+ *rtc_works_p = TRUE;
+ close(rtc_fd);
+ } else {
+ *rtc_works_p = FALSE;
+ if (debug)
+ printf("Open of /dev/rtc failed, errno = %s (%d). "
+ "falling back to more primitive clock access method.\n",
+ strerror(errno), errno);
+ }
+ } else {
+ if (debug)
+ printf("The Linux kernel for which this copy of hwclock() was built "
+ "is too old to have /dev/rtc\n");
+ *rtc_works_p = FALSE;
+ }
+}
+
+
+
+
diff --git a/sys-utils/shhopt.c b/clockB/shhopt.c
index 6d31225c8..6d31225c8 100644
--- a/sys-utils/shhopt.c
+++ b/clockB/shhopt.c
diff --git a/clockB/shhopt.h b/clockB/shhopt.h
new file mode 100644
index 000000000..3f87c138b
--- /dev/null
+++ b/clockB/shhopt.h
@@ -0,0 +1,33 @@
+/* $Id: shhopt.h,v 1.2 1996/06/06 00:06:35 sverrehu Exp $ */
+#ifndef SHHOPT_H
+#define SHHOPT_H
+
+/* constants for recognized option types. */
+typedef enum {
+ OPT_END, /* nothing. used as ending element. */
+ OPT_FLAG, /* no argument following. sets variable to 1. */
+ OPT_STRING, /* string argument. */
+ OPT_INT, /* signed integer argument. */
+ OPT_UINT, /* unsigned integer argument. */
+ OPT_LONG, /* signed long integer argument. */
+ OPT_ULONG, /* unsigned long integer argument. */
+} optArgType;
+
+/* flags modifying the default way options are handeled. */
+#define OPT_CALLFUNC 1 /* pass argument to a function. */
+
+typedef struct {
+ char shortName; /* Short option name. */
+ char *longName; /* Long option name, no including '--'. */
+ optArgType type; /* Option type. */
+ void *arg; /* Pointer to variable to fill with argument,
+ * or pointer to function if Type == OPT_FUNC. */
+ int flags; /* Modifier flags. */
+} optStruct;
+
+
+void optSetFatalFunc(void (*f)(const char *, ...));
+void optParseOptions(int *argc, char *argv[],
+ const optStruct opt[], const int allowNegNum);
+
+#endif
diff --git a/clockB/util.c b/clockB/util.c
new file mode 100644
index 000000000..8a1a6060c
--- /dev/null
+++ b/clockB/util.c
@@ -0,0 +1,120 @@
+/**************************************************************************
+
+ This is a component of the hwclock program.
+
+ This file contains the code for various basic utility routines
+ needed by the other modules.
+
+****************************************************************************/
+
+#include <stdio.h>
+#include <string.h>
+
+#include "hwclock.h"
+
+bool
+is_in_cpuinfo(const char * const fmt, const char * const str) {
+/*----------------------------------------------------------------------------
+ Return true iff the /proc/cpuinfo file shows the value 'str' for the
+ keyword 'fmt'. Both arguments are null-terminated strings.
+
+ If for any reason we can't read /proc/cpuinfo, return false.
+-----------------------------------------------------------------------------*/
+ FILE *cpuinfo;
+ char field[256];
+ char format[256];
+ bool found;
+
+ sprintf(format, "%s : %s", fmt, "%255s");
+
+ found = FALSE; /* initial value */
+ if ((cpuinfo = fopen ("/proc/cpuinfo", "r")) != NULL) {
+ while (!feof(cpuinfo)) {
+ if (fscanf (cpuinfo, format, field) == 1) {
+ if (strncmp(field, str, strlen(str)) == 0)
+ found = TRUE;
+ break;
+ }
+ fgets (field, 256, cpuinfo);
+ }
+ fclose(cpuinfo);
+ }
+ return found;
+}
+
+
+
+char *
+ctime2(const time_t time) {
+/*----------------------------------------------------------------------------
+ Same as ctime() from the standard C library, except it takes a time_t
+ as an argument instead of a pointer to a time_t, so it is much more
+ useful.
+
+ Also, don't include a newline at the end of the returned string. If
+ the user wants a newline, he can provide it himself.
+
+ return value is in static storage within.
+-----------------------------------------------------------------------------*/
+ static char retval[30];
+
+ strncpy(retval, ctime(&time), sizeof(retval));
+ retval[sizeof(retval)-1] = '\0';
+
+ /* Now chop off the last character, which is the newline */
+ if (strlen(retval) >= 1) /* for robustness */
+ retval[strlen(retval)-1] = '\0';
+ return(retval);
+
+}
+
+
+
+struct timeval
+t2tv(time_t argument) {
+/*----------------------------------------------------------------------------
+ Convert from "time_t" format to "timeval" format.
+-----------------------------------------------------------------------------*/
+ struct timeval retval;
+
+ retval.tv_sec = argument;
+ retval.tv_usec = 0;
+ return(retval);
+}
+
+
+
+float
+time_diff(struct timeval subtrahend, struct timeval subtractor) {
+/*---------------------------------------------------------------------------
+ The difference in seconds between two times in "timeval" format.
+----------------------------------------------------------------------------*/
+ return( (subtrahend.tv_sec - subtractor.tv_sec)
+ + (subtrahend.tv_usec - subtractor.tv_usec) / 1E6 );
+}
+
+
+struct timeval
+time_inc(struct timeval addend, float increment) {
+/*----------------------------------------------------------------------------
+ The time, in "timeval" format, which is <increment> seconds after
+ the time <addend>. Of course, <increment> may be negative.
+-----------------------------------------------------------------------------*/
+ struct timeval newtime;
+
+ newtime.tv_sec = addend.tv_sec + (int) increment;
+ newtime.tv_usec = addend.tv_usec + (increment - (int) increment) * 1E6;
+
+ /* Now adjust it so that the microsecond value is between 0 and 1 million */
+ if (newtime.tv_usec < 0) {
+ newtime.tv_usec += 1E6;
+ newtime.tv_sec -= 1;
+ } else if (newtime.tv_usec >= 1E6) {
+ newtime.tv_usec -= 1E6;
+ newtime.tv_sec += 1;
+ }
+ return(newtime);
+}
+
+
+
diff --git a/configure b/configure
new file mode 100755
index 000000000..75f754642
--- /dev/null
+++ b/configure
@@ -0,0 +1,362 @@
+#!/bin/sh
+# Configure script for util-linux - aeb, 990205
+#
+# We need to find out the following things:
+#
+# 1. For mount/nfsmount.c: is inet_aton() available?
+# 2. For fdisk/fdisksunlabel.c: is there a <scsi/scsi.h>?
+# For fdisk/fdisk.c: is there a <linux/blkpg.h>?
+# 3. For sys-utils/ipcs.c: do we need __KERNEL__ and <linux/linkage.h>?
+# 4. For sys-utils/cytune.c: do we need <linux/tqueue.h>?
+# 5. For sys-utils/kbd_rate.c: does <linux/kd.h> exist?
+# 6. For cfdisk, setterm, more, ul: do we have ncurses? How installed?
+# For more: do we have libtermcap?
+# 7. For chfn, chsh, login, newgrp, passwd: do we need -lcrypt?
+# 8. For sln: does static compilation work?
+# 9. For lib/nls.h: do we have <locale.h>?
+# 10. For lib/nls.h: do we have <libintl.h> and gettext()?
+# 11. For xgettext: does it take the option --foreign-user?
+# 12. For cal.c: do we have <langinfo.h>?
+# 13. For err.c: do we have __progname?
+# 14. For script.c: do we have <pty.h> and openpty()?
+
+if test "$RANDOM" = "$RANDOM"; then
+ # Plain old Bourne shell.
+ echo checking for gcc
+ test -z "$CC" -a -n "`gcc 2>&1`" && CC="gcc -O"
+else
+ # ksh, bash or zsh. ksh and zsh write "command not found" to stderr.
+ echo checking for gcc
+ test -z "$CC" && type gcc && CC="gcc -O"
+fi
+
+CC=${CC-cc}
+CFLAGS=${CFLAGS-"-O"}
+DEFS=
+LIBS=
+compile='$CC $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
+static_compile='$CC -static $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
+
+rm -f make_include defines.h conftest.c conftest
+
+#
+# 1. For mount/nfsmount.c: is inet_aton() available?
+#
+echo "
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+main(int a, char **v){
+ if (a == -1) /* false */
+ inet_aton((const char *) 0, (struct in_addr *) 0);
+ exit(0);
+}
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "#define HAVE_inet_aton" >> defines.h
+ echo "You have inet_aton()"
+else
+ echo "You don't have inet_aton()"
+fi
+rm -f conftest conftest.c
+
+#
+# 2. For fdisk/fdisksunlabel.c: is <scsi/scsi.h> available?
+# Some kernels have <scsi/scsi.h> that uses u_char
+# But maybe there is already a typedef. Let us use a #define
+#
+echo "
+#define u_char unsigned char
+#include <scsi/scsi.h>
+#undef u_char
+main(){ exit(0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "#define HAVE_scsi_h" >> defines.h
+ echo "You have <scsi/scsi.h>"
+else
+ echo "You don't have <scsi/scsi.h>"
+fi
+rm -f conftest conftest.c
+
+#
+# 2A. For fdisk/fdisk.c: is <linux/blkpg.h> available?
+#
+echo "
+#include <linux/blkpg.h>
+main(){ exit(0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "#define HAVE_blkpg_h" >> defines.h
+ echo "You have <linux/blkpg.h>"
+else
+ echo "You don't have <linux/blkpg.h>"
+fi
+rm -f conftest conftest.c
+
+#
+# 3. ipcs.c includes <sys/shm.h> and family
+# Do we need __KERNEL__ and asmlinkage for SHM_DEST?
+#
+echo "
+#include <sys/shm.h>
+main(){ int i=SHM_DEST; exit(0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "You don't need <linux/linkage.h>"
+else
+ echo "#define NEED_linkage_h" >> defines.h
+ echo "You need <linux/linkage.h>"
+fi
+rm -f conftest conftest.c
+
+#
+# 4. cytune.c may need struct tq_struct
+#
+echo "
+#include <sys/types.h>
+#include <linux/cyclades.h>
+main(){ exit(0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "You don't need <linux/tqueue.h>"
+else
+ echo "#define NEED_tqueue_h" >> defines.h
+ echo "You need <linux/tqueue.h>"
+fi
+rm -f conftest conftest.c
+
+#
+# 5. Does <linux/kd.h> exist?
+#
+echo "
+#include <linux/kd.h>
+main(){ exit(0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "#define HAVE_kd_h" >> defines.h
+ echo "You have <linux/kd.h>"
+else
+ echo "You don't have <linux/kd.h>"
+fi
+rm -f conftest conftest.c
+
+#
+# 6. How is [n]curses installed?
+#
+test_curses_h=0
+have_ncurses=1
+if [ -f /usr/include/ncurses/curses.h ]; then
+ echo "HAVE_NCURSES=yes" >> make_include
+ echo "CURSESFLAGS=-I/usr/include/ncurses -DNCH=0" >> make_include
+ echo "You have ncurses. Using <ncurses/curses.h>."
+elif [ -f /usr/include/ncurses.h ]; then
+ echo "HAVE_NCURSES=yes" >> make_include
+ echo "CURSESFLAGS=-DNCH=1" >> make_include
+ echo "You have ncurses. Using <ncurses.h>."
+elif [ -f /usr/local/include/ncurses.h ]; then
+ echo "HAVE_NCURSES=yes" >> make_include
+ echo "CURSESFLAGS=-I/usr/local/include -DNCH=1" >> make_include
+ echo "You have ncurses. Using /usr/local/include/ncurses.h."
+elif [ -f /usr/include/curses.h ]; then
+ test_curses_h=1
+else
+ have_ncurses=0
+fi
+#
+# If we found a curses.h, test whether it is ncurses
+# (It should define __NCURSES_H and NCURSES_VERSION and NCURSES_CONST ...)
+#
+if [ $test_curses_h = 1 ]; then
+ echo "
+ #include <curses.h>
+ main(){ char *c = NCURSES_VERSION; exit(0); }
+ " > conftest.c
+ eval $compile
+ if test -s conftest && ./conftest 2>/dev/null; then
+ echo "HAVE_NCURSES=yes" >> make_include
+ echo "CURSESFLAGS=-DNCH=0" >> make_include
+ echo "You have ncurses. Using <curses.h>."
+ else
+ have_ncurses=0
+ fi
+ rm -f conftest conftest.c
+fi
+
+if [ $have_ncurses = 0 ]; then
+ echo "HAVE_NCURSES=no" >> make_include
+ echo "You don't have ncurses - I will not make ul and setterm."
+else
+ echo "LIBCURSES=-lncurses" >> make_include
+fi
+
+#
+# Some systems have /usr/lib/termcap.so -> /usr/lib/termcap.so.2
+# where however the latter file does not exist. When termcap does
+# not exist, we can try to compile more with curses instead.
+#
+echo '
+#include <termcap.h>
+main(){ exit(0); tgetnum("li"); }
+' > conftest.c
+LIBS=-ltermcap
+eval $compile
+LIBS=
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "#define HAVE_termcap" >> defines.h
+ echo "LIBTERMCAP=-ltermcap" >> make_include
+ echo "You have termcap"
+else
+ echo "HAVE_TERMCAP=no" >> make_include
+ echo "You don't have termcap"
+fi
+rm -f conftest conftest.c
+
+#
+# 7. Do we need -lcrypt?
+#
+echo '
+#define _XOPEN_SOURCE
+#include <unistd.h>
+main(){ char *c = crypt("abc","pw"); exit(0); }
+' > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "NEED_LIBCRYPT=no" >> make_include
+ echo "You don't need -lcrypt"
+else
+ echo "NEED_LIBCRYPT=yes" >> make_include
+ echo "You need -lcrypt"
+fi
+rm -f conftest conftest.c
+
+#
+# 8. Does static compilation work?
+#
+echo "
+main(){ return 0; }
+" > conftest.c
+eval $static_compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ : OK, nothing special
+else
+ echo "CAN_DO_STATIC=no" >> make_include
+ echo "Strange... Static compilation fails here."
+fi
+
+#
+# 9. For lib/nls.h: do we have <locale.h>?
+#
+echo "
+#include <locale.h>
+main(){ exit(0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "#define HAVE_locale_h" >> defines.h
+ echo "You have <locale.h>"
+else
+ echo "You don't have <locale.h>"
+fi
+rm -f conftest conftest.c
+
+
+#
+# 10. For lib/nls.h: do we have <libintl.h> and gettext() ?
+#
+echo '
+#include <libintl.h>
+main(int a, char **v){
+ if (a == -1) /* false */
+ gettext("There is no gettext man page\n");
+ exit(0);
+}
+' > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo '#define HAVE_libintl_h' >> defines.h
+ echo "You have <libintl.h> and gettext()"
+ echo '#define ENABLE_NLS' >> defines.h
+ echo "Assuming that you want to enable NLS support."
+ echo "(Otherwise, edit defines.h)"
+ ENABLE_NLS=yes
+else
+ echo "You don't have <libintl.h>"
+ ENABLE_NLS=no
+fi
+rm -f conftest conftest.c
+
+
+#
+# 11. Does xgettext exist and take the option --foreign-user?
+#
+if (test $ENABLE_NLS = yes && type xgettext > /dev/null 2>&1); then
+ msg=`xgettext --foreign-user 2>&1 | grep unrecognized`
+ if test -n "$msg"; then
+ echo "FOREIGN = " >> make_include
+ else
+ echo "FOREIGN = --foreign-user" >> make_include
+ fi
+ echo "HAVE_XGETTEXT=yes" >> make_include
+else
+ echo "HAVE_XGETTEXT=no" >> make_include
+fi
+
+#
+# 12. For cal.c: do we have <langinfo.h>?
+#
+echo "
+#include <langinfo.h>
+main(){ exit(0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "#define HAVE_langinfo_h" >> defines.h
+ echo "You have <langinfo.h>"
+else
+ echo "You don't have <langinfo.h>"
+fi
+rm -f conftest conftest.c
+
+
+#
+# 13. For err.c: do we have __progname?
+# [make sure gcc -O does not optimize the access away]
+#
+echo "
+#include <stdio.h>
+extern char *__progname;
+main(){ printf(__progname); exit(0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest > /dev/null 2>/dev/null; then
+ echo "#define HAVE_progname" >> defines.h
+ echo "You have __progname"
+else
+ echo "You don't have __progname"
+fi
+rm -f conftest conftest.c
+
+
+#
+# 14. For script.c: do we have <pty.h> and openpty()?
+#
+echo "
+#include <pty.h>
+main(){ exit(0); openpty(0, 0, 0, 0, 0); }
+" > conftest.c
+eval $compile
+if test -s conftest && ./conftest 2>/dev/null; then
+ echo "HAVE_OPENPTY=yes" >> make_include
+ echo "#define HAVE_openpty" >> defines.h
+ echo "You have <pty.h> and openpty()"
+else
+ echo "You don't have <pty.h> and openpty()"
+fi
+rm -f conftest conftest.c
diff --git a/disk-utils/Makefile b/disk-utils/Makefile
index aec38630a..b170e81ee 100644
--- a/disk-utils/Makefile
+++ b/disk-utils/Makefile
@@ -4,6 +4,7 @@
# Copyright 1992, 1993, 1994, 1995 Rickard E. Faith (faith@cs.unc.edu)
#
+include ../make_include
include ../MCONFIG
# Where to put man pages?
diff --git a/disk-utils/fdformat.c b/disk-utils/fdformat.c
index 7f792c5c9..bb4f0a1f5 100644
--- a/disk-utils/fdformat.c
+++ b/disk-utils/fdformat.c
@@ -1,5 +1,11 @@
/* fdformat.c - Low-level formats a floppy disk. */
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * 1999-03-20 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ & - more i18n/nls translatable strings marked
+ */
+
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
@@ -10,6 +16,7 @@
#include <sys/ioctl.h>
#include <linux/fd.h>
#include <linux/fs.h>
+#include "nls.h"
static int ctrl;
struct floppy_struct param;
@@ -23,7 +30,7 @@ static void format_disk(char *name)
struct format_descr descr;
int track;
- printf("Formatting ... ");
+ printf(_("Formatting ... "));
fflush(stdout);
if (ioctl(ctrl,FDFMTBEG,NULL) < 0) PERROR("\nioctl(FDFMTBEG)");
for (track = 0; track < param.track; track++) {
@@ -41,7 +48,7 @@ static void format_disk(char *name)
}
}
if (ioctl(ctrl,FDFMTEND,NULL) < 0) PERROR("\nioctl(FDFMTEND)");
- printf("done\n");
+ printf(_("done\n"));
}
@@ -52,7 +59,7 @@ static void verify_disk(char *name)
cyl_size = param.sect*param.head*512;
if ((data = (unsigned char *) malloc(cyl_size)) == NULL) PERROR("malloc");
- printf("Verifying ... ");
+ printf(_("Verifying ... "));
fflush(stdout);
if ((fd = open(name,O_RDONLY)) < 0) PERROR(name);
for (cyl = 0; cyl < param.track; cyl++) {
@@ -63,20 +70,20 @@ static void verify_disk(char *name)
read_bytes = read(fd,data,cyl_size);
if(read_bytes != cyl_size) {
if(read_bytes < 0)
- perror("Read: ");
+ perror(_("Read: "));
fprintf(stderr,
- "Problem reading cylinder %d, expected %d, read %d\n",
+ _("Problem reading cylinder %d, expected %d, read %d\n"),
cyl, cyl_size, read_bytes);
exit(1);
}
for (count = 0; count < cyl_size; count++)
if (data[count] != FD_FILL_BYTE) {
- printf("bad data in cyl %d\nContinuing ... ",cyl);
+ printf(_("bad data in cyl %d\nContinuing ... "),cyl);
fflush(stdout);
break;
}
}
- printf("done\n");
+ printf(_("done\n"));
if (close(fd) < 0) PERROR("close");
}
@@ -86,7 +93,7 @@ static void usage(char *name)
char *this;
if ((this = strrchr(name,'/')) != NULL) name = this+1;
- fprintf(stderr,"usage: %s [ -n ] device\n",name);
+ fprintf(stderr,_("usage: %s [ -n ] device\n"),name);
exit(1);
}
@@ -97,6 +104,10 @@ int main(int argc,char **argv)
char *name;
struct stat st;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
name = argv[0];
verify = 1;
if (argc > 1 && argv[1][0] == '-') {
@@ -108,15 +119,15 @@ int main(int argc,char **argv)
if (argc != 2) usage(name);
if (stat(argv[1],&st) < 0) PERROR(argv[1]);
if (!S_ISBLK(st.st_mode) || MAJOR(st.st_rdev) != FLOPPY_MAJOR) {
- fprintf(stderr,"%s: not a floppy device\n",argv[1]);
+ fprintf(stderr,_("%s: not a floppy device\n"),argv[1]);
exit(1);
}
if (access(argv[1],W_OK) < 0) PERROR(argv[1]);
if ((ctrl = open(argv[1],3)) < 0) PERROR(argv[1]);
if (ioctl(ctrl,FDGETPRM,(long) &param) < 0)
- PERROR("Could not determine current format type");
- printf("%sle-sided, %d tracks, %d sec/track. Total capacity %d kB.\n",
- param.head ? "Doub" : "Sing",param.track,param.sect,param.size >> 1);
+ PERROR(_("Could not determine current format type"));
+ printf(_("%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"),
+ param.head ? _("Double") : _("Single"),param.track,param.sect,param.size >> 1);
format_disk(argv[1]);
if (verify) verify_disk(argv[1]);
return 0;
diff --git a/disk-utils/fsck.minix.c b/disk-utils/fsck.minix.c
index ba64bf34f..416c178cb 100644
--- a/disk-utils/fsck.minix.c
+++ b/disk-utils/fsck.minix.c
@@ -62,6 +62,10 @@
* 06.11.96 - Added v2 code submitted by Joerg Dorchain, but written by
* Andreas Schwab.
*
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
+ *
* I've had no time to add comments - hopefully the function names
* are comments enough. As with all file system checkers, this assumes
* the file system is quiescent - don't use it on a mounted device
@@ -95,6 +99,7 @@
#include <linux/fs.h>
#include <linux/minix_fs.h>
#include "../version.h"
+#include "nls.h"
#ifdef MINIX2_SUPER_MAGIC2
#define HAVE_MINIX2 1
@@ -189,8 +194,8 @@ void fatal_error(const char * fmt_string, int status)
exit(status);
}
-#define usage() fatal_error("Usage: %s [-larvsmf] /dev/name\n",16)
-#define die(str) fatal_error("%s: " str "\n",8)
+#define usage() fatal_error(_("Usage: %s [-larvsmf] /dev/name\n"),16)
+#define die(str) fatal_error(_("%s: " str "\n"),8)
/*
* This simply goes through the file-name data and prints out the
@@ -206,7 +211,7 @@ void print_current_name(void)
printf ("/");
}
-int ask(const char * string,int def)
+int ask(const char * string, int def)
{
int c;
@@ -280,13 +285,13 @@ static void check_mount(void)
else
close(fd);
- printf ("%s is mounted. ", device_name);
+ printf (_("%s is mounted. "), device_name);
if (isatty(0) && isatty(1))
- cont = ask("Do you really want to continue", 0);
+ cont = ask(_("Do you really want to continue"), 0);
else
cont = 0;
if (!cont) {
- printf ("check aborted.\n");
+ printf (_("check aborted.\n"));
exit (0);
}
return;
@@ -303,14 +308,14 @@ int check_zone_nr(unsigned short * nr, int * corrected)
if (!*nr)
return 0;
if (*nr < FIRSTZONE)
- printf("Zone nr < FIRSTZONE in file `");
+ printf(_("Zone nr < FIRSTZONE in file `"));
else if (*nr >= ZONES)
- printf("Zone nr >= ZONES in file `");
+ printf(_("Zone nr >= ZONES in file `"));
else
return *nr;
print_current_name();
printf("'.");
- if (ask("Remove block",1)) {
+ if (ask(_("Remove block"),1)) {
*nr = 0;
*corrected = 1;
}
@@ -323,14 +328,14 @@ int check_zone_nr2 (unsigned int *nr, int *corrected)
if (!*nr)
return 0;
if (*nr < FIRSTZONE)
- printf ("Zone nr < FIRSTZONE in file `");
+ printf (_("Zone nr < FIRSTZONE in file `"));
else if (*nr >= ZONES)
- printf ("Zone nr >= ZONES in file `");
+ printf (_("Zone nr >= ZONES in file `"));
else
return *nr;
print_current_name ();
printf ("'.");
- if (ask ("Remove block", 1)) {
+ if (ask (_("Remove block"), 1)) {
*nr = 0;
*corrected = 1;
}
@@ -348,13 +353,13 @@ void read_block(unsigned int nr, char * addr)
return;
}
if (BLOCK_SIZE*nr != lseek(IN, BLOCK_SIZE*nr, SEEK_SET)) {
- printf("Read error: unable to seek to block in file '");
+ printf(_("Read error: unable to seek to block in file '"));
print_current_name();
printf("'\n");
memset(addr,0,BLOCK_SIZE);
errors_uncorrected = 1;
} else if (BLOCK_SIZE != read(IN, addr, BLOCK_SIZE)) {
- printf("Read error: bad block in file '");
+ printf(_("Read error: bad block in file '"));
print_current_name();
printf("'\n");
memset(addr,0,BLOCK_SIZE);
@@ -370,15 +375,15 @@ void write_block(unsigned int nr, char * addr)
if (!nr)
return;
if (nr < FIRSTZONE || nr >= ZONES) {
- printf("Internal error: trying to write bad block\n"
- "Write request ignored\n");
+ printf(_("Internal error: trying to write bad block\n"
+ "Write request ignored\n"));
errors_uncorrected = 1;
return;
}
if (BLOCK_SIZE*nr != lseek(IN, BLOCK_SIZE*nr, SEEK_SET))
die("seek failed in write_block");
if (BLOCK_SIZE != write(IN, addr, BLOCK_SIZE)) {
- printf("Write error: bad block in file '");
+ printf(_("Write error: bad block in file '"));
print_current_name();
printf("'\n");
errors_uncorrected = 1;
@@ -599,18 +604,18 @@ void read_tables(void)
if (INODE_BUFFER_SIZE != read(IN,inode_buffer,INODE_BUFFER_SIZE))
die("Unable to read inodes");
if (NORM_FIRSTZONE != FIRSTZONE) {
- printf("Warning: Firstzone != Norm_firstzone\n");
+ printf(_("Warning: Firstzone != Norm_firstzone\n"));
errors_uncorrected = 1;
}
get_dirsize ();
if (show) {
- printf("%ld inodes\n",INODES);
- printf("%ld blocks\n",ZONES);
- printf("Firstdatazone=%ld (%ld)\n",FIRSTZONE,NORM_FIRSTZONE);
- printf("Zonesize=%d\n",BLOCK_SIZE<<ZONESIZE);
- printf("Maxsize=%ld\n",MAXSIZE);
- printf("Filesystem state=%d\n", Super.s_state);
- printf("namelen=%d\n\n",namelen);
+ printf(_("%ld inodes\n"),INODES);
+ printf(_("%ld blocks\n"),ZONES);
+ printf(_("Firstdatazone=%ld (%ld)\n"),FIRSTZONE,NORM_FIRSTZONE);
+ printf(_("Zonesize=%d\n"),BLOCK_SIZE<<ZONESIZE);
+ printf(_("Maxsize=%ld\n"),MAXSIZE);
+ printf(_("Filesystem state=%d\n"), Super.s_state);
+ printf(_("namelen=%d\n\n"),namelen);
}
}
@@ -624,12 +629,12 @@ struct minix_inode * get_inode(unsigned int nr)
inode = Inode + nr;
if (!inode_count[nr]) {
if (!inode_in_use(nr)) {
- printf("Inode %d marked not used, but used for file '",
+ printf(_("Inode %d marked not used, but used for file '"),
nr);
print_current_name();
printf("'\n");
if (repair) {
- if (ask("Mark in use",1))
+ if (ask(_("Mark in use"),1))
mark_inode(nr);
} else {
errors_uncorrected = 1;
@@ -651,13 +656,13 @@ struct minix_inode * get_inode(unsigned int nr)
;
else {
print_current_name();
- printf(" has mode %05o\n",inode->i_mode);
+ printf(_(" has mode %05o\n"),inode->i_mode);
}
} else
links++;
if (!++inode_count[nr]) {
- printf("Warning: inode count too big.\n");
+ printf(_("Warning: inode count too big.\n"));
inode_count[nr]--;
errors_uncorrected = 1;
}
@@ -676,11 +681,11 @@ get_inode2 (unsigned int nr)
inode = Inode2 + nr;
if (!inode_count[nr]) {
if (!inode_in_use (nr)) {
- printf ("Inode %d marked not used, but used for file '", nr);
+ printf (_("Inode %d marked not used, but used for file '"), nr);
print_current_name ();
printf ("'\n");
if (repair) {
- if (ask ("Mark in use", 1))
+ if (ask (_("Mark in use"), 1))
mark_inode (nr);
else
errors_uncorrected = 1;
@@ -700,12 +705,12 @@ get_inode2 (unsigned int nr)
else if (S_ISFIFO (inode->i_mode));
else {
print_current_name ();
- printf (" has mode %05o\n", inode->i_mode);
+ printf (_(" has mode %05o\n"), inode->i_mode);
}
} else
links++;
if (!++inode_count[nr]) {
- printf ("Warning: inode count too big.\n");
+ printf (_("Warning: inode count too big.\n"));
inode_count[nr]--;
errors_uncorrected = 1;
}
@@ -741,10 +746,10 @@ static int add_zone(unsigned short * znr, int * corrected)
if (!block)
return 0;
if (zone_count[block]) {
- printf("Block has been used before. Now in file `");
+ printf(_("Block has been used before. Now in file `"));
print_current_name();
printf("'.");
- if (ask("Clear",1)) {
+ if (ask(_("Clear"),1)) {
*znr = 0;
block = 0;
*corrected = 1;
@@ -753,10 +758,10 @@ static int add_zone(unsigned short * znr, int * corrected)
if (!block)
return 0;
if (!zone_in_use(block)) {
- printf("Block %d in file `",block);
+ printf(_("Block %d in file `"),block);
print_current_name();
- printf("' is marked not in use.");
- if (ask("Correct",1))
+ printf(_("' is marked not in use."));
+ if (ask(_("Correct"),1))
mark_zone(block);
}
if (!++zone_count[block])
@@ -775,10 +780,10 @@ static int add_zone2 (unsigned int *znr, int *corrected)
if (!block)
return 0;
if (zone_count[block]) {
- printf ("Block has been used before. Now in file `");
+ printf (_("Block has been used before. Now in file `"));
print_current_name ();
printf ("'.");
- if (ask ("Clear", 1)) {
+ if (ask (_("Clear"), 1)) {
*znr = 0;
block = 0;
*corrected = 1;
@@ -787,10 +792,10 @@ static int add_zone2 (unsigned int *znr, int *corrected)
if (!block)
return 0;
if (!zone_in_use (block)) {
- printf ("Block %d in file `", block);
+ printf (_("Block %d in file `"), block);
print_current_name ();
- printf ("' is marked not in use.");
- if (ask ("Correct", 1))
+ printf (_("' is marked not in use."));
+ if (ask (_("Correct"), 1))
mark_zone (block);
}
if (!++zone_count[block])
@@ -940,9 +945,9 @@ void check_file(struct minix_inode * dir, unsigned int offset)
ino = * (unsigned short *) (name-2);
if (ino > INODES) {
print_current_name();
- printf(" contains a bad inode number for file '");
+ printf(_(" contains a bad inode number for file '"));
printf("%.*s'.",namelen,name);
- if (ask(" Remove",1)) {
+ if (ask(_(" Remove"),1)) {
*(unsigned short *)(name-2) = 0;
write_block(block, blk);
}
@@ -956,14 +961,14 @@ void check_file(struct minix_inode * dir, unsigned int offset)
if (!offset) {
if (!inode || strcmp(".",name)) {
print_current_name();
- printf(": bad directory: '.' isn't first\n");
+ printf(_(": bad directory: '.' isn't first\n"));
errors_uncorrected = 1;
} else return;
}
if (offset == dirsize) {
if (!inode || strcmp("..",name)) {
print_current_name();
- printf(": bad directory: '..' isn't second\n");
+ printf(_(": bad directory: '..' isn't second\n"));
errors_uncorrected = 1;
} else return;
}
@@ -1004,9 +1009,9 @@ check_file2 (struct minix2_inode *dir, unsigned int offset)
ino = *(unsigned short *) (name - 2);
if (ino > INODES) {
print_current_name ();
- printf (" contains a bad inode number for file '");
+ printf (_(" contains a bad inode number for file '"));
printf ("%.*s'.", namelen, name);
- if (ask (" Remove", 1)) {
+ if (ask (_(" Remove"), 1)) {
*(unsigned short *) (name - 2) = 0;
write_block (block, blk);
}
@@ -1020,7 +1025,7 @@ check_file2 (struct minix2_inode *dir, unsigned int offset)
if (!offset) {
if (!inode || strcmp (".", name)) {
print_current_name ();
- printf (": bad directory: '.' isn't first\n");
+ printf (_(": bad directory: '.' isn't first\n"));
errors_uncorrected = 1;
} else
return;
@@ -1028,7 +1033,7 @@ check_file2 (struct minix2_inode *dir, unsigned int offset)
if (offset == dirsize) {
if (!inode || strcmp ("..", name)) {
print_current_name ();
- printf (": bad directory: '..' isn't second\n");
+ printf (_(": bad directory: '..' isn't second\n"));
errors_uncorrected = 1;
} else
return;
@@ -1063,7 +1068,7 @@ void recursive_check(unsigned int ino)
die("internal error");
if (dir->i_size < 2 * dirsize) {
print_current_name();
- printf(": bad directory: size<32");
+ printf(_(": bad directory: size<32"));
errors_uncorrected = 1;
}
for (offset = 0 ; offset < dir->i_size ; offset += dirsize)
@@ -1082,7 +1087,7 @@ recursive_check2 (unsigned int ino)
die ("internal error");
if (dir->i_size < 2 * dirsize) {
print_current_name ();
- printf (": bad directory: size < 32");
+ printf (_(": bad directory: size < 32"));
errors_uncorrected = 1;
}
for (offset = 0; offset < dir->i_size; offset += dirsize)
@@ -1105,8 +1110,8 @@ void check_counts(void)
for (i=1 ; i <= INODES ; i++) {
if (!inode_in_use(i) && Inode[i].i_mode && warn_mode) {
- printf("Inode %d mode not cleared.",i);
- if (ask("Clear",1)) {
+ printf(_("Inode %d mode not cleared."),i);
+ if (ask(_("Clear"),1)) {
Inode[i].i_mode = 0;
changed = 1;
}
@@ -1114,21 +1119,21 @@ void check_counts(void)
if (!inode_count[i]) {
if (!inode_in_use(i))
continue;
- printf("Inode %d not used, marked used in the bitmap.",i);
- if (ask("Clear",1))
+ printf(_("Inode %d not used, marked used in the bitmap."),i);
+ if (ask(_("Clear"),1))
unmark_inode(i);
continue;
}
if (!inode_in_use(i)) {
- printf("Inode %d used, marked unused in the bitmap.",
+ printf(_("Inode %d used, marked unused in the bitmap."),
i);
if (ask("Set",1))
mark_inode(i);
}
if (Inode[i].i_nlinks != inode_count[i]) {
- printf("Inode %d (mode = %07o), i_nlinks=%d, counted=%d.",
+ printf(_("Inode %d (mode = %07o), i_nlinks=%d, counted=%d."),
i,Inode[i].i_mode,Inode[i].i_nlinks,inode_count[i]);
- if (ask("Set i_nlinks to count",1)) {
+ if (ask(_("Set i_nlinks to count"),1)) {
Inode[i].i_nlinks=inode_count[i];
changed=1;
}
@@ -1140,13 +1145,13 @@ void check_counts(void)
if (!zone_count[i]) {
if (bad_zone(i))
continue;
- printf("Zone %d: marked in use, no file uses it.",i);
- if (ask("Unmark",1))
+ printf(_("Zone %d: marked in use, no file uses it."),i);
+ if (ask(_("Unmark"),1))
unmark_zone(i);
continue;
}
- printf("Zone %d: %sin use, counted=%d\n",
- i,zone_in_use(i)?"":"not ",zone_count[i]);
+ printf(_("Zone %d: %sin use, counted=%d\n"),
+ i,zone_in_use(i)?"":_("not "),zone_count[i]);
}
}
@@ -1158,8 +1163,8 @@ check_counts2 (void)
for (i = 1; i <= INODES; i++) {
if (!inode_in_use (i) && Inode2[i].i_mode && warn_mode) {
- printf ("Inode %d mode not cleared.", i);
- if (ask ("Clear", 1)) {
+ printf (_("Inode %d mode not cleared."), i);
+ if (ask (_("Clear"), 1)) {
Inode2[i].i_mode = 0;
changed = 1;
}
@@ -1167,20 +1172,20 @@ check_counts2 (void)
if (!inode_count[i]) {
if (!inode_in_use (i))
continue;
- printf ("Inode %d not used, marked used in the bitmap.", i);
- if (ask ("Clear", 1))
+ printf (_("Inode %d not used, marked used in the bitmap."), i);
+ if (ask (_("Clear"), 1))
unmark_inode (i);
continue;
}
if (!inode_in_use (i)) {
- printf ("Inode %d used, marked unused in the bitmap.", i);
- if (ask ("Set", 1))
+ printf (_("Inode %d used, marked unused in the bitmap."), i);
+ if (ask (_("Set"), 1))
mark_inode (i);
}
if (Inode2[i].i_nlinks != inode_count[i]) {
- printf ("Inode %d (mode = %07o), i_nlinks=%d, counted=%d.",
+ printf (_("Inode %d (mode = %07o), i_nlinks=%d, counted=%d."),
i, Inode2[i].i_mode, Inode2[i].i_nlinks, inode_count[i]);
- if (ask ("Set i_nlinks to count", 1)) {
+ if (ask (_("Set i_nlinks to count"), 1)) {
Inode2[i].i_nlinks = inode_count[i];
changed = 1;
}
@@ -1192,13 +1197,13 @@ check_counts2 (void)
if (!zone_count[i]) {
if (bad_zone (i))
continue;
- printf ("Zone %d: marked in use, no file uses it.", i);
- if (ask ("Unmark", 1))
+ printf (_("Zone %d: marked in use, no file uses it."), i);
+ if (ask (_("Unmark"), 1))
unmark_zone (i);
continue;
}
- printf ("Zone %d: %sin use, counted=%d\n",
- i, zone_in_use (i) ? "" : "not ", zone_count[i]);
+ printf (_("Zone %d: %sin use, counted=%d\n"),
+ i, zone_in_use (i) ? "" : _("not "), zone_count[i]);
}
}
#endif
@@ -1230,6 +1235,11 @@ int main(int argc, char ** argv)
int count;
int retcode = 0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+
if (argc && *argv)
program_name = *argv;
if (INODE_SIZE * MINIX_INODES_PER_BLOCK != BLOCK_SIZE)
@@ -1283,13 +1293,13 @@ int main(int argc, char ** argv)
(Super.s_state & MINIX_VALID_FS) &&
!force ) {
if (repair)
- printf("%s is clean, no check.\n", device_name);
+ printf(_("%s is clean, no check.\n"), device_name);
return retcode;
}
else if (force)
- printf("Forcing filesystem check on %s.\n", device_name);
+ printf(_("Forcing filesystem check on %s.\n"), device_name);
else if (repair)
- printf("Filesystem on %s is dirty, needs checking.\n",\
+ printf(_("Filesystem on %s is dirty, needs checking.\n"),\
device_name);
read_tables();
@@ -1318,29 +1328,29 @@ int main(int argc, char ** argv)
for (i=1,free=0 ; i <= INODES ; i++)
if (!inode_in_use(i))
free++;
- printf("\n%6ld inodes used (%ld%%)\n",(INODES-free),
+ printf(_("\n%6ld inodes used (%ld%%)\n"),(INODES-free),
100*(INODES-free)/INODES);
for (i=FIRSTZONE,free=0 ; i < ZONES ; i++)
if (!zone_in_use(i))
free++;
- printf("%6ld zones used (%ld%%)\n",(ZONES-free),
+ printf(_("%6ld zones used (%ld%%)\n"),(ZONES-free),
100*(ZONES-free)/ZONES);
- printf("\n%6d regular files\n"
+ printf(_("\n%6d regular files\n"
"%6d directories\n"
"%6d character device files\n"
"%6d block device files\n"
"%6d links\n"
"%6d symbolic links\n"
"------\n"
- "%6d files\n",
+ "%6d files\n"),
regular,directory,chardev,blockdev,
links-2*directory+1,symlinks,total-2*directory+1);
}
if (changed) {
write_tables();
- printf( "----------------------------\n"
+ printf(_( "----------------------------\n"
"FILE SYSTEM HAS BEEN CHANGED\n"
- "----------------------------\n");
+ "----------------------------\n"));
for (count=0 ; count<3 ; count++)
sync();
}
diff --git a/disk-utils/mkfs.8 b/disk-utils/mkfs.8
index 2dd616484..260b4e099 100644
--- a/disk-utils/mkfs.8
+++ b/disk-utils/mkfs.8
@@ -23,8 +23,14 @@ mkfs \- build a Linux file system
is used to build a Linux file system on a device, usually
a hard disk partition.
.I filesys
-is either the device name (e.g. /dev/hda1, /dev/sdb2) or
-the mount point (e.g. /, /usr, /home) for the file system.
+is either the device name (e.g.
+.IR /dev/hda1 ,
+.IR /dev/sdb2 )
+or the mount point (e.g.
+.IR / ,
+.IR /usr ,
+.IR /home )
+for the file system.
.I blocks
is the number of blocks to be used for the file system.
.PP
@@ -38,9 +44,18 @@ is simply a front-end for the various file system builders
(\fBmkfs\fR.\fIfstype\fR)
available under Linux.
The file system-specific builder is searched for in a number
-of directories like /sbin, /sbin/fs, /sbin/fs.d, /etc/fs, /etc
+of directories like perhaps
+.IR /sbin ,
+.IR /sbin/fs ,
+.IR /sbin/fs.d ,
+.IR /etc/fs ,
+.I /etc
(the precise list is defined at compile time but at least
-contains /sbin and /sbin/fs), and finally in the directories
+contains
+.I /sbin
+and
+.IR /sbin/fs ),
+and finally in the directories
listed in the PATH enviroment variable.
Please see the file system-specific builder manual pages for
further details.
@@ -93,8 +108,12 @@ Ron Sommeling (sommel@sci.kun.nl)
The manual page was shamelessly adapted from Remy Card's version
for the ext2 file system.
.SH SEE ALSO
+.BR fs (5),
+.BR badblocks (8),
.BR fsck (8),
-.BR mkfs.minix (8),
-.BR mkfs.ext (8),
+.BR mkdosfs (8),
+.BR mke2fs (8),
.BR mkfs.ext2 (8),
-.BR mkfs.xiafs (8).
+.BR mkfs.minix (8),
+.BR mkfs.msdos (8),
+.BR mkfs.xiafs (8)
diff --git a/disk-utils/mkfs.c b/disk-utils/mkfs.c
index ba293e939..9ea27a504 100644
--- a/disk-utils/mkfs.c
+++ b/disk-utils/mkfs.c
@@ -10,6 +10,9 @@
*
* Mon Jul 1 18:52:58 1996: janl@math.uio.no (Nicolai Langfeldt):
* Incorporated fix by Jonathan Kamens <jik@annex-1-slip-jik.cam.ov.com>
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
@@ -19,9 +22,10 @@
#include <string.h>
#include <getopt.h>
#include <limits.h>
+#include "nls.h"
-
-#define VERSION "1.10"
+#include "../version.h"
+#define VERSION UTIL_LINUX_VERSION
#ifndef DEFAULT_FSTYPE
# define DEFAULT_FSTYPE "ext2"
@@ -38,6 +42,10 @@ int main(int argc, char *argv[])
int i, more = 0, verbose = 0;
char *oldpath, *newpath;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
/* Check commandline options. */
opterr = 0;
while ((more == 0) && ((i = getopt(argc, argv, "Vt:")) != EOF))
@@ -55,7 +63,7 @@ int main(int argc, char *argv[])
}
if (optind == argc) {
fprintf(stderr,
- "Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n");
+ _("Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n"));
return -1;
}
@@ -69,7 +77,7 @@ int main(int argc, char *argv[])
oldpath = "/bin";
newpath = (char *) malloc(strlen(oldpath) + sizeof(SEARCH_PATH) + 2);
if (!newpath) {
- fputs("mkfs: out of memory\n", stderr);
+ fprintf(stderr, _("%s: Out of memory!\n"), "mkfs");
exit(1);
}
sprintf(newpath, "%s:%s\n", SEARCH_PATH, oldpath);
@@ -78,7 +86,7 @@ int main(int argc, char *argv[])
argv[--optind] = progname;
if (verbose) {
- puts("mkfs version " VERSION " (" __DATE__ ")");
+ puts(_("mkfs version " VERSION " (" __DATE__ ")"));
i = optind;
while (argv[i])
printf("%s ", argv[i++]);
diff --git a/disk-utils/mkfs.minix.8 b/disk-utils/mkfs.minix.8
index 9ff75321a..6a9c7931c 100644
--- a/disk-utils/mkfs.minix.8
+++ b/disk-utils/mkfs.minix.8
@@ -48,11 +48,8 @@ Check the device for bad blocks before creating the file system. If any
are found, the count is printed.
.TP
.BI \-n " namelength"
-Specify the maximum length of filenames. No space is allowed between the
-.B \-n
-and the
-.IR namelength. Currently, the only allowable
-values are 14 and 30.
+Specify the maximum length of filenames.
+Currently, the only allowable values are 14 and 30.
.B 30 is the default.
.TP
.BI \-i " inodecount"
@@ -77,9 +74,10 @@ Operational error
.IP 16
Usage or syntax error
.SH "SEE ALSO"
+.BR mkfs (8),
.BR fsck (8),
-.BR mkefs (8),
-.BR efsck (8),
+.BR mke2fs (8),
+.BR e2fsck (8),
.BR reboot (8)
.\" .SH AUTHORS
.\" Linus Torvalds (torvalds@cs.helsinki.fi).
diff --git a/disk-utils/mkfs.minix.c b/disk-utils/mkfs.minix.c
index c34da5326..b05960b23 100644
--- a/disk-utils/mkfs.minix.c
+++ b/disk-utils/mkfs.minix.c
@@ -70,10 +70,14 @@
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <mntent.h>
+#include <getopt.h>
#include <linux/fs.h>
#include <linux/minix_fs.h>
+#include "nls.h"
+#include "../version.h"
+
#ifdef MINIX2_SUPER_MAGIC2
#define HAVE_MINIX2 1
#endif
@@ -170,8 +174,19 @@ volatile void fatal_error(const char * fmt_string,int status)
exit(status);
}
-#define usage() fatal_error("Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n",16)
-#define die(str) fatal_error("%s: " str "\n",8)
+volatile void die(char *str) {
+ fprintf(stderr, "%s: %s\n", program_name, str);
+ exit(8);
+}
+
+volatile void usage()
+{
+ fprintf(stderr, "%s (%s)\n", program_name, util_linux_version);
+ fprintf(stderr,
+ _("Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"),
+ program_name);
+ exit(16);
+}
/*
* Check to make certain that our new filesystem won't be created on
@@ -192,7 +207,7 @@ static void check_mount(void)
if (!mnt)
return;
- die("%s is mounted; will not make a filesystem here!");
+ die(_("%s is mounted; will not make a filesystem here!"));
}
static long valid_offset (int fd, int offset)
@@ -229,7 +244,7 @@ static int count_blocks (int fd)
static int get_size(const char *file)
{
int fd;
- int size;
+ long size;
fd = open(file, O_RDWR);
if (fd < 0) {
@@ -253,28 +268,28 @@ void write_tables(void)
Super.s_state &= ~MINIX_ERROR_FS;
if (lseek(DEV, 0, SEEK_SET))
- die("seek to boot block failed in write_tables");
+ die(_("seek to boot block failed in write_tables"));
if (512 != write(DEV, boot_block_buffer, 512))
- die("unable to clear boot sector");
+ die(_("unable to clear boot sector"));
if (BLOCK_SIZE != lseek(DEV, BLOCK_SIZE, SEEK_SET))
- die("seek failed in write_tables");
+ die(_("seek failed in write_tables"));
if (BLOCK_SIZE != write(DEV, super_block_buffer, BLOCK_SIZE))
- die("unable to write super-block");
+ die(_("unable to write super-block"));
if (IMAPS*BLOCK_SIZE != write(DEV,inode_map,IMAPS*BLOCK_SIZE))
- die("unable to write inode map");
+ die(_("unable to write inode map"));
if (ZMAPS*BLOCK_SIZE != write(DEV,zone_map,ZMAPS*BLOCK_SIZE))
- die("unable to write zone map");
+ die(_("unable to write zone map"));
if (INODE_BUFFER_SIZE != write(DEV,inode_buffer,INODE_BUFFER_SIZE))
- die("unable to write inodes");
+ die(_("unable to write inodes"));
}
void write_block(int blk, char * buffer)
{
if (blk*BLOCK_SIZE != lseek(DEV, blk*BLOCK_SIZE, SEEK_SET))
- die("seek failed in write_block");
+ die(_("seek failed in write_block"));
if (BLOCK_SIZE != write(DEV, buffer, BLOCK_SIZE))
- die("write failed in write_block");
+ die(_("write failed in write_block"));
}
int get_free_block(void)
@@ -282,7 +297,7 @@ int get_free_block(void)
int blk;
if (used_good_blocks+1 >= MAX_GOOD_BLOCKS)
- die("too many bad blocks");
+ die(_("too many bad blocks"));
if (used_good_blocks)
blk = good_blocks_table[used_good_blocks-1]+1;
else
@@ -290,7 +305,7 @@ int get_free_block(void)
while (blk < ZONES && zone_in_use(blk))
blk++;
if (blk >= ZONES)
- die("not enough good blocks");
+ die(_("not enough good blocks"));
good_blocks_table[used_good_blocks] = blk;
used_good_blocks++;
return blk;
@@ -356,7 +371,7 @@ void make_bad_inode(void)
goto end_bad;
}
}
- die("too many bad blocks");
+ die(_("too many bad blocks"));
end_bad:
if (ind)
write_block(ind, (char *) ind_block);
@@ -407,7 +422,7 @@ make_bad_inode2 (void)
}
}
/* Could make triple indirect block here */
- die ("too many bad blocks");
+ die (_("too many bad blocks"));
end_bad:
if (ind)
write_block (ind, (char *) ind_block);
@@ -499,7 +514,7 @@ void setup_tables(void)
inode_map = malloc(IMAPS * BLOCK_SIZE);
zone_map = malloc(ZMAPS * BLOCK_SIZE);
if (!inode_map || !zone_map)
- die("unable to allocate buffers for maps");
+ die(_("unable to allocate buffers for maps"));
memset(inode_map,0xff,IMAPS * BLOCK_SIZE);
memset(zone_map,0xff,ZMAPS * BLOCK_SIZE);
for (i = FIRSTZONE ; i<ZONES ; i++)
@@ -508,13 +523,13 @@ void setup_tables(void)
unmark_inode(i);
inode_buffer = malloc(INODE_BUFFER_SIZE);
if (!inode_buffer)
- die("unable to allocate buffer for inodes");
+ die(_("unable to allocate buffer for inodes"));
memset(inode_buffer,0,INODE_BUFFER_SIZE);
- printf("%ld inodes\n",INODES);
- printf("%ld blocks\n",ZONES);
- printf("Firstdatazone=%ld (%ld)\n",FIRSTZONE,NORM_FIRSTZONE);
- printf("Zonesize=%d\n",BLOCK_SIZE<<ZONESIZE);
- printf("Maxsize=%ld\n\n",MAXSIZE);
+ printf(_("%ld inodes\n"),INODES);
+ printf(_("%ld blocks\n"),ZONES);
+ printf(_("Firstdatazone=%ld (%ld)\n"),FIRSTZONE,NORM_FIRSTZONE);
+ printf(_("Zonesize=%d\n"),BLOCK_SIZE<<ZONESIZE);
+ printf(_("Maxsize=%ld\n\n"),MAXSIZE);
}
/*
@@ -528,7 +543,7 @@ long do_check(char * buffer, int try, unsigned int current_block)
/* Seek to the correct loc. */
if (lseek(DEV, current_block * BLOCK_SIZE, SEEK_SET) !=
current_block * BLOCK_SIZE ) {
- die("seek failed during testing of blocks");
+ die(_("seek failed during testing of blocks"));
}
@@ -536,7 +551,7 @@ long do_check(char * buffer, int try, unsigned int current_block)
got = read(DEV, buffer, try * BLOCK_SIZE);
if (got < 0) got = 0;
if (got & (BLOCK_SIZE - 1 )) {
- printf("Weird values in do_check: probably bugs\n");
+ printf(_("Weird values in do_check: probably bugs\n"));
}
got /= BLOCK_SIZE;
return got;
@@ -567,7 +582,7 @@ void check_blocks(void)
while (currently_testing < ZONES) {
if (lseek(DEV,currently_testing*BLOCK_SIZE,SEEK_SET) !=
currently_testing*BLOCK_SIZE)
- die("seek failed in check_blocks");
+ die(_("seek failed in check_blocks"));
try = TEST_BUFFER_BLOCKS;
if (currently_testing + try > ZONES)
try = ZONES-currently_testing;
@@ -576,13 +591,15 @@ void check_blocks(void)
if (got == try)
continue;
if (currently_testing < FIRSTZONE)
- die("bad blocks before data-area: cannot make fs");
+ die(_("bad blocks before data-area: cannot make fs"));
mark_zone(currently_testing);
badblocks++;
currently_testing++;
}
- if (badblocks)
- printf("%d bad block%s\n",badblocks,(badblocks>1)?"s":"");
+ if (badblocks > 1)
+ printf(_("%d bad blocks\n"), badblocks);
+ else if (badblocks == 1)
+ printf(_("one bad block\n"));
}
void get_list_blocks(filename)
@@ -594,20 +611,20 @@ char *filename;
listfile=fopen(filename,"r");
if(listfile == (FILE *)NULL) {
- die("can't open file of bad blocks");
+ die(_("can't open file of bad blocks"));
}
while(!feof(listfile)) {
fscanf(listfile,"%ld\n", &blockno);
mark_zone(blockno);
badblocks++;
}
- if(badblocks) {
- printf("%d bad block%s\n", badblocks, (badblocks>1)?"s":"");
- }
+ if(badblocks > 1)
+ printf(_("%d bad blocks\n"), badblocks);
+ else if (badblocks == 1)
+ printf(_("one bad block\n"));
}
int main(int argc, char ** argv)
-
{
int i;
char * tmp;
@@ -617,66 +634,59 @@ int main(int argc, char ** argv)
if (argc && *argv)
program_name = *argv;
if (INODE_SIZE * MINIX_INODES_PER_BLOCK != BLOCK_SIZE)
- die("bad inode size");
+ die(_("bad inode size"));
#ifdef HAVE_MINIX2
if (INODE_SIZE2 * MINIX2_INODES_PER_BLOCK != BLOCK_SIZE)
- die("bad inode size");
+ die(_("bad inode size"));
#endif
- while (argc-- > 1) {
- argv++;
- if (argv[0][0] != '-') {
- if (device_name) {
- BLOCKS = strtol(argv[0],&tmp,0);
- if (*tmp) {
- printf("strtol error: number of"
- " blocks not specified");
+ opterr = 0;
+ while ((i = getopt(argc, argv, "ci:l:n:v")) != EOF)
+ switch (i) {
+ case 'c':
+ check=1; break;
+ case 'i':
+ req_nr_inodes = (unsigned long) atol(optarg);
+ break;
+ case 'l':
+ listfile = optarg; break;
+ case 'n':
+ i = strtoul(optarg,&tmp,0);
+ if (*tmp)
usage();
- }
- } else
- device_name = argv[0];
- } else {
- if(argv[0][1] == 'l') {
- listfile = argv[1];
- argv++;
- if (!(argc--))
+ if (i == 14)
+ magic = MINIX_SUPER_MAGIC;
+ else if (i == 30)
+ magic = MINIX_SUPER_MAGIC2;
+ else
usage();
- } else {
- if(argv[0][1] == 'i') {
- req_nr_inodes
- = (unsigned long)atol(argv[1]);
- argv++;
- if (!(argc--))
- usage();
- } else while (*(++argv[0])) {
- switch (argv[0][0]) {
- case 'c': check=1; break;
- case 'n':
- i = strtoul(argv[0]+1,&tmp,0);
- if (*tmp)
- usage();
- argv[0][1] = '\0';
- if (i == 14)
- magic = MINIX_SUPER_MAGIC;
- else if (i == 30)
- magic = MINIX_SUPER_MAGIC2;
- else
- usage();
- namelen = i;
- dirsize = i+2;
- break;
- case 'v':
+ namelen = i;
+ dirsize = i+2;
+ break;
+ case 'v':
#ifdef HAVE_MINIX2
- version2 = 1;
+ version2 = 1;
#else
- fatal_error("%s: not compiled with minix v2 support\n",-1);
+ fatal_error(_("%s: not compiled with minix v2 support\n"),-1);
#endif
- break;
- default: usage();
- }
- }
- }
+ break;
+ default:
+ usage();
}
+ argc -= optind;
+ argv += optind;
+ if (argc > 0 && !device_name) {
+ device_name = argv[0];
+ argc--;
+ argv++;
+ }
+ if (argc > 0) {
+ BLOCKS = strtol(argv[0],&tmp,0);
+ if (*tmp) {
+ printf(_("strtol error: number of blocks not specified"));
+ usage();
+ }
}
+
if (device_name && !BLOCKS)
BLOCKS = get_size (device_name) / 1024;
if (!device_name || BLOCKS<10) {
@@ -704,13 +714,13 @@ int main(int argc, char ** argv)
strcpy(tmp+2,".badblocks");
DEV = open(device_name,O_RDWR );
if (DEV<0)
- die("unable to open %s");
+ die(_("unable to open %s"));
if (fstat(DEV,&statbuf)<0)
- die("unable to stat %s");
+ die(_("unable to stat %s"));
if (!S_ISBLK(statbuf.st_mode))
check=0;
else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340)
- die("will not try to make filesystem on '%s'");
+ die(_("will not try to make filesystem on '%s'"));
setup_tables();
if (check)
check_blocks();
diff --git a/disk-utils/mkswap.8 b/disk-utils/mkswap.8
index 2df606c57..c16a89380 100644
--- a/disk-utils/mkswap.8
+++ b/disk-utils/mkswap.8
@@ -3,7 +3,7 @@
.\" May be distributed under the GNU General Public License
.\" Rewritten for 2.1.117, aeb, 981010.
.\"
-.TH MKSWAP 8 "1 December 1998" "Linux 2.1.117" "Linux Programmer's Manual"
+.TH MKSWAP 8 "25 March 1999" "Linux 2.2.4" "Linux Programmer's Manual"
.SH NAME
mkswap \- set up a Linux swap area
.SH SYNOPSIS
@@ -36,7 +36,8 @@ The
parameter is superfluous but retained for backwards compatibility.
(It specifies the desired size of the swap area in 1024-byte blocks.
.B mkswap
-will use the entire partition or file if it is omitted.)
+will use the entire partition or file if it is omitted.
+Specifying it is unwise - a typo may destroy your disk.)
Linux knows about two styles of swap areas, old style and new style.
The last 10 bytes of the first page of the swap area distinguishes
@@ -61,8 +62,9 @@ while the bad blocks, if any, can simply be listed. Nobody wants
to use a swap space with hundreds of bad blocks. (I would not even
use a swap space with 1 bad block.)
In the new style swap area this is precisely what is done.
-The maximum useful size of a swap area is now (2^31 - 2*S) bytes,
-roughly 2 GB.
+The maximum useful size of a swap area now depends on the architecture.
+It is roughly 2GB on i386, PPC, m68k, ARM, 1GB on sparc, 512MB on mips,
+128GB on alpha and 3TB on sparc64.
Note that before 2.1.117 the kernel allocated one byte for each page,
while it now allocates two bytes, so that taking a swap area of 2 GB
@@ -103,6 +105,9 @@ before creating the swap area.
If any are found, the count is printed.
.TP
.B \-f
+Force - go ahead even if the command is stupid.
+This allows the creation of a swap area larger than the file
+or partition it resides on.
On SPARC, force creation of the swap area.
Without this option
.B mkswap
diff --git a/disk-utils/mkswap.c b/disk-utils/mkswap.c
index b3402366c..ef5f58c11 100644
--- a/disk-utils/mkswap.c
+++ b/disk-utils/mkswap.c
@@ -8,7 +8,7 @@
/*
* 20.12.91 - time began. Got VM working yesterday by doing this by hand.
*
- * Usuage: mkswap [-c] [-vN] [-f] device [size-in-blocks]
+ * Usage: mkswap [-c] [-vN] [-f] device [size-in-blocks]
*
* -c for readability checking. (Use it unless you are SURE!)
* -vN for swap areas version N. (Only N=0,1 known today.)
@@ -23,6 +23,11 @@
* Version 1 swap area code (for kernel 2.1.117), aeb, 981010.
*
* Sparc fixes, jj@ultra.linux.cz (Jakub Jelinek), 981201 - mangled by aeb.
+ * V1_MAX_PAGES fixes, jj, 990325.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <stdio.h>
@@ -34,6 +39,8 @@
#include <sys/utsname.h>
#include <sys/stat.h>
#include <asm/page.h> /* for PAGE_SIZE and PAGE_SHIFT */
+ /* we also get PAGE_SIZE via getpagesize() */
+#include "nls.h"
#ifndef _IO
/* pre-1.3.45 */
@@ -91,7 +98,7 @@ init_signature_page() {
#ifdef PAGE_SIZE
if (pagesize != PAGE_SIZE)
- fprintf(stderr, "Assuming pages of size %d\n", pagesize);
+ fprintf(stderr, _("Assuming pages of size %d\n"), pagesize);
#endif
signature_page = (int *) malloc(pagesize);
memset(signature_page,0,pagesize);
@@ -106,7 +113,48 @@ write_signature(char *sig) {
}
#define V0_MAX_PAGES (8 * (pagesize - 10))
-#define V1_MAX_PAGES ((0x7fffffff / pagesize) - 1)
+/* Before 2.2.0pre9 */
+#define V1_OLD_MAX_PAGES ((0x7fffffff / pagesize) - 1)
+/* Since 2.2.0pre9:
+ error if nr of pages >= SWP_OFFSET(SWP_ENTRY(0,~0UL))
+ with variations on
+ #define SWP_ENTRY(type,offset) (((type) << 1) | ((offset) << 8))
+ #define SWP_OFFSET(entry) ((entry) >> 8)
+ on the various architectures. Below the result - yuk.
+
+ Machine pagesize SWP_ENTRY SWP_OFFSET bound+1 oldbound+2
+ i386 2^12 o<<8 e>>8 1<<24 1<<19
+ mips 2^12 o<<15 e>>15 1<<17 1<<19
+ alpha 2^13 o<<40 e>>40 1<<24 1<<18
+ m68k 2^12 o<<12 e>>12 1<<20 1<<19
+ sparc 2^{12,13} (o&0x3ffff)<<9 (e>>9)&0x3ffff 1<<18 1<<{19,18}
+ sparc64 2^13 o<<13 e>>13 1<<51 1<<18
+ ppc 2^12 o<<8 e>>8 1<<24 1<<19
+ armo 2^{13,14,15} o<<8 e>>8 1<<24 1<<{18,17,16}
+ armv 2^12 o<<9 e>>9 1<<23 1<<19
+
+ assuming that longs have 64 bits on alpha and sparc64 and 32 bits elsewhere.
+
+ The bad part is that we need to know this since the kernel will
+ refuse a swap space if it is too large.
+*/
+/* patch from jj - why does this differ from the above? */
+#if defined(__alpha__)
+#define V1_MAX_PAGES ((1 << 24) - 1)
+#elif defined(__mips__)
+#define V1_MAX_PAGES ((1 << 17) - 1)
+#elif defined(__sparc_v9__)
+#define V1_MAX_PAGES ((3 << 29) - 1)
+#elif defined(__sparc__)
+#define V1_MAX_PAGES (pagesize == 8192 ? ((3 << 29) - 1) : ((1 << 18) - 1))
+#else
+#define V1_MAX_PAGES V1_OLD_MAX_PAGES
+#endif
+/* man page now says:
+The maximum useful size of a swap area now depends on the architecture.
+It is roughly 2GB on i386, PPC, m68k, ARM, 1GB on sparc, 512MB on mips,
+128GB on alpha and 3TB on sparc64.
+*/
#define MAX_BADPAGES ((pagesize-1024-128*sizeof(int)-10)/sizeof(int))
@@ -137,8 +185,8 @@ void fatal_error(const char * fmt_string)
exit(1);
}
-#define usage() fatal_error("Usage: %s [-c] [-v0|-v1] /dev/name [blocks]\n")
-#define die(str) fatal_error("%s: " str "\n")
+#define usage() fatal_error(_("Usage: %s [-c] [-v0|-v1] /dev/name [blocks]\n"))
+#define die(str) fatal_error(_("%s: " str "\n"))
void
page_ok(int page) {
@@ -182,8 +230,10 @@ check_blocks(void) {
}
page_ok(current_page++);
}
- if (badpages)
- printf("%d bad page%s\n",badpages,(badpages>1)?"s":"");
+ if (badpages == 1)
+ printf(_("one bad page\n"));
+ else if (badpages > 1)
+ printf(_("%d bad pages\n"), badpages);
}
static long valid_offset (int fd, int offset)
@@ -218,11 +268,11 @@ find_size (int fd)
}
/* return size in pages, to avoid integer overflow */
-static int
+static long
get_size(const char *file)
{
int fd;
- int size;
+ long size;
fd = open(file, O_RDONLY);
if (fd < 0) {
@@ -243,11 +293,17 @@ int main(int argc, char ** argv)
{
char * tmp;
struct stat statbuf;
+ int sz;
int maxpages;
int goodpages;
int offset;
int force = 0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+
if (argc && *argv)
program_name = *argv;
@@ -281,12 +337,20 @@ int main(int argc, char ** argv)
}
if (!device_name) {
fprintf(stderr,
- "%s: error: Nowhere to set up swap on?\n",
+ _("%s: error: Nowhere to set up swap on?\n"),
program_name);
usage();
}
+ sz = get_size(device_name);
if (!PAGES) {
- PAGES = get_size(device_name);
+ PAGES = sz;
+ } else if (PAGES > sz && !force) {
+ fprintf(stderr,
+ _("%s: error: "
+ "size %ld is larger than device size %d\n"),
+ program_name,
+ PAGES*(pagesize/1024), sz*(pagesize/1024));
+ exit(1);
}
if (version == -1) {
@@ -300,20 +364,32 @@ int main(int argc, char ** argv)
version = 1;
}
if (version != 0 && version != 1) {
- fprintf(stderr, "%s: error: unknown version %d\n",
+ fprintf(stderr, _("%s: error: unknown version %d\n"),
program_name, version);
usage();
}
if (PAGES < 10) {
fprintf(stderr,
- "%s: error: swap area needs to be at least %ldkB\n",
+ _("%s: error: swap area needs to be at least %ldkB\n"),
program_name, (long)(10 * pagesize / 1024));
usage();
}
+#if 0
maxpages = ((version == 0) ? V0_MAX_PAGES : V1_MAX_PAGES);
+#else
+ if (!version)
+ maxpages = V0_MAX_PAGES;
+ else if (linux_version_code() >= MAKE_VERSION(2,2,1))
+ maxpages = V1_MAX_PAGES;
+ else {
+ maxpages = V1_OLD_MAX_PAGES;
+ if (maxpages > V1_MAX_PAGES)
+ maxpages = V1_MAX_PAGES;
+ }
+#endif
if (PAGES > maxpages) {
PAGES = maxpages;
- fprintf(stderr, "%s: warning: truncating swap area to %ldkB\n",
+ fprintf(stderr, _("%s: warning: truncating swap area to %ldkB\n"),
program_name, PAGES * pagesize / 1024);
}
@@ -340,11 +416,11 @@ int main(int argc, char ** argv)
for (sum = 0; q >= (unsigned short *) buffer;)
sum ^= *q--;
if (!sum) {
- fprintf(stderr, "\
+ fprintf(stderr, _("\
%s: Device '%s' contains a valid Sun disklabel.\n\
This probably means creating v0 swap would destroy your partition table\n\
No swap created. If you really want to create swap v0 on that device, use\n\
-the -f option to force it.\n",
+the -f option to force it.\n"),
program_name, device_name);
exit(1);
}
@@ -365,7 +441,7 @@ the -f option to force it.\n",
goodpages = PAGES - badpages - 1;
if (goodpages <= 0)
die("Unable to set up swap-space: unreadable");
- printf("Setting up swapspace version %d, size = %ld bytes\n",
+ printf(_("Setting up swapspace version %d, size = %ld bytes\n"),
version, (long)(goodpages*pagesize));
write_signature((version == 0) ? "SWAP-SPACE" : "SWAPSPACE2");
diff --git a/disk-utils/setfdprm.c b/disk-utils/setfdprm.c
index 62234f3ac..7c2b0dc36 100644
--- a/disk-utils/setfdprm.c
+++ b/disk-utils/setfdprm.c
@@ -1,6 +1,10 @@
/* setfdprm.c - Sets user-provided floppy disk parameters, re-activates
autodetection and switches diagnostic messages. */
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
@@ -10,6 +14,7 @@
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <linux/fd.h>
+#include "nls.h"
#define FDPRMFILE "/etc/fdprm"
#define MAXLINE 200
@@ -22,7 +27,7 @@ static int convert(char *arg)
result = strtol(arg,&end,0);
if (!*end) return (int) result;
- fprintf(stderr,"Invalid number: %s\n",arg);
+ fprintf(stderr,_("Invalid number: %s\n"),arg);
exit(1);
}
@@ -72,7 +77,7 @@ static void find_params(int cmd,int fd,char *name)
if (sscanf(start,"%s %s %s %s %s %s %s %s %s %s",this,param[0],
param[1],param[2],param[3],param[4],param[5],param[6],param[7],
param[8]) != 10) {
- fprintf(stderr,"Syntax error: '%s'\n",line);
+ fprintf(stderr,_("Syntax error: '%s'\n"),line);
exit(1);
}
if (!strcmp(this,name)) {
@@ -82,7 +87,7 @@ static void find_params(int cmd,int fd,char *name)
}
}
}
- fprintf(stderr,"No such parameter set: '%s'\n",name);
+ fprintf(stderr,_("No such parameter set: '%s'\n"),name);
exit(1);
}
@@ -92,13 +97,13 @@ static void usage(char *name)
char *this;
if ((this = strrchr(name,'/')) != NULL) name = this+1;
- fprintf(stderr,"usage: %s [ -p ] dev name\n",name);
- fprintf(stderr," %s [ -p ] dev size sect heads tracks stretch \
-gap rate spec1 fmt_gap\n",name);
+ fprintf(stderr,_("usage: %s [ -p ] dev name\n"),name);
+ fprintf(stderr,_(" %s [ -p ] dev size sect heads tracks stretch \
+gap rate spec1 fmt_gap\n"),name);
#ifdef FDMEDCNG
- fprintf(stderr," %s [ -c | -y | -n | -d ] dev\n",name);
+ fprintf(stderr,_(" %s [ -c | -y | -n | -d ] dev\n"),name);
#else
- fprintf(stderr," %s [ -c | -y | -n ] dev\n",name);
+ fprintf(stderr,_(" %s [ -c | -y | -n ] dev\n"),name);
#endif
exit(1);
}
@@ -110,6 +115,10 @@ main(int argc,char **argv)
unsigned int cmd;
char *name;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
name = argv[0];
if (argc < 3) usage(name);
cmd = FDSETPRM;
diff --git a/fdisk/Makefile b/fdisk/Makefile
index e5415acdc..873b2850d 100644
--- a/fdisk/Makefile
+++ b/fdisk/Makefile
@@ -3,24 +3,33 @@
# Revised: Fri Oct 6 21:02:21 1995 by r.faith@ieee.org
# Copyright 1992, 1993, 1994, 1995 Rickard E. Faith (faith@cs.unc.edu)
#
-
+include ../make_include
include ../MCONFIG
MAN8=
SBIN=
+CFDISK=cfdisk
+NOTMADE=
-ifneq "$(CPU)" "sparc"
-# fsck and mkfs will compile, but there is no kernel support on sparc
-ifneq "$(CPU)" "m68k"
-MAN8:=$(MAN8) fdisk.8 cfdisk.8 sfdisk.8
-SBIN:=$(SBIN) fdisk cfdisk sfdisk
+ifneq "$(HAVE_SLANG)" "yes"
+ifneq "$(HAVE_NCURSES)" "yes"
+CFDISK=
+NOTMADE=cfdisk
endif
+endif
+
+ifeq "$(CPU)" "m68k"
+# It seems the m68k people do not want *fdisk
else
-MAN8:=$(MAN8) fdisk.8
SBIN:=$(SBIN) fdisk
+MAN8:=$(MAN8) fdisk.8
+ifneq "$(CPU)" "sparc"
+SBIN:=$(SBIN) $(CFDISK) sfdisk
+MAN8:=$(MAN8) cfdisk.8 sfdisk.8
+endif
endif
-all: $(SBIN)
+all: $(SBIN) $(NOTMADE)
cfdisk.o: cfdisk.c
ifeq "$(HAVE_SLANG)" "yes"
@@ -33,12 +42,12 @@ else
endif
endif
-cfdisk: cfdisk.o llseek.o
+cfdisk: cfdisk.o llseek.o i386_sys_types.o
ifeq "$(HAVE_SLANG)" "yes"
$(CC) $(LDFLAGS) $^ -o $@ $(LIBSLANG)
else
ifeq "$(HAVE_NCURSES)" "yes"
- $(CC) $(LDFLAGS) $^ -o $@ $(LIBCURSES) -lm
+ $(CC) $(LDFLAGS) $^ -o $@ $(LIBCURSES)
else
@echo $@ not made since it requires ncurses or slang
endif
@@ -50,12 +59,14 @@ activate: sfdisk
ln -s sfdisk activate
fdisk: fdisk.o llseek.o fdiskbsdlabel.o fdisksgilabel.o fdisksunlabel.o \
- fdiskaixlabel.o
+ fdiskaixlabel.o i386_sys_types.o
fdisk.o: fdisk.c fdisk.h
fdiskbsdlabel.o: fdiskbsdlabel.c fdisk.h fdiskbsdlabel.h
fdisksunlabel.o: fdisksunlabel.c fdisksunlabel.h fdisk.h
fdiskaixlabel.o: fdiskaixlabel.c fdiskaixlabel.h fdisk.h
-sfdisk: sfdisk.o
+fdisk.o cfdisk.o sfdisk.o fdiskbsdlabel.o fdisksunlabel.o \
+ fdisksgilabel.o fdiskaixlabel.o i386_sys_types.o: common.h
+sfdisk: sfdisk.o i386_sys_types.o
install: all
$(INSTALLDIR) $(SBINDIR)
@@ -65,4 +76,4 @@ install: all
.PHONY: clean
clean:
- -rm -f *.o *~ core $(SBIN)
+ -rm -f *.o *~ core $(SBIN) addpart delpart
diff --git a/fdisk/README.fdisk b/fdisk/README.fdisk
index 86b182525..b02d6aa22 100644
--- a/fdisk/README.fdisk
+++ b/fdisk/README.fdisk
@@ -369,7 +369,7 @@ unless there are sectors available inside the extended partition.
If space is available, you are prompted for the first cylinder:
- First sector ([237]-977): _
+ First cylinder ([237]-977): _
The limits are the lowest and the highest cylinders in which sectors
are available in the appropriate part of the disk. The square-bracketed
diff --git a/fdisk/addpart.c b/fdisk/addpart.c
new file mode 100644
index 000000000..11d4305b9
--- /dev/null
+++ b/fdisk/addpart.c
@@ -0,0 +1,40 @@
+/* very primitive wrapper around the `add partition' ioctl */
+#include <stdio.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <linux/blkpg.h>
+
+int
+main(int argc, char **argv){
+ int fd;
+ struct blkpg_ioctl_arg a;
+ struct blkpg_partition p;
+
+ if (argc != 5) {
+ fprintf(stderr,
+ "usage: %s diskdevice partitionnr start length\n",
+ argv[0]);
+ exit(1);
+ }
+ if ((fd = open(argv[1], O_RDONLY)) < 0) {
+ perror(argv[1]);
+ exit(1);
+ }
+ p.pno = atoi(argv[2]);
+ p.start = 512 * ((long long) atol(argv[3]));
+ p.length = 512 * ((long long) atol(argv[4]));
+ p.devname[0] = 0;
+ p.volname[0] = 0;
+ a.op = BLKPG_ADD_PARTITION;
+ a.flags = 0;
+ a.datalen = sizeof(p);
+ a.data = &p;
+
+ if (ioctl(fd, BLKPG, &a) == -1) {
+ perror("BLKPG");
+ exit(1);
+ }
+
+ return 0;
+}
diff --git a/fdisk/cfdisk.8 b/fdisk/cfdisk.8
index c8391af2a..09dd54701 100644
--- a/fdisk/cfdisk.8
+++ b/fdisk/cfdisk.8
@@ -15,13 +15,14 @@
.SH NAME
cfdisk \- Curses based disk partition table manipulator for Linux
.SH SYNOPSIS
-.BI "cfdisk [ \-avz ] [ \-c " cylinders " ] [ \-h " heads " ]"
+.BI "cfdisk [ \-agvz ] [ \-c " cylinders " ] [ \-h " heads " ]"
.BI "[ \-s " sectors-per-track " ] [ -P " opt " ] [ " device " ]"
.SH DESCRIPTION
.B cfdisk
-is a curses based program for partitioning a hard disk drive. The
+is a curses based program for partitioning any hard disk drive.
+Typical values of the
.I device
-can be any one of the following:
+argument are:
.sp
.nf
.RS
@@ -34,14 +35,28 @@ can be any one of the following:
.RE
.fi
+In order to write the partition table
.B cfdisk
-first tries to read the geometry of the hard disk. If it fails, an
-error message is displayed and
+needs something called the `geometry' of the disk: the number
+of `heads' and the number of `sectors per track'. Linux does not
+use any geometry, so if the disk will not be accessed by other
+operating systems, you can safely accept the defaults that
.B cfdisk
-exits. This should only happen when partitioning a SCSI drive on an
-adapter without a BIOS. To correct this problem, you can set the
-.IR cylinders ", " heads " and " sectors-per-track
-on the command line. Next,
+chooses for you. The geometry used by
+.B cfdisk
+is found as follows. First the partition table is examined,
+to see what geometry was used by the previous program that
+changed it. If the partition table is empty, or contains garbage,
+or does not point at a consistent geometry, the kernel is
+asked for advice. If nothing works 255 heads and 63 sectors/track
+is assumed. The geometry can be overridden on the command line
+or by use of the `g' command. When partitioning an empty large modern
+disk, picking 255 heads and 63 sectors/track is always a good idea.
+There is no need to set the number of cylinders, since
+.B cfdisk
+knows the disk size.
+
+Next,
.B cfdisk
tries to read the current partition table from the disk drive. If it
is unable to figure out the partition table, an error is displayed and
@@ -368,6 +383,10 @@ key to return to the main command line.
Use an arrow cursor instead of reverse video for highlighting the
current partition.
.TP
+.B \-g
+Do not use the geometry given by the disk driver, but try to
+guess a geometry from the partition table.
+.TP
.B \-v
Print the version number and copyright.
.TP
diff --git a/fdisk/cfdisk.c b/fdisk/cfdisk.c
index 96ddbbf24..4fe759b68 100644
--- a/fdisk/cfdisk.c
+++ b/fdisk/cfdisk.c
@@ -29,15 +29,24 @@
* >2GB patches: Sat Feb 11 09:08:10 1995, faith@cs.unc.edu
* Prettier menus: Sat Feb 11 09:08:25 1995, Janne Kukonlehto
* <jtklehto@stekt.oulu.fi>
- * Versions 0.8e-n: aeb@cwi.nl
+ * Versions 0.8e-p: aeb@cwi.nl
+ * Rebaptised 2.9p, following util-linux versioning.
+ *
* Recognition of NTFS / HPFS difference inspired by patches
* from Marty Leisner <leisner@sdsp.mc.xerox.com>
* Exit codes by Enrique Zanardi <ezanardi@ull.es>:
* 0: all went well
- * 1: command line error
- * 2: hardware problems [BAD_SEEK, BAD_READ, BAD_WRITE or BAD_OPEN].
- * 3: ioctl(fd, HDIO_GETGEO,...) failed [BAD_GEOMETRY].
- * 4: bad partition table on disk. [BAD_PRIMARY or BAD_LOGICAL].
+ * 1: command line error, out of memory
+ * 2: hardware problems [Cannot open/seek/read/write disk drive].
+ * 3: ioctl(fd, HDIO_GETGEO,...) failed. (Probably it is not a disk.)
+ * 4: bad partition table on disk. [Bad primary/logical partition].
+ *
+ * Sat, 23 Jan 1999 19:34:45 +0100 <Vincent.Renardias@ldsol.com>
+ * Internationalized + provided initial French translation.
+ * Sat Mar 20 09:26:34 EST 1999 <acme@conectiva.com.br>
+ * Some more i18n.
+ * Sun Jul 18 03:19:42 MEST 1999 <aeb@cwi.nl>
+ * Terabyte-sized disks.
*
****************************************************************************/
@@ -66,7 +75,10 @@
#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/hdreg.h>
-#include <linux/fs.h> /* for BLKRRPART */
+#include <linux/fs.h> /* for BLKRRPART, BLKGETSIZE */
+
+#include "nls.h"
+#include "common.h"
#if defined(__GNUC__) || defined(HAS_LONG_LONG)
typedef long long ext2_loff_t;
@@ -77,17 +89,25 @@ typedef long ext2_loff_t;
extern ext2_loff_t ext2_llseek(unsigned int fd, ext2_loff_t offset,
unsigned int origin);
-#define VERSION "0.8n"
+#include "../version.h"
+#define VERSION UTIL_LINUX_VERSION
#define DEFAULT_DEVICE "/dev/hda"
#define ALTERNATE_DEVICE "/dev/sda"
+/* With K=1024 we have `binary' megabytes, gigabytes, etc.
+ Some misguided hackers like that.
+ With K=1000 we have MB and GB that follow the standards
+ [SI, ATA, IEEE etc] and the disk manufacturers and the law. */
+#define K 1000
+
#define LINE_LENGTH 80
#define MAXIMUM_PARTS 60
#define SECTOR_SIZE 512
-#define MAX_CYLINDERS 65535
+#define MAX_CYLINDERS 65535 /* there is no maximum anymore */
+ /* the kernel max is 65535 */
#define MAX_HEADS 255
#define MAX_SECTORS 63
@@ -105,55 +125,48 @@ extern ext2_loff_t ext2_llseek(unsigned int fd, ext2_loff_t offset,
#define LINUX_SWAP 0x82
#define LINUX 0x83
-#define ADD_EXISTS "This partition is already in use"
-#define ADD_UNUSABLE "This partition is unusable"
-#define DEL_EMPTY "Cannot delete an empty partition"
-#define ID_EMPTY "Cannot change FS Type to empty"
-#define ID_EXT "Cannot change FS Type to extended"
-#define NEED_EXT "No room to create the extended partition"
-#define NO_FLAGS "Cannot make this partition bootable"
-#define NO_MORE_PARTS "No more partitions"
-#define PRINT_OPEN_ERR "Cannot open file '%s'"
-#define TWO_EXTENDEDS "Cannot create logical drive here -- would create two extended partitions"
-#define TYPE_EMPTY "Cannot change the type of an empty partition"
-#define BAD_COMMAND "Illegal command"
-#define MAX_UNMAXABLE "Cannot maximize this partition"
-#define BAD_OPEN "Cannot open disk drive"
-#define BAD_SEEK "Cannot seek on disk drive"
-#define BAD_READ "Cannot read disk drive"
-#define BAD_WRITE "Cannot write disk drive"
-#define BAD_GEOMETRY "Cannot read disk drive geometry"
-#define BAD_PRIMARY "Bad primary partition"
-#define BAD_LOGICAL "Bad logical partition"
-#define BAD_CYLINDERS "Illegal cylinders value"
-#define BAD_HEADS "Illegal heads value"
-#define BAD_SECTORS "Illegal sectors value"
-#define READONLY_WARN "Opened disk read-only - you have no permission to write"
-#define WRITE_WARN "Warning!! This may destroy data on your disk!"
-#define YES_NO "Please enter `yes' or `no'"
-#define WRITING_PART "Writing partition table to disk..."
-#define YES_WRITE "Wrote partition table to disk"
-#define NO_WRITE "Did not write partition table to disk"
-#define RRPART_FAILED "Wrote partition table, but re-read table failed. Reboot to update table."
-#define NOT_DOS_MBR_BOOTABLE "Not precisely one primary partition is bootable. DOS MBR cannot boot this."
+/* There used to be defined error messages here. However, it turns out
+ * that gettext cannot handle constructions like
+ *
+ * #define ADD_EXISTS _("This partition is already in use")
+ * ...
+ * print_warning(ADD_EXISTS);
+ *
+ * So, now the messages are spread over the source again.
+ * Another thing which gettext cannot cope with are multi-line strings:
+ *
+ * printf("Usage:
+ * Print version:
+ * cfdisk -v
+ * Print partition table:
+ * cfdisk -P{r|s|t} device
+ * ");
+ *
+ * (This is a commonly used gnu extension of the C syntax, but not ANSI-C.)
+ * Another reason to uglify the source a little.
+ */
+
#define PRI_OR_LOG -1
#define PRIMARY -2
#define LOGICAL -3
-#define COL_ID_WIDTH 20
+#define COL_ID_WIDTH 25
#define CR '\015'
#define ESC '\033'
#define DEL '\177'
#define BELL '\007'
-/* '\014' == ^L */
-#define REDRAWKEY '\014'
+#define TAB '\011'
+#define REDRAWKEY '\014' /* ^L */
+#define UPKEY '\020' /* ^P */
+#define DOWNKEY '\016' /* ^N */
/* Display units */
-#define MEGABYTES 1
-#define SECTORS 2
-#define CYLINDERS 3
+#define GIGABYTES 1
+#define MEGABYTES 2
+#define SECTORS 3
+#define CYLINDERS 4
#define GS_DEFAULT -1
#define GS_ESCAPE -2
@@ -168,24 +181,6 @@ extern ext2_loff_t ext2_llseek(unsigned int fd, ext2_loff_t offset,
#define round_int(d) ((double)((int)(d+0.5)))
#define ceiling(d) ((double)(((d) != (int)(d)) ? (int)(d+1.0) : (int)(d)))
-#define set_hsc(h,s,c,sector) \
-{ \
- s = sector % sectors + 1; \
- sector /= sectors; \
- h = sector % heads; \
- sector /= heads; \
- c = sector & 0xFF; \
- s |= (sector >> 2) & 0xC0;\
-}
-
-#define is_extended(x) ((x) == DOS_EXTENDED || (x) == WIN98_EXTENDED || \
- (x) == LINUX_EXTENDED)
-
-#define is_dos_partition(x) ((x) == 1 || (x) == 4 || (x) == 6)
-#define may_have_dos_label(x) (is_dos_partition(x) \
- || (x) == 7 || (x) == 0xb || (x) == 0xc || (x) == 0xe \
- || (x) == 0x11 || (x) == 0x14 || (x) == 0x16 || (x) == 0x17)
-
struct partition {
unsigned char boot_ind; /* 0x80 - active */
unsigned char head; /* starting head */
@@ -199,6 +194,58 @@ struct partition {
unsigned char size4[4]; /* nr of sectors in partition */
};
+int heads = 0;
+int sectors = 0;
+int cylinders = 0;
+int cylinder_size = 0; /* heads * sectors */
+int total_size = 0; /* actual_size rounded down */
+long actual_size = 0; /* set using ioctl */
+ /* explicitly given user values */
+int user_heads = 0, user_sectors = 0, user_cylinders = 0;
+ /* kernel values; ignore the cylinders */
+int kern_heads = 0, kern_sectors = 0;
+ /* partition-table derived values */
+int pt_heads = 0, pt_sectors = 0;
+
+
+void
+set_hsc0(unsigned char *h, unsigned char *s, int *c, int sector) {
+ if (sector >= 1024*cylinder_size)
+ sector = 1024*cylinder_size - 1;
+ *s = sector % sectors + 1;
+ sector /= sectors;
+ *h = sector % heads;
+ sector /= heads;
+ *c = sector;
+}
+
+void
+set_hsc(unsigned char *h, unsigned char *s, unsigned char *c, int sector) {
+ int cc;
+
+ set_hsc0(h, s, &cc, sector);
+ *c = cc & 0xFF;
+ *s |= (cc >> 2) & 0xC0;
+}
+
+void
+set_hsc_begin(struct partition *p, int sector) {
+ set_hsc(& p->head, & p->sector, & p->cyl, sector);
+}
+
+void
+set_hsc_end(struct partition *p, int sector) {
+ set_hsc(& p->end_head, & p->end_sector, & p->end_cyl, sector);
+}
+
+#define is_extended(x) ((x) == DOS_EXTENDED || (x) == WIN98_EXTENDED || \
+ (x) == LINUX_EXTENDED)
+
+#define is_dos_partition(x) ((x) == 1 || (x) == 4 || (x) == 6)
+#define may_have_dos_label(x) (is_dos_partition(x) \
+ || (x) == 7 || (x) == 0xb || (x) == 0xc || (x) == 0xe \
+ || (x) == 0x11 || (x) == 0x14 || (x) == 0x16 || (x) == 0x17)
+
/* start_sect and nr_sects are stored little endian on all machines */
/* moreover, they are not aligned correctly */
void
@@ -266,9 +313,6 @@ typedef struct {
char *disk_device = DEFAULT_DEVICE;
int fd;
-int heads = 0;
-int sectors = 0;
-int cylinders = 0;
int changed = FALSE;
int opened = FALSE;
int opentype;
@@ -286,6 +330,7 @@ __sighandler_t old_SIGINT, old_SIGTERM;
int arrow_cursor = FALSE;
int display_units = MEGABYTES;
int zero_table = FALSE;
+int use_partition_table_geometry = FALSE;
int print_only = 0;
/* Curses screen information */
@@ -297,7 +342,7 @@ int NUM_ON_SCREEN = 1;
/* Y coordinates */
int HEADER_START = 0;
-int DISK_TABLE_START = 5;
+int DISK_TABLE_START = 6;
int WARNING_START = 23;
int COMMAND_LINE_Y = 21;
@@ -310,55 +355,24 @@ int LABEL_START = 54;
int SIZE_START = 70;
int COMMAND_LINE_X = 5;
-#define NUM_PART_TYPES 256
-char *partition_type[NUM_PART_TYPES] = {
- [LINUX_MINIX] = "Linux/MINIX",
- [LINUX_SWAP] = "Linux Swap",
- [LINUX] = "Linux",
- [FREE_SPACE] = "Free Space",
- [DOS_EXTENDED]= "Extended",
- [LINUX_EXTENDED] = "Linux extended",
- [0x01] = "DOS FAT12",
- [0x02] = "XENIX root",
- [0x03] = "XENIX usr",
- [0x04] = "DOS FAT16",
- [0x06] = "DOS FAT16 (big)",
- [OS2_OR_NTFS] = "OS/2 HPFS or NTFS",
- [0x08] = "AIX",
- [0x09] = "AIX bootable",
- [0x0A] = "OS/2 Boot Manager",
- [0x0B] = "Win95 FAT32",
- [0x0C] = "Win95 FAT32 (LBA)",
- [0x0E] = "Win95 FAT16 (LBA)",
- [0x0F] = "Win95 Extended (LBA)",
- [0x11] = "Hidden DOS FAT12",
- [0x14] = "Hidden DOS FAT16",
- [0x16] = "Hidden DOS FAT16 (big)",
- [0x17] = "Hidden OS/2 HPFS or NTFS",
- [0x40] = "Venix 80286",
- [0x41] = "PPC PReP boot",
- [0x51] = "Novell?",
- [0x52] = "Microport",
- [0x63] = "GNU HURD",
- [0x64] = "Novell Netware 286",
- [0x65] = "Novell Netware 386",
- [0x75] = "PC/IX",
- [0x80] = "Old MINIX",
- [0x93] = "Amoeba",
- [0x94] = "Amoeba BBT",
- [0xA5] = "BSD/386",
- [0xA6] = "OpenBSD",
- [0xA7] = "NEXTSTEP",
- [0xB7] = "BSDI fs",
- [0xB8] = "BSDI swap",
- [0xC7] = "Syrinx",
- [0xDB] = "CP/M",
- [0xE1] = "DOS access",
- [0xE3] = "DOS R/O",
- [0xEB] = "BeOS fs",
- [0xF2] = "DOS secondary",
- [0xFF] = "BBT"
-};
+void die_x(int ret);
+void draw_screen(void);
+
+/* Guaranteed alloc */
+void *
+xmalloc (size_t size) {
+ void *t;
+
+ if (size == 0)
+ return NULL;
+
+ t = malloc (size);
+ if (t == NULL) {
+ fprintf (stderr, _("%s: Out of memory!\n"), "cfdisk");
+ die_x(1);
+ }
+ return t;
+}
/* Some libc's have their own basename() */
char *my_basename(char *devname)
@@ -367,28 +381,37 @@ char *my_basename(char *devname)
return s ? s+1 : devname;
}
+char *partition_type_name(unsigned char type)
+{
+ struct systypes *s = i386_sys_types;
+
+ while(s->name && s->type != type)
+ s++;
+ return s->name;
+}
+
char *partition_type_text(int i)
{
if (p_info[i].id == UNUSABLE)
- return "Unusable";
+ return _("Unusable");
else if (p_info[i].id == FREE_SPACE)
- return "Free Space";
+ return _("Free Space");
else if (p_info[i].id == LINUX) {
if (!strcmp(p_info[i].fstype, "ext2"))
- return "Linux ext2";
+ return _("Linux ext2");
else
- return "Linux";
+ return _("Linux");
} else if (p_info[i].id == OS2_OR_NTFS) {
if (!strncmp(p_info[i].fstype, "HPFS", 4))
- return "OS/2 HPFS";
+ return _("OS/2 HPFS");
else if (!strncmp(p_info[i].ostype, "OS2", 3))
- return "OS/2 IFS";
+ return _("OS/2 IFS");
else if (!p_info[i].ostype)
return p_info[i].ostype;
else
- return "NTFS";
+ return _("NTFS");
} else
- return partition_type[p_info[i].id];
+ return partition_type_name(p_info[i].id);
}
void fdexit(int ret)
@@ -397,13 +420,13 @@ void fdexit(int ret)
close(fd);
if (changed) {
- fprintf(stderr, "Disk has been changed.\n");
- fprintf(stderr, "Reboot the system to ensure the partition "
- "table is correctly updated.\n");
+ fprintf(stderr, _("Disk has been changed.\n"));
+ fprintf(stderr, _("Reboot the system to ensure the partition "
+ "table is correctly updated.\n"));
- fprintf( stderr, "\nWARNING: If you have created or modified any\n"
+ fprintf( stderr, _("\nWARNING: If you have created or modified any\n"
"DOS 6.x partitions, please see the cfdisk manual\n"
- "page for additional information.\n" );
+ "page for additional information.\n") );
}
exit(ret);
@@ -494,23 +517,25 @@ void print_warning(char *s)
}
}
-void die_x(int ret);
-
void fatal(char *s, int ret)
{
- char str[LINE_LENGTH];
+ char *err = _("FATAL ERROR");
if (curses_started) {
- sprintf(str, "FATAL ERROR: %s", s);
+ char *str = xmalloc(strlen(s) + strlen(err) + 10);
+ /* snprintf does not compile on all libc's */
+ sprintf(str, "%s: %s", err, s);
+ if (strlen(str) > COLS)
+ str[COLS] = 0;
mvaddstr(WARNING_START, (COLS-strlen(str))/2, str);
- sprintf(str, "Press any key to exit fdisk");
+ sprintf(str, _("Press any key to exit cfdisk"));
mvaddstr(WARNING_START+1, (COLS-strlen(str))/2, str);
putchar(BELL); /* CTRL-G */
refresh();
(void)getch();
die_x(ret);
} else {
- fprintf(stderr, "FATAL ERROR: %s\n", s);
+ fprintf(stderr, "%s: %s\n", err, s);
exit(ret);
}
}
@@ -539,17 +564,17 @@ void die_x(int ret)
void read_sector(char *buffer, int sect_num)
{
if (ext2_llseek(fd, ((ext2_loff_t) sect_num)*SECTOR_SIZE, SEEK_SET) < 0)
- fatal(BAD_SEEK, 2);
+ fatal(_("Cannot seek on disk drive"), 2);
if (read(fd, buffer, SECTOR_SIZE) != SECTOR_SIZE)
- fatal(BAD_READ, 2);
+ fatal(_("Cannot read disk drive"), 2);
}
void write_sector(char *buffer, int sect_num)
{
if (ext2_llseek(fd, ((ext2_loff_t) sect_num)*SECTOR_SIZE, SEEK_SET) < 0)
- fatal(BAD_SEEK, 2);
+ fatal(_("Cannot seek on disk drive"), 2);
if (write(fd, buffer, SECTOR_SIZE) != SECTOR_SIZE)
- fatal(BAD_WRITE, 2);
+ fatal(_("Cannot write disk drive"), 2);
}
void dos_copy_to_info(char *to, int tosz, char *from, int fromsz) {
@@ -703,6 +728,8 @@ void remove_part(int i)
p_info[p] = p_info[p+1];
num_parts--;
+ if (cur_part == num_parts)
+ cur_part--;
}
void insert_empty_part(int i, int first, int last)
@@ -751,7 +778,7 @@ void del_part(int i)
if (i < num_parts - 1)
p_info[i].last_sector = p_info[i+1].first_sector - 1;
else
- p_info[i].last_sector = sectors*heads*cylinders - 1;
+ p_info[i].last_sector = total_size - 1;
p_info[i].offset = 0;
p_info[i].flags = 0;
@@ -781,23 +808,41 @@ void del_part(int i)
}
int add_part(int num, int id, int flags, int first, int last, int offset,
- int want_label)
+ int want_label, char **errmsg)
{
int i, pri = 0, log = 0;
- if (num_parts == MAXIMUM_PARTS ||
- first < 0 ||
- first >= cylinders*heads*sectors ||
- last < 0 ||
- last >= cylinders*heads*sectors) {
- return -1; /* bad start or end */
+ if (num_parts == MAXIMUM_PARTS) {
+ *errmsg = _("Too many partitions");
+ return -1;
}
- for (i = 0; i < num_parts; i++)
+ if (first < 0) {
+ *errmsg = _("Partition begins before sector 0");
+ return -1;
+ }
+
+ if (last < 0) {
+ *errmsg = _("Partition ends before sector 0");
+ return -1;
+ }
+
+ if (first >= total_size) {
+ *errmsg = _("Partition begins after end-of-disk");
+ return -1;
+ }
+
+ if (last >= total_size) {
+ *errmsg = _("Partition ends after end-of-disk");
+ return -1;
+ }
+
+ for (i = 0; i < num_parts; i++) {
if (p_info[i].id > 0 && IS_PRIMARY(p_info[i].num))
pri++;
else if (p_info[i].id > 0 && IS_LOGICAL(p_info[i].num))
log++;
+ }
if (is_extended(ext_info.id) && log > 0)
pri++;
@@ -810,8 +855,18 @@ int add_part(int num, int id, int flags, int first, int last, int offset,
for (i = 0; i < num_parts && p_info[i].last_sector < first; i++);
- if (i == num_parts || p_info[i].id != FREE_SPACE
- || last > p_info[i].last_sector) {
+ if (i < num_parts && p_info[i].id != FREE_SPACE) {
+ if (last < p_info[i].first_sector)
+ *errmsg = _("logical partitions not in disk order");
+ else if (first + offset <= p_info[i].last_sector &&
+ p_info[i].first_sector + p_info[i].offset <= last)
+ *errmsg = _("logical partitions overlap");
+ else
+ *errmsg = _("enlarged logical partitions overlap");
+ return -1;
+ }
+
+ if (i == num_parts || last > p_info[i].last_sector) {
return -1;
}
@@ -837,8 +892,8 @@ int add_part(int num, int id, int flags, int first, int last, int offset,
if (IS_LOGICAL(num)) {
if (!is_extended(ext_info.id)) {
- print_warning("!!!! Internal error creating logical "
- "drive with no extended partition !!!!");
+ print_warning(_("!!!! Internal error creating logical "
+ "drive with no extended partition !!!!"));
} else {
/* We might have a logical partition outside of the extended
* partition's range --> we have to extend the extended
@@ -848,7 +903,7 @@ int add_part(int num, int id, int flags, int first, int last, int offset,
*/
if (first < ext_info.first_sector) {
if (i < num_parts-1 && IS_PRIMARY(p_info[i+1].num)) {
- print_warning(TWO_EXTENDEDS);
+ print_warning(_("Cannot create logical drive here -- would create two extended partitions"));
return -1;
} else {
if (first == 0) {
@@ -860,7 +915,7 @@ int add_part(int num, int id, int flags, int first, int last, int offset,
}
} else if (last > ext_info.last_sector) {
if (i > 0 && IS_PRIMARY(p_info[i-1].num)) {
- print_warning(TWO_EXTENDEDS);
+ print_warning(_("Cannot create logical drive here -- would create two extended partitions"));
return -1;
} else {
ext_info.last_sector = last;
@@ -976,36 +1031,57 @@ int menuUpdate( int y, int x, struct MenuItem *menuItems, int itemLength,
char *available, int menuType, int current )
{
int i, lmargin = x, ymargin = y;
+ char *mcd;
+
/* Print available buttons */
move( y, x ); clrtoeol();
+
for( i = 0; menuItems[i].key; i++ )
{
char buff[20];
int lenName;
+ const char *mi;
+
/* Search next available button */
while( menuItems[i].key && !strchr(available, menuItems[i].key) )
{
i++;
}
if( !menuItems[i].key ) break; /* No more menu items */
+
/* If selected item is not available and we have bypassed it,
make current item selected */
if( current < i && menuItems[current].key < 0 ) current = i;
+
/* If current item is selected, highlight it */
if( current == i ) /*attron( A_REVERSE )*/ standout ();
+
/* Print item */
- lenName = strlen( menuItems[i].name );
- if(lenName > itemLength)
- print_warning("Menu item too long. Menu may look odd.");
+ /* Because of a bug in gettext() we must not translate empty strings */
+ if (menuItems[i].name[0])
+ mi = _(menuItems[i].name);
+ else
+ mi = "";
+ lenName = strlen( mi );
+#if 0
+ if(lenName > itemLength || lenName >= sizeof(buff))
+ print_warning(_("Menu item too long. Menu may look odd."));
+#endif
+ if (lenName >= sizeof(buff)) { /* truncate ridiculously long string */
+ strncpy( buff, mi, sizeof(buff)-1);
+ buff[sizeof(buff)-1] = 0;
+ } else
if( menuType & MENU_BUTTON )
sprintf( buff, "[%*s%-*s]", (itemLength - lenName) / 2, "",
- (itemLength - lenName + 1) / 2 + lenName, menuItems[i].name );
+ (itemLength - lenName + 1) / 2 + lenName, mi );
else
sprintf( buff, "%*s%-*s", (itemLength - lenName) / 2, "",
- (itemLength - lenName + 1) / 2 + lenName, menuItems[i].name );
+ (itemLength - lenName + 1) / 2 + lenName, mi );
mvaddstr( y, x, buff );
+
/* Lowlight after selected item */
if( current == i ) /*attroff( A_REVERSE )*/ standend ();
+
/* Calculate position for the next item */
if( menuType & MENU_VERT )
{
@@ -1028,30 +1104,34 @@ int menuUpdate( int y, int x, struct MenuItem *menuItems, int itemLength,
}
}
}
+
/* Print the description of selected item */
- mvaddstr( WARNING_START + 1,
- (COLUMNS - strlen( menuItems[current].desc )) / 2,
- menuItems[current].desc );
+ mcd = _(menuItems[current].desc);
+ mvaddstr( WARNING_START + 1, (COLUMNS - strlen( mcd )) / 2, mcd );
return y;
}
-/* This function takes a list of menu items, lets the user choose one of them *
- * and returns the value keyboard shortcut of the selected menu item */
+/* This function takes a list of menu items, lets the user choose one *
+ * and returns the value keyboard shortcut of the selected menu item */
-int menuSelect( int y, int x, struct MenuItem *menuItems, int itemLength, char *available, int menuType, int menuDefault )
+int menuSelect( int y, int x, struct MenuItem *menuItems, int itemLength,
+ char *available, int menuType, int menuDefault )
{
int i, ylast = y, key = 0, current = menuDefault;
+
if( !( menuType & ( MENU_HORIZ | MENU_VERT ) ) )
{
- print_warning("Menu without direction. Defaulting horizontal.");
+ print_warning(_("Menu without direction. Defaulting horizontal."));
menuType |= MENU_HORIZ;
}
+
/* Make sure that the current is one of the available items */
while( !strchr(available, menuItems[current].key) )
{
current ++ ;
if( !menuItems[current].key ) current = 0;
}
+
/* Repeat until allowable choice has been made */
while( !key )
{
@@ -1087,67 +1167,80 @@ int menuSelect( int y, int x, struct MenuItem *menuItems, int itemLength, char *
switch( getch() )
{
case 'A': /* Up arrow */
- if( menuType & MENU_VERT )
- {
- do {
- current -- ;
- if( current < 0 ) while( menuItems[current+1].key ) current ++ ;
- } while( !strchr( available, menuItems[current].key ) );
- key = 0;
- }
- else
- key = MENU_UP;
+ key = MENU_UP;
break;
case 'B': /* Down arrow */
- if( menuType & MENU_VERT )
- {
- do {
- current ++ ;
- if( !menuItems[current].key ) current = 0 ;
- } while( !strchr( available, menuItems[current].key ) );
- key = 0;
- }
- else
- key = MENU_DOWN;
+ key = MENU_DOWN;
break;
case 'C': /* Right arrow */
- if( menuType & MENU_HORIZ )
- {
- do {
- current ++ ;
- if( !menuItems[current].key )
- {
- current = 0 ;
- }
- } while( !strchr( available, menuItems[current].key ) );
- key = 0;
- }
- else
- key = MENU_RIGHT;
+ key = MENU_RIGHT;
break;
case 'D': /* Left arrow */
- if( menuType & MENU_HORIZ )
- {
- do {
- current -- ;
- if( current < 0 )
- {
- while( menuItems[current + 1].key ) current ++ ;
- }
- } while( !strchr( available, menuItems[current].key ) );
- key = 0;
- }
- else
- key = MENU_LEFT;
+ key = MENU_LEFT;
break;
}
}
}
+
/* Enter equals to the keyboard shortcut of current menu item */
- if( key == 13 )
- {
+ if( key == CR)
key = menuItems[current].key;
- }
+
+ /* Give alternatives for arrow keys in case the window manager
+ swallows these */
+ if ( key == TAB )
+ key = MENU_RIGHT;
+ if ( key == UPKEY ) /* ^P */
+ key = MENU_UP;
+ if ( key == DOWNKEY ) /* ^N */
+ key = MENU_DOWN;
+
+ if (key == MENU_UP) {
+ if( menuType & MENU_VERT ) {
+ do {
+ current -- ;
+ if( current < 0 )
+ while( menuItems[current+1].key )
+ current ++ ;
+ } while( !strchr( available, menuItems[current].key ));
+ key = 0;
+ }
+ }
+
+ if (key == MENU_DOWN) {
+ if( menuType & MENU_VERT ) {
+ do {
+ current ++ ;
+ if( !menuItems[current].key ) current = 0 ;
+ } while( !strchr( available, menuItems[current].key ));
+ key = 0;
+ }
+ }
+
+ if (key == MENU_RIGHT) {
+ if( menuType & MENU_HORIZ ) {
+ do {
+ current ++ ;
+ if( !menuItems[current].key )
+ current = 0 ;
+ } while( !strchr( available, menuItems[current].key ));
+ key = 0;
+ }
+ }
+
+ if (key == MENU_LEFT) {
+ if( menuType & MENU_HORIZ ) {
+ do {
+ current -- ;
+ if( current < 0 ) {
+ while( menuItems[current + 1].key )
+ current ++ ;
+ }
+ } while( !strchr( available, menuItems[current].key ));
+ key = 0;
+ }
+ }
+
/* Should all keys to be accepted? */
if( key && (menuType & MENU_ACCEPT_OTHERS) ) break;
/* Is pressed key among acceptable ones */
@@ -1158,7 +1251,7 @@ int menuSelect( int y, int x, struct MenuItem *menuItems, int itemLength, char *
{
key = 0;
putchar( BELL );
- print_warning("Illegal key");
+ print_warning(_("Illegal key"));
}
}
/* Clear out prompts and such */
@@ -1181,7 +1274,7 @@ void menuContinue(void)
{
static struct MenuItem menuContinueBtn[]=
{
- { 'c', "", "Press a key to continue" },
+ { 'c', "", N_("Press a key to continue") },
{ 0, NULL, NULL }
};
@@ -1196,9 +1289,10 @@ int menuSimple(struct MenuItem *menuItems, int menuDefault)
{
int i, j, itemLength = 0;
char available[MENU_MAX_ITEMS];
+
for(i = 0; menuItems[i].key; i++)
{
- j = strlen( menuItems[i].name );
+ j = strlen( _(menuItems[i].name) );
if( j > itemLength ) itemLength = j;
available[i] = menuItems[i].key;
}
@@ -1221,13 +1315,15 @@ void new_part(int i)
int num = -1;
int num_sects = last - first + 1;
int len, ext, j;
+ char *errmsg;
+
if (p_info[i].num == PRI_OR_LOG) {
static struct MenuItem menuPartType[]=
{
- { 'p', "Primary", "Create a new primary partition" },
- { 'l', "Logical", "Create a new logical partition" },
- { ESC, "Cancel", "Don't create a partition" },
+ { 'p', N_("Primary"), N_("Create a new primary partition") },
+ { 'l', N_("Logical"), N_("Create a new logical partition") },
+ { ESC, N_("Cancel"), N_("Don't create a partition") },
{ 0, NULL, NULL }
};
@@ -1243,28 +1339,30 @@ void new_part(int i)
else if (p_info[i].num == LOGICAL)
num = find_logical(i);
else
- print_warning("!!! Internal error !!!");
+ print_warning(_("!!! Internal error !!!"));
- sprintf(def, "%.2f", ceiling(num_sects/20.48)/100);
- mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X, "Size (in MB): ");
+ sprintf(def, "%.2f", ceiling(num_sects/(K*0.02))/100);
+ mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X, _("Size (in MB): "));
if ((len = get_string(response, LINE_LENGTH, def)) <= 0 &&
len != GS_DEFAULT)
return;
else if (len > 0) {
-#define num_cyls(bytes) (round_int(bytes/SECTOR_SIZE/(sectors*heads)))
+#define num_cyls(bytes) (round_int(bytes/SECTOR_SIZE/cylinder_size))
for (j = 0;
j < len-1 && (isdigit(response[j]) || response[j] == '.');
j++);
if (toupper(response[j]) == 'K') {
- num_sects = num_cyls(atof(response)*1024)*sectors*heads;
+ num_sects = num_cyls(atof(response)*K)*cylinder_size;
} else if (toupper(response[j]) == 'M') {
- num_sects = num_cyls(atof(response)*1024*1024)*sectors*heads;
+ num_sects = num_cyls(atof(response)*K*K)*cylinder_size;
+ } else if (toupper(response[j]) == 'G') {
+ num_sects = num_cyls(atof(response)*K*K*K)*cylinder_size;
} else if (toupper(response[j]) == 'C') {
- num_sects = round_int(atof(response))*sectors*heads;
+ num_sects = round_int(atof(response))*cylinder_size;
} else if (toupper(response[j]) == 'S') {
num_sects = round_int(atof(response));
} else {
- num_sects = num_cyls(atof(response)*1024*1024)*sectors*heads;
+ num_sects = num_cyls(atof(response)*K*K)*cylinder_size;
}
}
@@ -1278,9 +1376,9 @@ void new_part(int i)
*/
static struct MenuItem menuPlace[]=
{
- { 'b', "Beginning", "Add partition at beginning of free space" },
- { 'e', "End", "Add partition at end of free space" },
- { ESC, "Cancel", "Don't create a partition" },
+ { 'b', N_("Beginning"), N_("Add partition at beginning of free space") },
+ { 'e', N_("End"), N_("Add partition at end of free space") },
+ { ESC, N_("Cancel"), N_("Don't create a partition") },
{ 0, NULL, NULL }
};
c = menuSimple( menuPlace, 0 );
@@ -1297,11 +1395,11 @@ void new_part(int i)
* extended partition first.
*/
if ((ext = find_primary()) < 0) {
- print_warning(NEED_EXT);
+ print_warning(_("No room to create the extended partition"));
return;
}
(void) add_part(ext, DOS_EXTENDED, 0, first, last,
- (first == 0 ? sectors : 0), 0);
+ (first == 0 ? sectors : 0), 0, &errmsg);
first = ext_info.first_sector + ext_info.offset;
}
@@ -1312,14 +1410,76 @@ void new_part(int i)
if (first == 0 || IS_LOGICAL(num))
offset = sectors;
- (void) add_part(num, id, flags, first, last, offset, 0);
+ (void) add_part(num, id, flags, first, last, offset, 0, &errmsg);
+}
+
+void get_kernel_geometry(void)
+{
+#ifdef HDIO_GETGEO
+ struct hd_geometry geometry;
+
+ if (!ioctl(fd, HDIO_GETGEO, &geometry)) {
+ kern_heads = geometry.heads;
+ kern_sectors = geometry.sectors;
+ }
+#endif
+}
+
+void get_partition_table_geometry(partition_table *bufp)
+{
+ struct partition *p;
+ int i,h,s,hh,ss;
+ int first = TRUE;
+ int bad = FALSE;
+
+ if (bufp->p.magicflag[0] != PART_TABLE_FLAG0 ||
+ bufp->p.magicflag[1] != PART_TABLE_FLAG1)
+ fatal(_("Bad signature on partition table"), 3);
+
+ hh = ss = 0;
+ for (i=0; i<4; i++) {
+ p = &(bufp->p.part[i]);
+ if (p->sys_ind != 0) {
+ h = p->end_head + 1;
+ s = (p->end_sector & 077);
+ if (first) {
+ hh = h;
+ ss = s;
+ first = FALSE;
+ } else if (hh != h || ss != s)
+ bad = TRUE;
+ }
+ }
+
+ if (!first && !bad) {
+ pt_heads = hh;
+ pt_sectors = ss;
+ }
+}
+
+void decide_on_geometry(void)
+{
+ heads = (user_heads ? user_heads :
+ pt_heads ? pt_heads :
+ kern_heads ? kern_heads : 255);
+ sectors = (user_sectors ? user_sectors :
+ pt_sectors ? pt_sectors :
+ kern_sectors ? kern_sectors : 63);
+ cylinder_size = heads*sectors;
+ cylinders = actual_size/cylinder_size;
+ if (user_cylinders > 0 && user_cylinders <= 0x7fffffff/cylinder_size)
+ cylinders = user_cylinders;
+
+ total_size = cylinder_size*cylinders;
+ if (total_size > actual_size)
+ print_warning(_("You specified more cylinders than fit on disk"));
}
void clear_p_info(void)
{
num_parts = 1;
p_info[0].first_sector = 0;
- p_info[0].last_sector = sectors*heads*cylinders - 1;
+ p_info[0].last_sector = total_size - 1;
p_info[0].offset = 0;
p_info[0].flags = 0;
p_info[0].id = FREE_SPACE;
@@ -1337,15 +1497,14 @@ void fill_p_info(void)
{
int pn, i, bs, bsz;
struct partition *p;
- struct hd_geometry geometry;
partition_table buffer;
partition_info tmp_ext = { 0, 0, 0, 0, FREE_SPACE, PRIMARY };
if ((fd = open(disk_device, O_RDWR)) < 0) {
if ((fd = open(disk_device, O_RDONLY)) < 0)
- fatal(BAD_OPEN, 2);
+ fatal(_("Cannot open disk drive"), 2);
opentype = O_RDONLY;
- print_warning(READONLY_WARN);
+ print_warning(_("Opened disk read-only - you have no permission to write"));
if (curses_started) {
refresh();
getch();
@@ -1365,23 +1524,23 @@ void fill_p_info(void)
ioctl(fd, BLKFLSBUF); /* ignore errors */
/* e.g. Permission Denied */
- if (!ioctl(fd, HDIO_GETGEO, &geometry)) {
- if (!heads)
- heads = geometry.heads;
- if (!sectors)
- sectors = geometry.sectors;
- if (!cylinders)
- cylinders = geometry.cylinders;
- }
-
- if (!heads || !sectors || !cylinders)
- fatal(BAD_GEOMETRY, 3); /* probably a file or cdrom */
+ if (ioctl(fd, BLKGETSIZE, &actual_size))
+ fatal(_("Cannot get disk size"), 3);
read_sector(buffer.c.b, 0);
+ get_kernel_geometry();
+
+ if (!zero_table || use_partition_table_geometry)
+ get_partition_table_geometry(& buffer);
+
+ decide_on_geometry();
+
clear_p_info();
if (!zero_table) {
+ char *errmsg = "";
+
for (i = 0; i < 4; i++) {
p = & buffer.p.part[i];
bs = get_start_sect(p);
@@ -1389,11 +1548,13 @@ void fill_p_info(void)
if (p->sys_ind > 0 &&
add_part(i, p->sys_ind, p->boot_ind,
- ((bs <= sectors) ? 0 : bs),
- bs + bsz - 1,
- ((bs <= sectors) ? bs : 0),
- 1)) {
- fatal(BAD_PRIMARY, 4);
+ ((bs <= sectors) ? 0 : bs), bs + bsz - 1,
+ ((bs <= sectors) ? bs : 0), 1, &errmsg)) {
+ /* avoid snprintf - it does not exist on ancient systems */
+ char *bad = _("Bad primary partition");
+ char *msg = (char *) xmalloc(strlen(bad) + strlen(errmsg) + 30);
+ sprintf(msg, "%s %d: %s", bad, i, errmsg);
+ fatal(msg, 4);
}
if (is_extended(buffer.p.part[i].sys_ind))
tmp_ext = ext_info;
@@ -1419,8 +1580,13 @@ void fill_p_info(void)
if (add_part(i++, p->sys_ind, p->boot_ind,
logical_sectors[logical-1],
logical_sectors[logical-1] + bs + bsz - 1,
- bs, 1))
- fatal(BAD_LOGICAL, 4);
+ bs, 1, &errmsg)) {
+ /* avoid snprintf */
+ char *bad = _("Bad logical partition");
+ char *msg = (char *) xmalloc(strlen(bad) + strlen(errmsg) + 30);
+ sprintf(msg, "%s %d: %s", bad, i-1, errmsg);
+ fatal(msg, 4);
+ }
}
for (pn = 0;
@@ -1440,21 +1606,18 @@ void fill_p_info(void)
void fill_part_table(struct partition *p, partition_info *pi)
{
- int sects;
+ int begin;
p->boot_ind = pi->flags;
p->sys_ind = pi->id;
+ begin = pi->first_sector + pi->offset;
if (IS_LOGICAL(pi->num))
set_start_sect(p,pi->offset);
else
- set_start_sect(p,pi->first_sector + pi->offset);
- set_nr_sects(p, pi->last_sector - (pi->first_sector+pi->offset) + 1);
- sects = (((pi->first_sector+pi->offset)/(sectors*heads) > 1023) ?
- heads*sectors*1024 - 1 : pi->first_sector+pi->offset);
- set_hsc(p->head, p->sector, p->cyl, sects);
- sects = ((pi->last_sector/(sectors*heads) > 1023) ?
- heads*sectors*1024 - 1 : pi->last_sector);
- set_hsc(p->end_head, p->end_sector, p->end_cyl, sects);
+ set_start_sect(p,begin);
+ set_nr_sects(p, pi->last_sector - begin + 1);
+ set_hsc_begin(p, begin);
+ set_hsc_end(p, pi->last_sector);
}
void fill_primary_table(partition_table *buffer)
@@ -1479,7 +1642,7 @@ void fill_primary_table(partition_table *buffer)
void fill_logical_table(partition_table *buffer, partition_info *pi)
{
struct partition *p;
- int i, sects;
+ int i;
for (i = 0; i < logical && pi->first_sector != logical_sectors[i]; i++);
if (i == logical || buffer->p.magicflag[0] != PART_TABLE_FLAG0
@@ -1505,12 +1668,8 @@ void fill_logical_table(partition_table *buffer, partition_info *pi)
p->sys_ind = DOS_EXTENDED;
set_start_sect(p, pi->first_sector - ext_info.first_sector - ext_info.offset);
set_nr_sects(p, pi->last_sector - pi->first_sector + 1);
- sects = ((pi->first_sector/(sectors*heads) > 1023) ?
- heads*sectors*1024 - 1 : pi->first_sector);
- set_hsc(p->head, p->sector, p->cyl, sects);
- sects = ((pi->last_sector/(sectors*heads) > 1023) ?
- heads*sectors*1024 - 1 : pi->last_sector);
- set_hsc(p->end_head, p->end_sector, p->end_cyl, sects);
+ set_hsc_begin(p, pi->first_sector);
+ set_hsc_end(p, pi->last_sector);
}
buffer->p.magicflag[0] = PART_TABLE_FLAG0;
@@ -1526,7 +1685,7 @@ void write_part_table(void)
char response[LINE_LENGTH];
if (opentype == O_RDONLY) {
- print_warning(READONLY_WARN);
+ print_warning(_("Opened disk read-only - you have no permission to write"));
refresh();
getch();
clear_warning();
@@ -1538,32 +1697,27 @@ void write_part_table(void)
is_bdev = 1;
if (is_bdev) {
- print_warning(WRITE_WARN);
+ print_warning(_("Warning!! This may destroy data on your disk!"));
while (!done) {
mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X,
- "Are you sure you want write the partition table "
- "to disk? (yes or no): ");
+ _("Are you sure you want write the partition table "
+ "to disk? (yes or no): "));
len = get_string(response, LINE_LENGTH, NULL);
clear_warning();
if (len == GS_ESCAPE)
return;
- else if (len == 2 &&
- toupper(response[0]) == 'N' &&
- toupper(response[1]) == 'O') {
- print_warning(NO_WRITE);
+ else if (strcasecmp(response, _("no")) == 0) {
+ print_warning(_("Did not write partition table to disk"));
return;
- } else if (len == 3 &&
- toupper(response[0]) == 'Y' &&
- toupper(response[1]) == 'E' &&
- toupper(response[2]) == 'S')
+ } else if (strcasecmp(response, _("yes")) == 0)
done = TRUE;
else
- print_warning(YES_NO);
+ print_warning(_("Please enter `yes' or `no'"));
}
clear_warning();
- print_warning(WRITING_PART);
+ print_warning(_("Writing partition table to disk..."));
refresh();
}
@@ -1588,11 +1742,11 @@ void write_part_table(void)
clear_warning();
if (changed)
- print_warning(YES_WRITE);
+ print_warning(_("Wrote partition table to disk"));
else
- print_warning(RRPART_FAILED);
+ print_warning(_("Wrote partition table, but re-read table failed. Reboot to update table."));
} else
- print_warning(YES_WRITE);
+ print_warning(_("Wrote partition table to disk"));
/* Check: unique bootable primary partition? */
ct = 0;
@@ -1600,7 +1754,7 @@ void write_part_table(void)
if (IS_PRIMARY(i) && p_info[i].flags == ACTIVE_FLAG)
ct++;
if (ct != 1)
- print_warning(NOT_DOS_MBR_BOOTABLE);
+ print_warning(_("Not precisely one primary partition is bootable. DOS MBR cannot boot this."));
}
void fp_printf(FILE *fp, char *format, ...)
@@ -1658,7 +1812,7 @@ void print_raw_table(void)
to_file = TRUE;
} else {
mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X,
- "Enter filename or press RETURN to display on screen: ");
+ _("Enter filename or press RETURN to display on screen: "));
if ((to_file = get_string(fname, LINE_LENGTH, NULL)) < 0)
return;
@@ -1666,7 +1820,7 @@ void print_raw_table(void)
if (to_file) {
if ((fp = fopen(fname, "w")) == NULL) {
char errstr[LINE_LENGTH];
- sprintf(errstr, PRINT_OPEN_ERR, fname);
+ sprintf(errstr, _("Cannot open file '%s'"), fname);
print_warning(errstr);
return;
}
@@ -1677,16 +1831,16 @@ void print_raw_table(void)
}
}
- fp_printf(fp, "Disk Drive: %s\n", disk_device);
+ fp_printf(fp, _("Disk Drive: %s\n"), disk_device);
- fp_printf(fp, "Sector 0:\n");
+ fp_printf(fp, _("Sector 0:\n"));
read_sector(buffer.c.b, 0);
fill_primary_table(&buffer);
print_file_buffer(fp, buffer.c.b);
for (i = 0; i < num_parts; i++)
if (IS_LOGICAL(p_info[i].num)) {
- fp_printf(fp, "Sector %d:\n", p_info[i].first_sector);
+ fp_printf(fp, _("Sector %d:\n"), p_info[i].first_sector);
read_sector(buffer.c.b, p_info[i].first_sector);
fill_logical_table(&buffer, &(p_info[i]));
print_file_buffer(fp, buffer.c.b);
@@ -1706,27 +1860,27 @@ void print_p_info_entry(FILE *fp, partition_info *p)
char part_str[40];
if (p->id == UNUSABLE)
- fp_printf(fp, " None ");
+ fp_printf(fp, _(" None "));
else if (p->id == FREE_SPACE && p->num == PRI_OR_LOG)
- fp_printf(fp, " Pri/Log");
+ fp_printf(fp, _(" Pri/Log"));
else if (p->id == FREE_SPACE && p->num == PRIMARY)
- fp_printf(fp, " Primary");
+ fp_printf(fp, _(" Primary"));
else if (p->id == FREE_SPACE && p->num == LOGICAL)
- fp_printf(fp, " Logical");
+ fp_printf(fp, _(" Logical"));
else
fp_printf(fp, "%2d %-7.7s", p->num+1,
- IS_LOGICAL(p->num) ? "Logical" : "Primary");
+ IS_LOGICAL(p->num) ? _("Logical") : _("Primary"));
fp_printf(fp, " ");
fp_printf(fp, "%8d%c", p->first_sector,
- ((p->first_sector/(sectors*heads)) !=
- ((float)p->first_sector/(sectors*heads)) ?
+ ((p->first_sector/cylinder_size) !=
+ ((float)p->first_sector/cylinder_size) ?
'*' : ' '));
fp_printf(fp, "%8d%c", p->last_sector,
- (((p->last_sector+1)/(sectors*heads)) !=
- ((float)(p->last_sector+1)/(sectors*heads)) ?
+ (((p->last_sector+1)/cylinder_size) !=
+ ((float)(p->last_sector+1)/cylinder_size) ?
'*' : ' '));
fp_printf(fp, "%7d%c", p->offset,
@@ -1738,29 +1892,29 @@ void print_p_info_entry(FILE *fp, partition_info *p)
size = p->last_sector - p->first_sector + 1;
fp_printf(fp, "%8d%c", size,
- ((size/(sectors*heads)) != ((float)size/(sectors*heads)) ?
+ ((size/cylinder_size) != ((float)size/cylinder_size) ?
'*' : ' '));
fp_printf(fp, " ");
if (p->id == UNUSABLE)
- sprintf(part_str, "%.17s", "Unusable");
+ sprintf(part_str, "%.17s", _("Unusable"));
else if (p->id == FREE_SPACE)
- sprintf(part_str, "%.17s", "Free Space");
- else if (partition_type[p->id])
- sprintf(part_str, "%.17s (%02X)", partition_type[p->id], p->id);
+ sprintf(part_str, "%.17s", _("Free Space"));
+ else if (partition_type_name(p->id))
+ sprintf(part_str, "%.17s (%02X)", partition_type_name(p->id), p->id);
else
- sprintf(part_str, "%.17s (%02X)", "Unknown", p->id);
+ sprintf(part_str, "%.17s (%02X)", _("Unknown"), p->id);
fp_printf(fp, "%-22.22s", part_str);
fp_printf(fp, " ");
if (p->flags == ACTIVE_FLAG)
- fp_printf(fp, "Boot (%02X)", p->flags);
+ fp_printf(fp, _("Boot (%02X)"), p->flags);
else if (p->flags != 0)
- fp_printf(fp, "Unknown (%02X)", p->flags);
+ fp_printf(fp, _("Unknown (%02X)"), p->flags);
else
- fp_printf(fp, "None (%02X)", p->flags);
+ fp_printf(fp, _("None (%02X)"), p->flags);
fp_printf(fp, "\n");
}
@@ -1776,7 +1930,7 @@ void print_p_info(void)
to_file = TRUE;
} else {
mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X,
- "Enter filename or press RETURN to display on screen: ");
+ _("Enter filename or press RETURN to display on screen: "));
if ((to_file = get_string(fname, LINE_LENGTH, NULL)) < 0)
return;
@@ -1784,7 +1938,7 @@ void print_p_info(void)
if (to_file) {
if ((fp = fopen(fname, "w")) == NULL) {
char errstr[LINE_LENGTH];
- sprintf(errstr, PRINT_OPEN_ERR, fname);
+ sprintf(errstr, _("Cannot open file '%s'"), fname);
print_warning(errstr);
return;
}
@@ -1795,11 +1949,11 @@ void print_p_info(void)
}
}
- fp_printf(fp, "Partition Table for %s\n", disk_device);
+ fp_printf(fp, _("Partition Table for %s\n"), disk_device);
fp_printf(fp, "\n");
- fp_printf(fp, " First Last\n");
- fp_printf(fp, " # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n");
- fp_printf(fp, "-- ------- -------- --------- ------ --------- ---------------------- ---------\n");
+ fp_printf(fp, _(" First Last\n"));
+ fp_printf(fp, _(" # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n"));
+ fp_printf(fp, _("-- ------- -------- --------- ------ --------- ---------------------- ---------\n"));
for (i = 0; i < num_parts; i++) {
if (pext && (p_info[i].first_sector >= ext_info.first_sector)) {
@@ -1820,10 +1974,13 @@ void print_p_info(void)
void print_part_entry(FILE *fp, int num, partition_info *pi)
{
int first = 0, start = 0, end = 0, size = 0;
- int ss = 0, sh = 0, sc = 0;
- int es = 0, eh = 0, ec = 0;
+ unsigned char ss, es, sh, eh;
+ int sc, ec;
int flags = 0, id = 0;
+ ss = sh = es = eh = 0;
+ sc = ec = 0;
+
if (pi != NULL) {
flags = pi->flags;
id = pi->id;
@@ -1836,20 +1993,9 @@ void print_part_entry(FILE *fp, int num, partition_info *pi)
start = pi->first_sector + pi->offset;
end = pi->last_sector;
size = end - start + 1;
- if ((start/(sectors*heads)) > 1023)
- start = heads*sectors*1024 - 1;
- if ((end/(sectors*heads)) > 1023)
- end = heads*sectors*1024 - 1;
-
- ss = start % sectors + 1;
- start /= sectors;
- sh = start % heads;
- sc = start / heads;
- es = end % sectors + 1;
- end /= sectors;
- eh = end % heads;
- ec = end / heads;
+ set_hsc0(&sh, &ss, &sc, start);
+ set_hsc0(&eh, &es, &ec, end);
}
fp_printf(fp, "%2d 0x%02X %4d %4d %4d 0x%02X %4d %4d %4d %8d %9d\n",
@@ -1868,7 +2014,7 @@ void print_part_table(void)
to_file = TRUE;
} else {
mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X,
- "Enter filename or press RETURN to display on screen: ");
+ _("Enter filename or press RETURN to display on screen: "));
if ((to_file = get_string(fname, LINE_LENGTH, NULL)) < 0)
return;
@@ -1876,7 +2022,7 @@ void print_part_table(void)
if (to_file) {
if ((fp = fopen(fname, "w")) == NULL) {
char errstr[LINE_LENGTH];
- sprintf(errstr, PRINT_OPEN_ERR, fname);
+ sprintf(errstr, _("Cannot open file '%s'"), fname);
print_warning(errstr);
return;
}
@@ -1887,11 +2033,11 @@ void print_part_table(void)
}
}
- fp_printf(fp, "Partition Table for %s\n", disk_device);
+ fp_printf(fp, _("Partition Table for %s\n"), disk_device);
fp_printf(fp, "\n");
- fp_printf(fp, " ---Starting--- ----Ending---- Start Number of\n");
- fp_printf(fp, " # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n");
- fp_printf(fp, "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n");
+ fp_printf(fp, _(" ---Starting--- ----Ending---- Start Number of\n"));
+ fp_printf(fp, _(" # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n"));
+ fp_printf(fp, _("-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"));
for (i = 0; i < 4; i++) {
for (j = 0;
@@ -1924,10 +2070,10 @@ void print_tables(void)
static struct MenuItem menuFormat[]=
{
- { 'r', "Raw", "Print the table using raw data format" },
- { 's', "Sectors", "Print the table ordered by sectors" },
- { 't', "Table", "Just print the partition table" },
- { ESC, "Cancel", "Don't print the table" },
+ { 'r', N_("Raw"), N_("Print the table using raw data format") },
+ { 's', N_("Sectors"), N_("Print the table ordered by sectors") },
+ { 't', N_("Table"), N_("Just print the partition table") },
+ { ESC, N_("Cancel"), N_("Don't print the table") },
{ 0, NULL, NULL }
};
@@ -1952,51 +2098,50 @@ void print_tables(void)
}
#define END_OF_HELP "EOHS!"
-#define NEW_HELP_SCREEN "SNHS!"
void display_help()
{
char *help_text[] = {
- "Help Screen for cfdisk " VERSION,
+ N_("Help Screen for cfdisk"),
"",
- "This is cfdisk, a curses based disk partitioning programs, which",
- "allows you to create, delete and modify partitions on your hard",
- "disk drive.",
+ N_("This is cfdisk, a curses based disk partitioning program, which"),
+ N_("allows you to create, delete and modify partitions on your hard"),
+ N_("disk drive."),
"",
- "Copyright (C) 1994-1998 Kevin E. Martin & aeb",
+ N_("Copyright (C) 1994-1999 Kevin E. Martin & aeb"),
"",
- "Command Meaning",
- "------- -------",
- " b Toggle bootable flag of the current partition",
- " d Delete the current partition",
- " g Change cylinders, heads, sectors-per-track parameters",
- " WARNING: This option should only be used by people who",
- " know what they are doing.",
- " h Print this screen",
- " m Maximize disk usage of the current partition",
- " Note: This may make the partition incompatible with",
- " DOS, OS/2, ...",
- " n Create new partition from free space",
- " p Print partition table to the screen or to a file",
- " There are several different formats for the partition",
- " that you can choose from:",
- " r - Raw data (exactly what would be written to disk)",
- " s - Table ordered by sectors",
- " t - Table in raw format",
- " q Quit program without writing partition table",
- " t Change the filesystem type",
- " u Change units of the partition size display",
- " Rotates through Mb, sectors and cylinders",
- " W Write partition table to disk (must enter upper case W)",
- " Since this might destroy data on the disk, you must",
- " either confirm or deny the write by entering `yes' or",
- " `no'",
- "Up Arrow Move cursor to the previous partition",
- "Down Arrow Move cursor to the next partition",
- "CTRL-L Redraws the screen",
- " ? Print this screen",
+ N_("Command Meaning"),
+ N_("------- -------"),
+ N_(" b Toggle bootable flag of the current partition"),
+ N_(" d Delete the current partition"),
+ N_(" g Change cylinders, heads, sectors-per-track parameters"),
+ N_(" WARNING: This option should only be used by people who"),
+ N_(" know what they are doing."),
+ N_(" h Print this screen"),
+ N_(" m Maximize disk usage of the current partition"),
+ N_(" Note: This may make the partition incompatible with"),
+ N_(" DOS, OS/2, ..."),
+ N_(" n Create new partition from free space"),
+ N_(" p Print partition table to the screen or to a file"),
+ N_(" There are several different formats for the partition"),
+ N_(" that you can choose from:"),
+ N_(" r - Raw data (exactly what would be written to disk)"),
+ N_(" s - Table ordered by sectors"),
+ N_(" t - Table in raw format"),
+ N_(" q Quit program without writing partition table"),
+ N_(" t Change the filesystem type"),
+ N_(" u Change units of the partition size display"),
+ N_(" Rotates through MB, sectors and cylinders"),
+ N_(" W Write partition table to disk (must enter upper case W)"),
+ N_(" Since this might destroy data on the disk, you must"),
+ N_(" either confirm or deny the write by entering `yes' or"),
+ N_(" `no'"),
+ N_("Up Arrow Move cursor to the previous partition"),
+ N_("Down Arrow Move cursor to the next partition"),
+ N_("CTRL-L Redraws the screen"),
+ N_(" ? Print this screen"),
"",
- "Note: All of the commands can be entered with either upper or lower",
- "case letters (except for Writes).",
+ N_("Note: All of the commands can be entered with either upper or lower"),
+ N_("case letters (except for Writes)."),
END_OF_HELP
};
@@ -2005,15 +2150,13 @@ void display_help()
erase();
move(0, 0);
- while (strcmp(help_text[cur_line], END_OF_HELP))
- if (!strcmp(help_text[cur_line], NEW_HELP_SCREEN)) {
- menuContinue();
- erase();
- move(0, 0);
- cur_line++;
- } else
- fp_printf(fp, "%s\n", help_text[cur_line++]);
-
+ while (strcmp(help_text[cur_line], END_OF_HELP)) {
+ if (help_text[cur_line][0])
+ fp_printf(fp, "%s\n", _(help_text[cur_line]));
+ else
+ fp_printf(fp, "\n");
+ cur_line++;
+ }
menuContinue();
}
@@ -2023,15 +2166,15 @@ int change_geometry(void)
int done = FALSE;
char def[LINE_LENGTH];
char response[LINE_LENGTH];
- int tmp_val;
+ int tmp_val, max_cyls, i;
while (!done) {
static struct MenuItem menuGeometry[]=
{
- { 'c', "Cylinders", "Change cylinder geometry" },
- { 'h', "Heads", "Change head geometry" },
- { 's', "Sectors", "Change sector geometry" },
- { 'd', "Done", "Done with changing geometry" },
+ { 'c', N_("Cylinders"), N_("Change cylinder geometry") },
+ { 'h', N_("Heads"), N_("Change head geometry") },
+ { 's', N_("Sectors"), N_("Change sector geometry") },
+ { 'd', N_("Done"), N_("Done with changing geometry") },
{ 0, NULL, NULL }
};
move(COMMAND_LINE_Y, COMMAND_LINE_X);
@@ -2042,42 +2185,47 @@ int change_geometry(void)
switch (toupper( menuSimple(menuGeometry, 3) )) {
case 'C':
- sprintf(def, "%d", cylinders);
+ sprintf(def, "%ld", actual_size/cylinder_size);
mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X,
- "Enter the number of cylinders: ");
- if (get_string(response, LINE_LENGTH, def) > 0) {
+ _("Enter the number of cylinders: "));
+ i = get_string(response, LINE_LENGTH, def);
+ if (i == GS_DEFAULT) {
+ user_cylinders = actual_size/cylinder_size;
+ ret_val = TRUE;
+ } else if (i > 0) {
tmp_val = atoi(response);
- if (tmp_val > 0 && tmp_val <= MAX_CYLINDERS) {
- cylinders = tmp_val;
+ max_cyls = 0x7fffffff / cylinder_size;
+ if (tmp_val > 0 && tmp_val <= max_cyls) {
+ user_cylinders = tmp_val;
ret_val = TRUE;
} else
- print_warning(BAD_CYLINDERS);
+ print_warning(_("Illegal cylinders value"));
}
break;
case 'H':
sprintf(def, "%d", heads);
mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X,
- "Enter the number of heads: ");
+ _("Enter the number of heads: "));
if (get_string(response, LINE_LENGTH, def) > 0) {
tmp_val = atoi(response);
if (tmp_val > 0 && tmp_val <= MAX_HEADS) {
- heads = tmp_val;
+ user_heads = tmp_val;
ret_val = TRUE;
} else
- print_warning(BAD_HEADS);
+ print_warning(_("Illegal heads value"));
}
break;
case 'S':
sprintf(def, "%d", sectors);
mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X,
- "Enter the number of sectors per track: ");
+ _("Enter the number of sectors per track: "));
if (get_string(response, LINE_LENGTH, def) > 0) {
tmp_val = atoi(response);
if (tmp_val > 0 && tmp_val <= MAX_SECTORS) {
- sectors = tmp_val;
+ user_sectors = tmp_val;
ret_val = TRUE;
} else
- print_warning(BAD_SECTORS);
+ print_warning(_("Illegal sectors value"));
}
break;
case ESC:
@@ -2088,10 +2236,17 @@ int change_geometry(void)
putchar(BELL);
break;
}
+
+ if (ret_val) {
+ decide_on_geometry();
+ draw_screen();
+ }
}
if (ret_val) {
- int disk_end = heads*sectors*cylinders-1;
+ int disk_end;
+
+ disk_end = total_size-1;
if (p_info[num_parts-1].last_sector > disk_end) {
while (p_info[num_parts-1].first_sector > disk_end) {
@@ -2130,34 +2285,50 @@ void change_id(int i)
int num_types = 0;
int num_across, num_down;
int len, new_id = ((p_info[i].id == LINUX) ? LINUX_SWAP : LINUX);
- int y_start, y_end;
- int j, pos;
+ int y_start, y_end, row, row_min, row_max, row_offset, j, needmore;
- for (num_types = 0, j = 1; j < NUM_PART_TYPES; j++)
- if (partition_type[j])
- num_types++;
+ for (j = 1; i386_sys_types[j].name; j++) ;
+ num_types = j-1; /* do not count the Empty type */
num_across = COLS/COL_ID_WIDTH;
num_down = (((float)num_types)/num_across + 1);
y_start = COMMAND_LINE_Y - 1 - num_down;
- if (y_start > DISK_TABLE_START+cur_part+4)
- y_start = DISK_TABLE_START+cur_part+4;
- y_end = y_start + num_down - 1;
-
- for (j = y_start - 1; j <= y_end + 1; j++) {
- move(j, 0);
- clrtoeol();
+ if (y_start < 1) {
+ y_start = 1;
+ y_end = COMMAND_LINE_Y - 2;
+ } else {
+ if (y_start > DISK_TABLE_START+cur_part+4)
+ y_start = DISK_TABLE_START+cur_part+4;
+ y_end = y_start + num_down - 1;
}
- for (pos = 0, j = 1; j < NUM_PART_TYPES; j++)
- if (partition_type[j]) {
- move(y_start + pos % num_down, (pos/num_down)*COL_ID_WIDTH + 1);
- printw("%02X %-16.16s", j, partition_type[j]);
- pos++;
+ row_min = 1;
+ row_max = COMMAND_LINE_Y - 2;
+ row_offset = 0;
+ do {
+ for (j = y_start - 1; j <= y_end + 1; j++) {
+ move(j, 0);
+ clrtoeol();
}
+ needmore = 0;
+ for (j = 1; i386_sys_types[j].name; j++) {
+ row = y_start + (j-1) % num_down - row_offset;
+ if (row >= row_min && row <= row_max) {
+ move(row, ((j-1)/num_down)*COL_ID_WIDTH + 1);
+ printw("%02X %-20.20s",
+ i386_sys_types[j].type,
+ i386_sys_types[j].name);
+ }
+ if (row > row_max)
+ needmore = 1;
+ }
+ if (needmore)
+ menuContinue();
+ row_offset += (row_max - row_min + 1);
+ } while(needmore);
sprintf(def, "%02X", new_id);
- mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X, "Enter filesystem type: ");
+ mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X, _("Enter filesystem type: "));
if ((len = get_string(id, 2, def)) <= 0 && len != GS_DEFAULT)
return;
@@ -2175,9 +2346,9 @@ void change_id(int i)
}
if (new_id == 0)
- print_warning(ID_EMPTY);
+ print_warning(_("Cannot change FS Type to empty"));
else if (is_extended(new_id))
- print_warning(ID_EXT);
+ print_warning(_("Cannot change FS Type to extended"));
else
p_info[i].id = new_id;
}
@@ -2187,6 +2358,7 @@ void draw_partition(int i)
int size, j;
int y = i + DISK_TABLE_START + 2 - (cur_part/NUM_ON_SCREEN)*NUM_ON_SCREEN;
char *t;
+ double fsize;
if (!arrow_cursor) {
move(y, 0);
@@ -2199,38 +2371,38 @@ void draw_partition(int i)
"%s%d", my_basename(disk_device), p_info[i].num+1);
if (p_info[i].flags) {
if (p_info[i].flags == ACTIVE_FLAG)
- mvaddstr(y, FLAGS_START, "Boot");
+ mvaddstr(y, FLAGS_START, _("Boot"));
else
- mvprintw(y, FLAGS_START, "Unk(%02X)", p_info[i].flags);
+ mvprintw(y, FLAGS_START, _("Unk(%02X)"), p_info[i].flags);
if (p_info[i].first_sector == 0 || IS_LOGICAL(p_info[i].num)) {
if (p_info[i].offset != sectors)
- addstr(", NC");
+ addstr(_(", NC"));
} else {
if (p_info[i].offset != 0)
- addstr(", NC");
+ addstr(_(", NC"));
}
} else {
if (p_info[i].first_sector == 0 || IS_LOGICAL(p_info[i].num)) {
if (p_info[i].offset != sectors)
- mvaddstr(y, FLAGS_START, "NC");
+ mvaddstr(y, FLAGS_START, _("NC"));
} else {
if (p_info[i].offset != 0)
- mvaddstr(y, FLAGS_START, "NC");
+ mvaddstr(y, FLAGS_START, _("NC"));
}
}
}
mvaddstr(y, PTYPE_START,
(p_info[i].id == UNUSABLE ? "" :
- (IS_LOGICAL(p_info[i].num) ? "Logical" :
- (p_info[i].num >= 0 ? "Primary" :
- (p_info[i].num == PRI_OR_LOG ? "Pri/Log" :
- (p_info[i].num == PRIMARY ? "Primary" : "Logical"))))));
+ (IS_LOGICAL(p_info[i].num) ? _("Logical") :
+ (p_info[i].num >= 0 ? _("Primary") :
+ (p_info[i].num == PRI_OR_LOG ? _("Pri/Log") :
+ (p_info[i].num == PRIMARY ? _("Primary") : _("Logical")))))));
t = partition_type_text(i);
if (t)
mvaddstr(y, FSTYPE_START, t);
else
- mvprintw(y, FSTYPE_START, "Unknown (%02X)", p_info[i].id);
+ mvprintw(y, FSTYPE_START, _("Unknown (%02X)"), p_info[i].id);
if (p_info[i].volume_label[0]) {
int l = strlen(p_info[i].volume_label);
@@ -2240,15 +2412,17 @@ void draw_partition(int i)
}
size = p_info[i].last_sector - p_info[i].first_sector + 1;
+ fsize = (double) size * SECTOR_SIZE;
if (display_units == SECTORS)
mvprintw(y, SIZE_START, "%9d", size);
else if (display_units == CYLINDERS)
- mvprintw(y, SIZE_START, "%9d", size/(sectors*heads));
- else
- mvprintw(y, SIZE_START, "%9.2f", ceiling(size/20.48)/100);
- if (((size/(sectors*heads)) != ceiling(size/(sectors*(float)heads))) ||
- ((p_info[i].first_sector/(sectors*heads)) !=
- ceiling(p_info[i].first_sector/(sectors*heads))))
+ mvprintw(y, SIZE_START, "%9d", size/cylinder_size);
+ else if (display_units == MEGABYTES)
+ mvprintw(y, SIZE_START, "%9.2f", ceiling((100*fsize)/(K*K))/100);
+ else if (display_units == GIGABYTES)
+ mvprintw(y, SIZE_START, "%9.2f", ceiling((100*fsize)/(K*K*K))/100);
+ if (size % cylinder_size != 0 ||
+ p_info[i].first_sector % cylinder_size != 0)
mvprintw(y, COLUMNS-1, "*");
}
@@ -2279,7 +2453,7 @@ void draw_screen(void)
int i;
char *line;
- line = (char *)malloc((COLS+1)*sizeof(char));
+ line = (char *) xmalloc((COLS+1)*sizeof(char));
if (warning_last_time) {
for (i = 0; i < COLS; i++) {
@@ -2297,23 +2471,28 @@ void draw_screen(void)
sprintf(line, "cfdisk %s", VERSION);
mvaddstr(HEADER_START, (COLS-strlen(line))/2, line);
- sprintf(line, "Disk Drive: %s", disk_device);
+ sprintf(line, _("Disk Drive: %s"), disk_device);
mvaddstr(HEADER_START+2, (COLS-strlen(line))/2, line);
- sprintf(line, "Heads: %d Sectors per Track: %d Cylinders: %d",
- heads, sectors, cylinders);
+ { long long bytes = actual_size*(long long) SECTOR_SIZE;
+ sprintf(line, _("Size: %lld bytes"), bytes); }
mvaddstr(HEADER_START+3, (COLS-strlen(line))/2, line);
+ sprintf(line, _("Heads: %d Sectors per Track: %d Cylinders: %d"),
+ heads, sectors, cylinders);
+ mvaddstr(HEADER_START+4, (COLS-strlen(line))/2, line);
- mvaddstr(DISK_TABLE_START, NAME_START, "Name");
- mvaddstr(DISK_TABLE_START, FLAGS_START, "Flags");
- mvaddstr(DISK_TABLE_START, PTYPE_START-1, "Part Type");
- mvaddstr(DISK_TABLE_START, FSTYPE_START, "FS Type");
- mvaddstr(DISK_TABLE_START, LABEL_START+1, "[Label]");
+ mvaddstr(DISK_TABLE_START, NAME_START, _("Name"));
+ mvaddstr(DISK_TABLE_START, FLAGS_START, _("Flags"));
+ mvaddstr(DISK_TABLE_START, PTYPE_START-1, _("Part Type"));
+ mvaddstr(DISK_TABLE_START, FSTYPE_START, _("FS Type"));
+ mvaddstr(DISK_TABLE_START, LABEL_START+1, _("[Label]"));
if (display_units == SECTORS)
- mvaddstr(DISK_TABLE_START, SIZE_START, " Sectors");
+ mvaddstr(DISK_TABLE_START, SIZE_START, _(" Sectors"));
else if (display_units == CYLINDERS)
- mvaddstr(DISK_TABLE_START, SIZE_START, "Cylinders");
- else
- mvaddstr(DISK_TABLE_START, SIZE_START, "Size (MB)");
+ mvaddstr(DISK_TABLE_START, SIZE_START, _("Cylinders"));
+ else if (display_units == MEGABYTES)
+ mvaddstr(DISK_TABLE_START, SIZE_START, _("Size (MB)"));
+ else if (display_units == GIGABYTES)
+ mvaddstr(DISK_TABLE_START, SIZE_START, _("Size (GB)"));
move(DISK_TABLE_START+1, 1);
for (i = 1; i < COLS-1; i++)
@@ -2368,17 +2547,17 @@ void do_curses_fdisk(void)
static struct MenuItem menuMain[]=
{
- { 'b', "Bootable", "Toggle bootable flag of the current partition" },
- { 'd', "Delete", "Delete the current partition" },
- { 'g', "Geometry", "Change disk geometry (experts only)" },
- { 'h', "Help", "Print help screen" },
- { 'm', "Maximize", "Maximize disk usage of the current partition (experts only)" },
- { 'n', "New", "Create new partition from free space" },
- { 'p', "Print", "Print partition table to the screen or to a file" },
- { 'q', "Quit", "Quit program without writing partition table" },
- { 't', "Type", "Change the filesystem type (DOS, Linux, OS/2 and so on)" },
- { 'u', "Units", "Change units of the partition size display (MB, sect, cyl)" },
- { 'W', "Write", "Write partition table to disk (this might destroy data)" },
+ { 'b', N_("Bootable"), N_("Toggle bootable flag of the current partition") },
+ { 'd', N_("Delete"), N_("Delete the current partition") },
+ { 'g', N_("Geometry"), N_("Change disk geometry (experts only)") },
+ { 'h', N_("Help"), N_("Print help screen") },
+ { 'm', N_("Maximize"), N_("Maximize disk usage of the current partition (experts only)") },
+ { 'n', N_("New"), N_("Create new partition from free space") },
+ { 'p', N_("Print"), N_("Print partition table to the screen or to a file") },
+ { 'q', N_("Quit"), N_("Quit program without writing partition table") },
+ { 't', N_("Type"), N_("Change the filesystem type (DOS, Linux, OS/2 and so on)") },
+ { 'u', N_("Units"), N_("Change units of the partition size display (MB, sect, cyl)") },
+ { 'W', N_("Write"), N_("Write partition table to disk (this might destroy data)") },
{ 0, NULL, NULL }
};
curses_started = 1;
@@ -2424,7 +2603,7 @@ void do_curses_fdisk(void)
if (p_info[cur_part].id > 0)
p_info[cur_part].flags ^= 0x80;
else
- print_warning(NO_FLAGS);
+ print_warning(_("Cannot make this partition bootable"));
break;
case 'D':
case 'd':
@@ -2434,7 +2613,7 @@ void do_curses_fdisk(void)
cur_part = num_parts - 1;
draw_screen();
} else
- print_warning(DEL_EMPTY);
+ print_warning(_("Cannot delete an empty partition"));
break;
case 'G':
case 'g':
@@ -2454,9 +2633,9 @@ void do_curses_fdisk(void)
} else if (p_info[cur_part].offset != 0)
p_info[cur_part].offset = 0;
else
- print_warning(MAX_UNMAXABLE);
+ print_warning(_("Cannot maximize this partition"));
} else
- print_warning(MAX_UNMAXABLE);
+ print_warning(_("Cannot maximize this partition"));
break;
case 'N':
case 'n':
@@ -2464,9 +2643,9 @@ void do_curses_fdisk(void)
new_part(cur_part);
draw_screen();
} else if (p_info[cur_part].id == UNUSABLE)
- print_warning(ADD_UNUSABLE);
+ print_warning(_("This partition is unusable"));
else
- print_warning(ADD_EXISTS);
+ print_warning(_("This partition is already in use"));
break;
case 'P':
case 'p':
@@ -2483,16 +2662,18 @@ void do_curses_fdisk(void)
change_id(cur_part);
draw_screen();
} else
- print_warning(TYPE_EMPTY);
+ print_warning(_("Cannot change the type of an empty partition"));
break;
case 'U':
case 'u':
- if (display_units == MEGABYTES)
+ if (display_units == GIGABYTES)
+ display_units = MEGABYTES;
+ else if (display_units == MEGABYTES)
display_units = SECTORS;
else if (display_units == SECTORS)
display_units = CYLINDERS;
else if (display_units == CYLINDERS)
- display_units = MEGABYTES;
+ display_units = MEGABYTES; /* not yet GIGA */
draw_screen();
break;
case 'W':
@@ -2508,20 +2689,20 @@ void do_curses_fdisk(void)
if (!draw_cursor(-1))
command = 0;
else
- print_warning(NO_MORE_PARTS);
+ print_warning(_("No more partitions"));
break;
case MENU_DOWN : /* Down arrow */
if (!draw_cursor(1))
command = 0;
else
- print_warning(NO_MORE_PARTS);
+ print_warning(_("No more partitions"));
break;
case REDRAWKEY:
clear();
draw_screen();
break;
default:
- print_warning(BAD_COMMAND);
+ print_warning(_("Illegal command"));
putchar(BELL); /* CTRL-G */
}
}
@@ -2531,24 +2712,28 @@ void do_curses_fdisk(void)
void copyright(void)
{
- fprintf(stderr, "Copyright (C) 1994-1997 Kevin E. Martin & aeb\n");
+ fprintf(stderr, _("Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"));
}
void usage(char *prog_name)
{
- fprintf(stderr, "\nUsage:\n");
- fprintf(stderr, "Print version:\n");
- fprintf(stderr, "\t%s -v\n", prog_name);
- fprintf(stderr, "Print partition table:\n");
- fprintf(stderr, "\t%s -P {r|s|t} [options] device\n", prog_name);
- fprintf(stderr, "Interactive use:\n");
- fprintf(stderr, "\t%s [options] device\n", prog_name);
- fprintf(stderr, "
-Options:
--a: Use arrow instead of highlighting;
--z: Start with a zero partition table, instead of reading the pt from disk;
--c C -h H -s S: Override the kernel's idea of the number of cylinders,
- the number of heads and the number of sectors/track.\n\n");
+ /* Unfortunately, xgettext does not handle multi-line strings */
+ /* so, let's use explicit \n's instead */
+ fprintf(stderr, _("\n"
+"Usage:\n"
+"Print version:\n"
+" %s -v\n"
+"Print partition table:\n"
+" %s -P {r|s|t} [options] device\n"
+"Interactive use:\n"
+" %s [options] device\n"
+"\n"
+"Options:\n"
+"-a: Use arrow instead of highlighting;\n"
+"-z: Start with a zero partition table, instead of reading the pt from disk;\n"
+"-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n"
+" the number of heads and the number of sectors/track.\n\n"),
+ prog_name, prog_name, prog_name);
copyright();
}
@@ -2559,31 +2744,36 @@ main(int argc, char **argv)
int c;
int i, len;
- setlocale(LC_CTYPE, "");
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
- while ((c = getopt(argc, argv, "ac:h:s:vzP:")) != EOF)
+ while ((c = getopt(argc, argv, "ac:gh:s:vzP:")) != EOF)
switch (c) {
case 'a':
arrow_cursor = TRUE;
break;
case 'c':
- cylinders = atoi(optarg);
- if (cylinders <= 0 || cylinders > MAX_CYLINDERS) {
- fprintf(stderr, "%s: %s\n", argv[0], BAD_CYLINDERS);
+ user_cylinders = cylinders = atoi(optarg);
+ if (cylinders <= 0) {
+ fprintf(stderr, "%s: %s\n", argv[0], _("Illegal cylinders value"));
exit(1);
}
break;
+ case 'g':
+ use_partition_table_geometry = TRUE;
+ break;
case 'h':
- heads = atoi(optarg);
+ user_heads = heads = atoi(optarg);
if (heads <= 0 || heads > MAX_HEADS) {
- fprintf(stderr, "%s: %s\n", argv[0], BAD_HEADS);
+ fprintf(stderr, "%s: %s\n", argv[0], _("Illegal heads value"));
exit(1);
}
break;
case 's':
- sectors = atoi(optarg);
+ user_sectors = sectors = atoi(optarg);
if (sectors <= 0 || sectors > MAX_SECTORS) {
- fprintf(stderr, "%s: %s\n", argv[0], BAD_SECTORS);
+ fprintf(stderr, "%s: %s\n", argv[0], _("Illegal sectors value"));
exit(1);
}
break;
diff --git a/fdisk/common.h b/fdisk/common.h
new file mode 100644
index 000000000..d9fa4e8ec
--- /dev/null
+++ b/fdisk/common.h
@@ -0,0 +1,8 @@
+/* common stuff for fdisk, cfdisk, sfdisk */
+
+struct systypes {
+ unsigned char type;
+ char *name;
+};
+
+extern struct systypes i386_sys_types[];
diff --git a/fdisk/delpart.c b/fdisk/delpart.c
new file mode 100644
index 000000000..8504c0223
--- /dev/null
+++ b/fdisk/delpart.c
@@ -0,0 +1,40 @@
+/* very primitive wrapper around the `delete partition' ioctl */
+#include <stdio.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <linux/blkpg.h>
+
+int
+main(int argc, char **argv){
+ int fd;
+ struct blkpg_ioctl_arg a;
+ struct blkpg_partition p;
+
+ if (argc != 3) {
+ fprintf(stderr,
+ "usage: %s diskdevice partitionnr\n",
+ argv[0]);
+ exit(1);
+ }
+ if ((fd = open(argv[1], O_RDONLY)) < 0) {
+ perror(argv[1]);
+ exit(1);
+ }
+ p.pno = atoi(argv[2]);
+ p.start = 0;
+ p.length = 0;
+ p.devname[0] = 0;
+ p.volname[0] = 0;
+ a.op = BLKPG_DEL_PARTITION;
+ a.flags = 0;
+ a.datalen = sizeof(p);
+ a.data = &p;
+
+ if (ioctl(fd, BLKPG, &a) == -1) {
+ perror("BLKPG");
+ exit(1);
+ }
+
+ return 0;
+}
diff --git a/fdisk/doc/CFdisk-Portuguese.html b/fdisk/doc/CFdisk-Portuguese.html
new file mode 100644
index 000000000..6b699ee9b
--- /dev/null
+++ b/fdisk/doc/CFdisk-Portuguese.html
@@ -0,0 +1,1704 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Gleydson Mazioli da Silva">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (Win95; I) [Netscape]">
+ <title>CFdisk-Portugues-HOWTO</title>
+</head>
+<body>
+
+<center><b><font size=+1>CFdisk-Portuguese Copyright (C) 1999 Gleydson
+M. da Silva</font></b></center>
+
+<p><br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<p>
+<hr WIDTH="100%">
+<center>&nbsp;<i>Gleydson M. da Silva</i> - <b>gleydson@linuxbr.com.br</b>
+<br>Vers&atilde;o: 1.68
+<br>
+<hr WIDTH="100%"></center>
+
+<p><br>
+<br>
+<br>
+<br>
+<p><a NAME="Indice"></a><b><font size=+1>[ Indice ]</font></b>
+<br>&nbsp;
+<p><b><font size=+1>1</font></b> - <a href="#1">Introdu&ccedil;&atilde;o
+ao CFdisk</a>
+<br>&nbsp; <b>1.1</b> - <a href="#1.1">O que &eacute; uma parti&ccedil;&atilde;o
+de disco</a>
+<br>&nbsp; <b>1.2</b> - <a href="#1.2">O que &eacute; a Tabela de parti&ccedil;&atilde;o</a>
+<br>&nbsp; <b>1.3</b> - <a href="#1.3">Introdu&ccedil;&atilde;o ao Particionamento
+de Discos</a>
+<br>&nbsp; <b>1.4</b> - <a href="#1.4">Identificadores utilizados neste
+manual</a>
+<br>&nbsp; <b>1.5</b> - <a href="#1.5">Identifica&ccedil;&atilde;o de discos
+e parti&ccedil;&otilde;es no Sistema Linux</a>
+<br>&nbsp; <b>1.6</b> - <a href="#1.6">Tipos de parti&ccedil;&otilde;es
+de disco</a>
+<br>&nbsp; <b>1.7</b> - <a href="#1.7">Observa&ccedil;&otilde;es sobre
+o formato DOS 6.xx (FAT16)</a>
+<p><b><font size=+1>2</font></b> - <a href="#2">Iniciando o programa CFdisk</a>
+<br>&nbsp; <b>2.1</b> - <a href="#2.1">Op&ccedil;&otilde;es de Linha de
+comando</a>
+<br>&nbsp; <b>2.2</b> - <a href="#2.2">Conhecendo a tela do CFdisk</a>
+<br>&nbsp; <b>2.3</b> - <a href="#2.3">Descri&ccedil;&atilde;o dos comandos</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.1</b> - <a href="#2.3.1">Setas Acima/Abaixo
+- Esquerda/Direita</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.2</b> - <a href="#2.3.2">&lt;CTRL>+&lt;l></a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.3</b> - <a href="#2.3.3">Boot</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.4</b> - <a href="#2.3.4">Delete</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.5</b> - <a href="#2.3.5">Geometry</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.6</b> - <a href="#2.3.6">Help</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.7</b> - <a href="#2.3.7">Maximize</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.8</b> - <a href="#2.3.8">New</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.9</b> - <a href="#2.3.9">Print</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.10</b> - <a href="#2.3.10">Quit</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.11</b> - <a href="#2.3.11">Type</a>
+<br>&nbsp;&nbsp;&nbsp;<b> 2.3.12</b> - <a href="#2.3.12">Units</a>
+<br>&nbsp;&nbsp;&nbsp; <b>2.3.13</b> - <a href="#2.3.13">Write</a>
+<p><b><font size=+1>3</font></b> - <a href="#3">Tipos de parti&ccedil;&otilde;es
+compat&iacute;veis com o CFdisk</a>
+<p><b><font size=+1>4</font></b> - <a href="#4">Direitos do Autor</a>
+<p><b><font size=+1>5</font></b> - <a href="#5">Licen&ccedil;as e Garantias
+sobre este documento</a>
+<p><b><font size=+1>6</font></b> - <a href="#6">Notas sobre marcas registradas</a>
+<p><font size=+1>7</font> - <a href="#7">Agradecimentos</a>
+<br>
+<hr WIDTH="100%">
+<br>&nbsp;
+<br>&nbsp;
+<br>
+<br>
+<br>
+<center>
+<p><a NAME="1"></a><u><font size=+1>1-) Introdu&ccedil;&atilde;o ao CFdisk</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; CFdisk &eacute; um programa utilizado para fazer
+o particionamento de discos, utilizando uma interface em modo texto.
+<br>As grandes caracter&iacute;sticas deste programa, al&eacute;m de sua
+interface de comunica&ccedil;&atilde;o com o usu&aacute;rio e a enorme
+quantidade de parti&ccedil;&otilde;es que manipula, &eacute; a grande facilidade
+de utiliza&ccedil;&atilde;o, o seu poder de manipula&ccedil;&atilde;o de
+parti&ccedil;&otilde;es e a sua precis&atilde;o que fazem com que o usu&aacute;rio
+tenha mais confian&ccedil;a durante o particionamento de disco.
+<br>&nbsp;&nbsp;&nbsp; &Eacute; recomend&aacute;vel a leitura deste texto,
+mesmo que tenha uma no&ccedil;&atilde;o sobre o particionamento de discos,
+exceto para os <i>gurus</i> que j&aacute; conhecem a fundo a forma de trabalho,
+em geral, de programas deste tipo, pois o particionamento de disco <b>pode
+destruir os seus arquivos e parti&ccedil;&otilde;es j&aacute; existentes</b>,
+se for usado de forma incorreta.
+<br>&nbsp; O programa CFdisk pode ser utilizado em qualquer sistema operacional
+que esteja de acordo com o padr&atilde;o POSIX (Linux, UNIX, FreeBSD, HPUX,
+etc).
+<p>&nbsp; A vers&atilde;o do CFdisk utilizada nas explica&ccedil;&otilde;es
+deste manual &eacute; a <i>0.8</i>, mas isto n&atilde;o impede que este
+manual seja utilizado com vers&otilde;es futuras ou anteriores deste programa.
+As caracter&iacute;sticas principais do programa CFdisk e as explica&ccedil;&otilde;es
+sobre particionamento, s&atilde;o v&aacute;lidas para quaisquer vers&otilde;es
+deste programa.
+<br>&nbsp;
+<p><b>&nbsp;&nbsp; Este documento &eacute; distribu&iacute;do com a iten&ccedil;&atilde;o
+de ser &uacute;til ao seu utilizador, no entanto N&Atilde;O TEM NENHUMA
+GARANTIA,&nbsp; EXPL&Iacute;CITAS OU IMPL&Iacute;CITAS , COMERCIAIS OU
+DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. Consulte a Licen&ccedil;a
+P&uacute;blica Geral&nbsp; GNU para maiores detalhes.</b>
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<center>
+<p><a NAME="1.1"></a><u><font size=+1>1.1-) Parti&ccedil;&atilde;o de Disco</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Uma <i>Parti&ccedil;&atilde;o de Disco</i> &eacute;
+o local onde o sistema operacional armazena seu sistema de arquivos(arquivos,
+diret&oacute;rios, FAT, boot sector, etc).
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="1.2"></a><u><font size=+1>1.2-) Tabela de parti&ccedil;&atilde;o</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; A <i>Tabela de parti&ccedil;&atilde;o</i> &eacute;
+o local do disco r&iacute;gido onde se localizam os dados sobre todas as
+parti&ccedil;&otilde;es existentes no disco como o sistema de arquivos
+utilizado, se ela &eacute; inicializ&aacute;vel, a cabe&ccedil;a inicial/final,
+setor inicial/final, cilindro inicial/final, n&uacute;mero de setores ocupados
+por ela no disco.
+<br>&nbsp;
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="1.3"></a><u><font size=+1>1.3-) Introdu&ccedil;&atilde;o
+ao particionamento de discos</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Particionar o disco r&iacute;gido &eacute; dividir
+ele em partes para armazenamento de arquivos e programas. As parti&ccedil;&otilde;es
+criadas no disco podem ter o tamanho que desejar (desde que esteja dentro
+da capacidade m&aacute;xima do disco r&iacute;gido).
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Uma parti&ccedil;&atilde;o n&atilde;o interfere
+em outras parti&ccedil;&otilde;es do mesmo disco(&eacute; como se tivessemos
+v&aacute;rios discos r&iacute;gidos dentro de um), e nem em outros discos
+r&iacute;gidos(caso possuir mais que um disco r&iacute;gido) instalado
+em seu computador.
+<br>&nbsp;&nbsp;&nbsp; Pode ser criada&nbsp; uma parti&ccedil;&atilde;o
+&uacute;nica, que neste caso todo o disco r&iacute;gido &eacute; usado
+para armazenar os arquivos(que &eacute; o caso mais comum caso voce tenha
+o DOS), ou v&aacute;rias parti&ccedil;&otilde;es, que podem ser usadas
+pelo mesmo SO(Sistema Operacional) ou outros sistemas operacionais diferentes(um
+exemplo de v&aacute;rias parti&ccedil;&otilde;es: se for usar o DOS e o
+Linux no mesmo disco, os dois sistemas v&atilde;o
+<br>estar no mesmo disco mas um n&atilde;o interfere no outro).
+<br><b>ATEN&Ccedil;&Atilde;O</b> : A OPERA&Ccedil;&Atilde;O DE PARTICIONAMENTO
+DE DISCOS PODE FAZER
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+COM&nbsp; QUE OS DADOS ARMAZENADOS EM SEU DISCO R&Iacute;GIDO SEJAM
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PERDIDOS, SE FOR USADA INCORRETAMENTE. &Eacute; SEMPRE
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+RECOMENDADO RETIRAR UMA C&Oacute;PIA DE SEGURAN&Ccedil;A DOS SEUS
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ARQUIVOS EXISTENTES NO MICRO ANTES DE SE EXECUTAR UM
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PROGRAMA DESTE TIPO, A N&Atilde;O SER QUE TENHA CONFIAN&Ccedil;A NO
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+QUE ESTA FAZENDO E QUE ENTENDEU AS EXPLICA&Ccedil;&Otilde;ES SOBRE A
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+IDENTIFICA&Ccedil;&Atilde;O DE&nbsp; DISCOS R&Iacute;GIDOS E SUAS PARTI&Ccedil;&Otilde;ES
+NO
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+SISTEMA.
+<br>&nbsp;&nbsp;&nbsp; Neste manual voce aprender&aacute; como deve particionar
+seu disco r&iacute;gido para a instala&ccedil;&atilde;o do SO usando o
+programa CFdisk.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="1.4"></a><u><font size=+1>1.4-) Algumas identifica&ccedil;&otilde;es
+utilizadas neste manual para facilitar a</font></u>
+<br><u><font size=+1>compreens&atilde;o do texto</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Esta parte descreve algumas caracter&iacute;sticas
+de organiza&ccedil;&atilde;o deste manual e algumas identifica&ccedil;&otilde;es
+que utilizei para facilitar o seu entendimento, e as explica&ccedil;&otilde;es
+que ser&atilde;o dadas.
+<p>&nbsp;&nbsp;&nbsp; Explica&ccedil;&atilde;o de nomes e comandos, sera
+seguida da palavra "<b>onde:</b>" e abaixo dela as explica&ccedil;&otilde;es
+sobre os comandos, exemplo:
+<p><b>onde:</b>
+<br><i>nome a ser explicado1</i>&nbsp; : Descri&ccedil;&atilde;o
+<br><i>nome a ser explicado2</i>&nbsp; : Descri&ccedil;&atilde;o
+<br><i>nome a ser explicado3</i>&nbsp; : Descri&ccedil;&atilde;o
+<p>ou
+<p><b>onde:</b>
+<br><i>nome a ser explicado1</i>&nbsp; - Descri&ccedil;&atilde;o
+<br><i>nome a ser explicado2</i>&nbsp; - Descri&ccedil;&atilde;o
+<br><i>nome a ser explicado3</i>&nbsp; - Descri&ccedil;&atilde;o
+<br>&nbsp;
+<p>&nbsp;&nbsp;&nbsp; Quando for feita alguma refer&ecirc;ncia com tecla
+do teclado, por exemplo, pressione <b>p</b> para listar as parti&ccedil;&otilde;es,
+a letra sera colocada entre &lt;> para que seja melhor entendida, por exemplo:
+<p>pressione &lt;d> para deletar uma parti&ccedil;&atilde;o...
+<br>...pressione &lt;Enter> para escolher a op&ccedil;&atilde;o do menu.
+<br>pressione &lt;t> para listar os tipos de parti&ccedil;&otilde;es dispon&iacute;veis...
+<br>&nbsp;
+<p>&nbsp;&nbsp;&nbsp; As linhas pontilhadas que aparecem na tela, veja
+abaixo,
+<br>----------------------------------------------------------------------------
+<br>----------------------------------------------------------------------------
+<br>servem para identificar que o que esta entre as linhas &eacute; um
+exemplo de como
+<br>ser&aacute; a resposta do comando para a tela de seu computador.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="1.5"></a><u><font size=+1>1.5-) Identifica&ccedil;&atilde;o
+de discos e parti&ccedil;&otilde;es no Linux</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Antes de descrever como se utiliza o programa CFdisk,
+&eacute; importante fazer algumas explica&ccedil;&otilde;es sobre a identifica&ccedil;&atilde;o
+das parti&ccedil;&otilde;es e unidades de disco no sistema Linux( e outros
+*nix).
+<br>&nbsp;&nbsp;&nbsp; Se voce for um usu&aacute;rio que j&aacute; conhece
+a interpreta&ccedil;&atilde;o de discos e parti&ccedil;&otilde;es neste
+sistema, voce n&atilde;o precisar&aacute; ler esta parte.
+<br>&nbsp;&nbsp;&nbsp; No sistema operacional Linux, os dispositivos existentes
+no computador (como impressoras, unidades de disquetes, discos r&iacute;gidos,
+monitor, placa de som, etc...) s&atilde;o identificados por um nome referente
+a este dispositivo e colocado no diret&oacute;rio <b>/dev</b> (que &eacute;
+utilizado para identificar os dispositivos ou perif&eacute;ricos existentes
+no computador).
+<br>&nbsp;&nbsp; A identifica&ccedil;&atilde;o dos discos r&iacute;gidos
+segue a seguinte forma:
+<p>&nbsp; /dev/hda1
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; |&nbsp;
+|
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; |&nbsp;
+|_N&uacute;mero que identifica a parti&ccedil;&atilde;o do disco r&iacute;gido(<i>1=Primeira,
+2=segunda</i>)
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; |
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; |_Letra
+que identifica o disco r&iacute;gido(<i>a=primeiro disco, b=segundo disco,
+etc..</i>)
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |_Sigla <i>hd</i>
+- Significa que &eacute; um disco r&iacute;gido <i>IDE</i>(Se tiver um
+<i>sd</i>
+significa <i>SCSI</i>)
+<br>&nbsp; |
+<br>&nbsp; |_ Identifica&ccedil;&atilde;o do diret&oacute;rio onde os dispositivos
+do sistema s&atilde;o armazenados
+<p><b>OBS</b>: As unidades de disco r&iacute;gido <b>SCSI</b>, s&atilde;o
+identificadas com as letras <b>sd</b>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seguida pela letra
+da unidade e n&uacute;mero da parti&ccedil;&atilde;o e os discos <b>IDE</b>
+s&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; identificados por
+<b>hd</b>
+seguida pela letra da unidade de disco e o n&uacute;mero
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; da parti&ccedil;&atilde;o
+do disco(como visto acima).
+<p>Abaixo, algumas identifica&ccedil;&otilde;es de disco do sistema Linux:
+<p>/dev/hda1&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE prim&aacute;rio
+principal - Primeira parti&ccedil;&atilde;o
+<br>/dev/hda2&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE prim&aacute;rio
+principal - Segunda parti&ccedil;&atilde;o
+<br>/dev/hda3&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE prim&aacute;rio
+principal - Terceira parti&ccedil;&atilde;o
+<br>/dev/hdb1&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE prim&aacute;rio
+escravo - Primeira parti&ccedil;&atilde;o
+<br>/dev/hdb2&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE prim&aacute;rio
+escravo - Segunda parti&ccedil;&atilde;o
+<br>/dev/hdb3&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE prim&aacute;rio
+escravo - Terceira parti&ccedil;&atilde;o
+<br>/dev/hdc1&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE secund&aacute;rio
+principal - Primeira parti&ccedil;&atilde;o
+<br>/dev/hdc2&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE secund&aacute;rio
+principal - Segunda parti&ccedil;&atilde;o
+<br>/dev/hdc3&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE secund&aacute;rio
+principal - Terceira parti&ccedil;&atilde;o
+<br>/dev/hdd1&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE secund&aacute;rio
+escravo - Primeira parti&ccedil;&atilde;o
+<br>/dev/hdd2&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE secund&aacute;rio
+escravo - Segunda parti&ccedil;&atilde;o
+<br>/dev/hdd3&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido IDE secund&aacute;rio
+escravo - Terceira parti&ccedil;&atilde;o
+<br>/dev/sda1&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Primeiro disco r&iacute;gido
+SCSI - Primeira parti&ccedil;&atilde;o
+<br>/dev/sda2&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Primeiro disco r&iacute;gido
+SCSI - Segunda parti&ccedil;&atilde;o
+<br>/dev/sda3&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Primeiro disco r&iacute;gido
+SCSI - Terceira parti&ccedil;&atilde;o
+<br>/dev/sdb1&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Segundo disco r&iacute;gido
+SCSI - Primeira parti&ccedil;&atilde;o
+<br>/dev/sdb2&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Segundo disco r&iacute;gido
+SCSI - Segunda parti&ccedil;&atilde;o
+<br>/dev/sdb3&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Segundo disco r&iacute;gido
+SCSI - Terceira parti&ccedil;&atilde;o
+<p>&nbsp;&nbsp;&nbsp; No exemplo acima foram usadas 3 parti&ccedil;&otilde;es
+por disco, mas podem existir mais parti&ccedil;&otilde;es no mesmo disco,
+um exemplo &eacute; se o disco r&iacute;gido possuir <b>parti&ccedil;&otilde;es
+L&oacute;gicas</b>, que s&atilde;o identificadas no sistemas a partir de
+<b>/dev/hdx5</b>.
+<br>&nbsp;
+<p>&nbsp;&nbsp;&nbsp; Abaixo um exemplo de como o Linux identifica as parti&ccedil;&otilde;es
+em cada disco existente em seu computador:
+<p>Vamos supor que eu tenha 2 discos r&iacute;gidos:
+<br>o 1&ordm;disco de <i>2GB</i> e o 2&ordm;disco&nbsp; de <i>1GB</i>(Giga
+Byte ou 1.000 Megas!)
+<p>&nbsp;&nbsp;&nbsp; No primeiro disco(de <i>2GB</i>), a primeira parti&ccedil;&atilde;o
+&eacute; de <b>800MB</b> do tipo <b>FAT16</b>(DOS), a segunda parti&ccedil;&atilde;o
+&eacute; de <b>1.2GB</b> do tipo <b>EXT2</b>(Linux)(1.2GB+800MB=2GB que
+&eacute; a capacidade total do disco). Assim as parti&ccedil;&otilde;es
+seriam identificadas da seguinte forma no Linux:
+<p><i>/dev/hda&nbsp;</i>&nbsp; - Disco r&iacute;gido Prim&aacute;rio Principal
+<br><i>/dev/hda1</i> - Primeira parti&ccedil;&atilde;o do primeiro disco
+r&iacute;gido (de <b>800MB</b> do tipo <b>DOS</b>)
+<br><i>/dev/hda2</i> - Segunda parti&ccedil;&atilde;o do primeiro disco
+r&iacute;gido( de <b>1.2GB</b> do tipo <b>Linux</b>)
+<p>&nbsp;&nbsp;&nbsp; Neste caso estariam dispon&iacute;veis 800MB para
+serem usados com o DOS e 1.2GB para o Linux.&nbsp;&nbsp;&nbsp;&nbsp; Por
+exemplo, se voce particionar um disco r&iacute;gido em duas partes e usar
+as duas parti&ccedil;&otilde;es no DOS, ele reconhecer&aacute; as parti&ccedil;&otilde;es
+como sendo <b>C:</b> e <b>D:</b>.
+<p><b>Lembre-se</b>: Quando um disco &eacute; particionado, nenhuma parti&ccedil;&atilde;o
+interfere na outra, repare que
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+quando voce particiona(divide) um disco,&nbsp; &eacute; como se tivesse
+dois discos r&iacute;gidos(o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&uacute;nico cuidado que voce deve tomar &eacute; com as c&oacute;pias
+de seguran&ccedil;a, porque se der um
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+problema de parte eletr&ocirc;nica no disco r&iacute;gido, por exemplo,
+a sua placa controladora
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+queimar ou o cabe&ccedil;ote dele ir pro espa&ccedil;o, voce perder&aacute;
+as suas 2 parti&ccedil;&otilde;es que est&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+armazenadas nele.
+<br>&nbsp;
+<p>Voltando ao exemplo das classifica&ccedil;&otilde;es das parti&ccedil;&otilde;es
+do disco, vamos para o segundo disco:
+<p>&nbsp;&nbsp;&nbsp; No segundo disco(1GB), eu tenho uma parti&ccedil;&atilde;o
+de <b>950MB</b> do tipo <b>FAT16</b>(DOS), que costumo usar para armazenar
+arquivos tempor&aacute;rios e c&oacute;pias de seguran&ccedil;a de meu
+sistema, etc..., e outra de <b>50MB</b> SWAP(Parti&ccedil;&atilde;o de
+mem&oacute;ria virtual como descrevi acima)(950MB+50MB=1GB). Ent&atilde;o
+as parti&ccedil;&otilde;es deste disco seriam identificadas da seguinte
+forma no Linux:
+<p><i>/dev/hdb&nbsp;</i>&nbsp; - Disco r&iacute;gido principal escravo
+<br><i>/dev/hdb1</i> - Primeira parti&ccedil;&atilde;o do disco acima (
+de 950MB do tipo DOS)
+<br><i>/dev/hdb2</i> - Segunda parti&ccedil;&atilde;o do disco acima (
+de 50MB do tipo SWAP)
+<p>&nbsp;&nbsp;&nbsp; No disco acima, <b>950MB</b> est&atilde;o dispon&iacute;veis
+para serem usados pelo <i>DOS</i> e <b>50 MB</b> pela mem&oacute;ria virtual
+(<i>SWAP</i>) do Linux.
+<p>&nbsp;&nbsp;&nbsp; Note que se voce utiliza o <i>MS-DOS</i>, voce n&atilde;o
+conseguir&aacute; ver as parti&ccedil;&otilde;es do <i>Linux</i> e <i>SWAP</i>,
+porque s&atilde;o imcompat&iacute;veis com o formato aceito pelo <i>DOS</i>
+(ele identificaria a primeira parti&ccedil;&atilde;o do primeiro disco(<b>800MB</b>)
+como a unidade C: e a primeira parti&ccedil;&atilde;o do segundo disco(<b>950MB</b>)
+como unidade D), mas o contr&aacute;rio n&atilde;o acontece; O <i>Linux</i>
+tem total compatibilidade com a parti&ccedil;&atilde;o
+<br><i>DOS FAT12, FAT16, FAT32, OS/2 HPFS,</i> e muitas outras.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="1.6"></a><u><font size=+1>1.6-) Tipos de parti&ccedil;&otilde;es
+de discos</font></u></center>
+
+<p>&nbsp;&nbsp; As parti&ccedil;&otilde;es de disco s&atilde;o divididas
+em tres tipos: <b>Prim&aacute;ria, Extendida</b> e <b>L&oacute;gica</b>.
+<br>&nbsp;&nbsp; Pode se ter, no m&aacute;ximo, <b>4</b> parti&ccedil;&otilde;es
+<i>Prim&aacute;rias</i>
+e <i>Extendidas</i> no mesmo disco (3 Prim&aacute;rias e 1 Extendida ou
+4 parti&ccedil;&otilde;es Prim&aacute;rias em cada disco).
+<br>A parti&ccedil;&atilde;o <i>Prim&aacute;ria</i> permite o armazenamento
+de arquivos e diret&oacute;rios. Todos os computadores que possuem somente
+a unidade <i>C: </i>(supondo que utilize o DOS), utilizam este tipo de
+parti&ccedil;&atilde;o para armazenamento de arquivos e inicializa&ccedil;&atilde;o
+do sistema operacional.
+<br>&nbsp;&nbsp;&nbsp; Se for preciso criar mais que <i>4</i> parti&ccedil;&otilde;es
+no mesmo disco, ser&aacute; necess&aacute;rio criar uma parti&ccedil;&atilde;o
+<i>Extendida</i>.
+A parti&ccedil;&atilde;o Extendida n&atilde;o pode ser utilizada para armazenar
+arquivos. Ela &eacute; usada para a cria&ccedil;&atilde;o de outras parti&ccedil;&otilde;es,
+dentro dela, que s&atilde;o chamadas de parti&ccedil;&otilde;es <i>L&oacute;gicas</i>.
+<br>&nbsp;&nbsp;&nbsp; Uma parti&ccedil;&atilde;o <i>Extendida</i> podem
+conter v&aacute;rias parti&ccedil;&otilde;es <i>L&oacute;gicas</i>. As
+parti&ccedil;&otilde;es <i>L&oacute;gicas</i> podem armazenar arquivos
+e diret&oacute;rios(como as parti&ccedil;&otilde;es prim&aacute;rias).
+<br>&nbsp;&nbsp;&nbsp; Um mesmo disco r&iacute;gido pode armazenar mais
+de 64 parti&ccedil;&otilde;es independentes uma das outras.
+<p><b>LEMBRE-SE</b>: Os arquivos e diret&oacute;rios podem ser armazenados
+somente em parti&ccedil;&otilde;es de disco prim&aacute;rias ou l&oacute;gicas,
+a parti&ccedil;&atilde;o extendida n&atilde;o &eacute; usada para armazanamento
+de arquivos e diret&oacute;rios.
+<p>&nbsp;&nbsp; Se possuir duas parti&ccedil;&otilde;es em seu computador
+(<b>C:</b> e <b>D:</b> no DOS), e n&atilde;o estiver usando a parti&ccedil;&atilde;o
+<b>D:</b>,
+a instala&ccedil;&atilde;o do Linux pode ser feita nesta parti&ccedil;&atilde;o
+desde que ela tenha o espa&ccedil;o necess&aacute;rio para o sistema operacional
+Linux, os programas que desejar instalar, mais a parti&ccedil;&atilde;o
+SWAP.&nbsp;
+<div align=right>
+<br><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="1.7"></a><u><font size=+1>1.7-) Observa&ccedil;&otilde;es
+sobre o formato DOS 6.XX(FAT 16)</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp; No formato <b>DOS 6.XX(FAT16)</b>, o primeiro
+setor da &aacute;rea de dados da parti&ccedil;&atilde;o &eacute; utilizado
+frequentemente pelo DOS para armazenamento de dados sobre a parti&ccedil;&atilde;o
+de disco, e estes dados s&atilde;o usados pelo sistema para se ter maior
+confiabilidade do que os dados armazenados na tabela de parti&ccedil;&atilde;o.
+O sistema de arquivos DOS, faz o FDISK(do DOS) limpar os primeiros 512
+bytes da &aacute;rea de dados da parti&ccedil;&atilde;o sempre que uma
+mudan&ccedil;a de tamanho acontecer.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; O formatador do DOS(<b>format</b>) verifica
+este primeiro setor toda vez que a up&ccedil;&atilde;o <b>/U</b> (que &eacute;
+utilizada para n&atilde;o salvar dados para se fazer a desformata&ccedil;&atilde;o
+do disco) foi utilizada.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Isto &eacute; considerado uma FALHA no <b>Format</b>(do
+DOS) e no <b>Fdisk</b>(do DOS).
+<p>&nbsp;&nbsp;&nbsp;&nbsp; A op&ccedil;&atilde;o abaixo deve ser utilizada
+caso voce crie uma parti&ccedil;&atilde;o do DOS FAT16 com o CFdisk, que
+faz com que os primeiros 512 bytes daquela parti&ccedil;&atilde;o sejam
+"limpos", para manter a compatibilidade com o DOS. Utilize esta op&ccedil;&atilde;o
+dentro do Linux, ap&oacute;s criar a parti&ccedil;&atilde;o com o CFdisk
+e reiniciar o seu computador. Foi notado que esta op&ccedil;&atilde;o s&oacute;
+funciona corretamente somente quando o Sistema Linux estiver instalado
+em seu computador. N&atilde;o me responsabilizo caso utiliza-la a partir
+de um disquete de recupera&ccedil;&atilde;o.
+<p><b>dd if=/dev/zero of=/dev/hdx1 bs=512 count=1</b>
+<p><b>onde:</b>
+<br><i>hdx1</i> - &Eacute; a identifica&ccedil;&atilde;o da unidade de
+disco e a parti&ccedil;&atilde;o que foi criada&nbsp; pelo CFdisk utilizando
+o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sistema
+de arquivos DOS que ter&aacute; seu primeiro setor "limpo".
+<br>&nbsp;
+<p><b>OBS1</b>: Cuidado ao utilizar esta op&ccedil;&atilde;o, um pequeno
+descuido pode resultar na perda de dados do
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+seu disco r&iacute;gido ou outras parti&ccedil;&atilde;o.
+<br><b>OBS2</b>: N&atilde;o utilize este comando com parti&ccedil;&otilde;es
+que utilizam o sistema de arquivos <i>FAT32</i>(utilizada
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+nos sistemas operacionais Windows 95 OSR/2 e superiores) .Se esta op&ccedil;&atilde;o
+for utilizada
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+em um disco utlizando este sistema de arquivos, sua FAT ser&aacute; corrompida,
+caso isto
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+acontecer, ser&aacute; necess&aacute;ria a re-formata&ccedil;&atilde;o
+da parti&ccedil;&atilde;o.
+<br><b>OBS3</b>: &Eacute; extremamente recomendado que se utilize o programa
+de particionamento que
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acompanha&nbsp;
+o seu sistema operacional. Por exemplo, se deseja criar&nbsp; uma parti&ccedil;&atilde;o
+DOS
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.XX,
+utilize o FDisk qua acompanha o DOS.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2"></a><u><font size=+1>2-) Iniciando o programa CFdisk</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Para entrar no programa CFdisk digite:
+<p><i>cfdisk</i> &lt;unidade>
+<p><b>onde:</b>
+<br><i>unidade</i> - &eacute; a unidade de disco que deseja utilizar para
+fazer o particionamento. A unidade pode
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ser:&nbsp; /dev/hda, /dev/hdb, /dev/hdc ..., /dev/sda, /dev/sdb...,etc
+<p><b>NOTA:</b> Se voce n&atilde;o digitar a unidade, o cfdisk utilizar&aacute;
+a unidade <i>/dev/hda</i> como padr&atilde;o.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.1"></a><u><font size=+1>2.1-) Op&ccedil;&otilde;es de
+linha de comando utilizadas com o CFdisk</font></u></center>
+
+<p>&nbsp; Op&ccedil;&otilde;es de linha de comando fazem com que o programa
+inicie de forma espec&iacute;fica ou personalizada. As op&ccedil;&otilde;es
+devem ser digitadas ap&oacute;s o nome do programa (cfdisk).
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>cfdisk</b> &lt;<i>unidade</i>>
+&lt;<i> -avz</i> > &lt; -<i>c cilindros </i>> &lt; <i>-h cabe&ccedil;otes
+</i>>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&lt; <i>-s&nbsp; setores_por trilha </i>> &lt; <i>-P opt</i> > &lt; <i>dispositivo</i>
+>
+<p><b>onde:</b>
+<br><i>-a</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Usa um cursor seta
+ao inv&eacute;s de video reverso para destacar a
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parti&ccedil;&atilde;o
+atual.
+<br><i>-v</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mostra a vers&atilde;o
+do programa e Coyright(Direitos Reservados).
+<br><i>-z&nbsp;</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ignora a leitura
+da tabela das parti&ccedil;&otilde;es existentes no disco
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ao iniciar o
+CFdisk.
+<p><i>-c</i> N&uacute;mero de Cilindros do disco
+<br><i>-h</i> N&uacute;mero de Cabe&ccedil;otes do disco
+<br><i>-s</i> Setores por trilha existentes no disco.
+<br><i>-P</i> <i>OPC</i>&nbsp;&nbsp;&nbsp; Mostra a tabela de parti&ccedil;&atilde;o
+no formato especifico.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>OPC</i> -
+Pode ser:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+<i>r</i> - Mostra a tabela de parti&ccedil;&atilde;o em Formato RAW
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+<i>s</i> - Mostra a tabela de parti&ccedil;&atilde;o em Format de Setores
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+<i>t</i> -&nbsp; Mostra a tabela de parti&ccedil;&atilde;o classificada
+pelo n&uacute;mero da parti&ccedil;&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Para maiores detalhes, veja <a href="#2.3.9">O comando Print &lt;p></a>.
+<p><b>OBS:</b> A utiliza&ccedil;&atilde;o dos par&acirc;metros -c -h -s,
+substituir&atilde;o os par&acirc;metros da BIOS da placa, utilize
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; estas op&ccedil;&otilde;es
+se sua bios n&atilde;o utilizar estes par&acirc;metros ou se mostrar valores
+incorretos.
+<p>&nbsp;&nbsp;&nbsp; Ap&oacute;s entrar o programa CFdisk, ele verificar&aacute;
+automaticamente o tamanho do Disco R&iacute;gido, se n&atilde;o conseguir,
+o programa ser&aacute; terminado.
+<br>&nbsp;&nbsp;&nbsp; Para resolver este problema, especifique o tamanho
+do disco em cilindros, cabe&ccedil;as, e setores na linha de comando que
+inicia o programa. Este problema geralmente acontece quando se tenta particionar
+uma unidade de disco <i>SCSI</i> que esteja conectada a uma placa controladora
+que n&atilde;o possui <i>BIOS</i>, e&nbsp; quando&nbsp; uma&nbsp; <i>BIOS</i>&nbsp;
+mostra&nbsp; os&nbsp; valores&nbsp; da&nbsp; geometria&nbsp; do&nbsp; disco(tamanho)
+<br>incorretamente.
+<br>&nbsp;&nbsp;&nbsp; O pr&oacute;ximo passo do CFdisk &eacute; fazer
+a leitura das parti&ccedil;&otilde;es atuais do disco, se n&atilde;o conseguir,
+o programa ser&aacute; terminado. O &uacute;nico motivo para o CFdisk mostrar
+esta mensagem de erro, &eacute; se voce digitar par&acirc;metros incorretos
+para o tamanho do disco, caso tenha acontecido o problema
+<br>descrito no paragrafo anterior. Verifique se os par&acirc;metros foram
+digitados incorretamente, se os par&acirc;metros estiverem digitados corretamente
+e mesmo assim o programa continua dando erro na leitura das parti&ccedil;&otilde;es,
+utilize a op&ccedil;&atilde;o <i>-z</i> na linha de comando do programa,
+que faz com que ele ignore a leitura das parti&ccedil;&otilde;es existentes
+no disco ao iniciar .
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.2"></a><u><font size=+1>2.2-) Conhecendo a Tela do CFdisk</font></u></center>
+
+<p>&nbsp;&nbsp; Ap&oacute;s digitar CFdisk, ser&aacute; mostrada a tela
+principal onde voce poder&aacute; acionar os comandos para manipula&ccedil;&atilde;o
+das parti&ccedil;&otilde;es de disco, e visualizar as parti&ccedil;&otilde;es
+de disco atuais e outros dados.
+<br>Abaixo o exemplo e explica&ccedil;&otilde;es sobre esta tela.
+<p>O disco utilizado para os exemplos &eacute; um disco de <b>5157 MB</b>
+de Capacidade com:
+<br>- <i>10672</i> Cilindros&nbsp; <i>15</i> Cabe&ccedil;as&nbsp; <i>63</i>
+Setores (no modo <b>C/H/S</b>)
+<br>- <i>627</i> Cilindros&nbsp;&nbsp; <i>255</i> Cabe&ccedil;as&nbsp;<i>
+63</i> Setores (no modo <b>LBA</b>)
+<br>&nbsp;&nbsp; A unidade de medida utilizada pelo CFdisk para mostrar
+os par&acirc;metros do disco ser&aacute; o mesmo configurado na BIOS, ou
+seja, se estiver utilizando o disco com o modo de opera&ccedil;&atilde;o
+em <i>LBA</i>, os valores de cilindros, cabe&ccedil;as e setores motrados
+pelo CFdisk sera em <b>LBA</b>.
+<br>&nbsp;
+<p>---------------------------------------------------------------------------------------------------
+<center>CFdisk 0.8l
+<br>Disk Drive: /dev/hda
+<br>Heads:255&nbsp; Sectores per track:63&nbsp; Cylinders:627</center>
+---------------------------------------------------------------------------------------------------
+<br>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Part Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FSType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+[LABEL]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Size(MB)
+<br>hda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Primary&nbsp;&nbsp;&nbsp;&nbsp; Win 95 FAT 32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1953.12
+<br>hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Logical&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT 16 (BIG)&nbsp;&nbsp;&nbsp; GLEYDSON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+172.58
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Pri/Log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Free Space&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+2910.55
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<p>[Bootable]&nbsp;&nbsp; [Delete]&nbsp;&nbsp; [Help]&nbsp;&nbsp; [Maximize]&nbsp;&nbsp;
+[Print]
+<br>[Quit]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Type]&nbsp;&nbsp;&nbsp;&nbsp;
+[Units]&nbsp; [Write]
+<br>----------------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp;&nbsp; No cabe&ccedil;alho da tela, &eacute; mostrada
+a vers&atilde;o do programa, a unidade de disco que ser&aacute; usada no
+particionamento e os par&acirc;metros de tamanho do disco(cabe&ccedil;otes,
+cilindros e setores).
+<br>Abaixo do cabe&ccedil;alho ap&oacute;s a linha pontilhada, se encontra
+a &aacute;rea das parti&ccedil;&otilde;es.
+<p><b>onde:</b>
+<br>- <i>Name</i>&nbsp; : &eacute; o nome da(s) parti&ccedil;&atilde;o(&otilde;es)
+de Disco.
+<br>- <i>Flags</i>&nbsp;&nbsp; : Se estiver marcada como BOOT, ser&aacute;
+poss&iacute;vel iniciar o sistema a partir desta parti&ccedil;&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+(quando n&atilde;o se utiliza um Boot Manager). Se estiver marcada como
+NC (N&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+compat&iacute;vel)&nbsp; significa que esta parti&ccedil;&atilde;o n&atilde;o
+&eacute; compat&iacute;vel com o DOS, OS/2, etc. Para
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+maiores detalhes, veja <a href="#2.3.7">O comando Maximize &lt;m></a>.
+<br>- <i>Type</i>&nbsp;&nbsp; : O tipo da parti&ccedil;&atilde;o pode ser
+Prim&aacute;ria ou L&oacute;gica. Para espa&ccedil;o n&atilde;o particionado,
+o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+tipo da parti&ccedil;&atilde;o pode ser Prim&aacute;rio/Log.
+<br>- <i>FileSystems</i> : Tipo de Sistema de Arquivos que &eacute; usado
+naquela parti&ccedil;&atilde;o. Se o sistema de
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+arquivos for desconhecido, ele ser&aacute; mostrado como um valor Hexadecimal.
+Um
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+caso especial ocorre quando h&aacute; Parti&ccedil;&otilde;es do Disco
+R&iacute;gido que n&atilde;o podem ser
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+usadas ( porque toda a parti&ccedil;&atilde;o prim&aacute;ria esta em uso).
+Quando isto &eacute; detectado, o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+tipo de FileSystems &eacute; mostrado como n&atilde;o us&aacute;vel(Unusable)
+para cria&ccedil;&atilde;o de novas
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+parti&ccedil;&otilde;es.
+<br>- Label&nbsp;&nbsp; : Nome de volume da parti&ccedil;&atilde;o de disco.
+Os nomes de parti&ccedil;&otilde;es FAT32,&nbsp; n&atilde;o s&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+mostrados com esta vers&atilde;o do CFdisk.
+<br>- Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Mostra o tamanho que cada parti&ccedil;&atilde;o
+ocupa no disco r&iacute;gido em&nbsp; MegaBytes (por
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+padr&atilde;o).
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Tamb&eacute;m pode mostrar o tamanho ocupado por Setores ou Cilindros.
+Se for mostrado
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+um asterisco (*) ap&oacute;s o tamanho, isto diz que a parti&ccedil;&atilde;o
+n&atilde;o esta alinhada com Cilindro.
+<p>&nbsp;&nbsp; O espa&ccedil;o livre existente no disco para cria&ccedil;&atilde;o
+de novas parti&ccedil;&otilde;es, &eacute; mostrado como uma outra parti&ccedil;&atilde;o,
+com o FSType(<i>sistema de arquivos</i>) Free Space(<i>espa&ccedil;o Livre</i>).
+<p><b>OBS:</b> As parti&ccedil;&otilde;es de disco Extendidas n&atilde;o
+s&atilde;o mostradas na tela do CFdisk durante o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; particionamento,
+mesmo assim, as parti&ccedil;&otilde;es l&oacute;gicas que este tipo de
+parti&ccedil;&atilde;o armazena,
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ser&atilde;o
+mostradas a partir de hdx5 ou sdx5.
+<p>&nbsp;&nbsp;&nbsp; No rodap&eacute; da tela, encontramos os comandos
+utilizados pelo CFdisk para manipular as parti&ccedil;&otilde;es de disco.
+Os comandos s&atilde;o mostrados entre Chaves [].
+<br>&nbsp;&nbsp;&nbsp; Todos os comandos no rodap&eacute; da tela, s&atilde;o
+aplicaveis somente para a parti&ccedil;&atilde;o que estiver destacada
+com a barra(video reverso).&nbsp; Veja descri&ccedil;&otilde;es dos comandos
+do CFdisk para mais detalhes.
+<br>&nbsp;&nbsp;&nbsp; Abaixo do rodap&eacute; da tela, &eacute; mostrada
+a descri&ccedil;&atilde;o do comando que estiver em destaque com o cursor
+em video reverso.
+<p>&nbsp;&nbsp;&nbsp; Veja abaixo a tradu&ccedil;&atilde;o da tela principal
+do programa CFdisk:
+<br>---------------------------------------------------------------------------------------------------
+<center>CFdisk 0.8l
+<br>Unidade de Disco: /dev/hda
+<br>Cabe&ccedil;as:255&nbsp; Setores por trilha:63&nbsp; Cilindros:627</center>
+---------------------------------------------------------------------------------------------------
+<br>Nome&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Op&ccedil;&otilde;es&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Tipo Part.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tipo Sist. Arquivos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+[VOLUME]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tamanho(MB)
+<br>hda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Win
+95 FAT 32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1953.12
+<br>hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Logical&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT 16 (BIG)&nbsp;&nbsp;&nbsp;&nbsp;
+GLEYDSON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+172.58
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Pri/Log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Espa&ccedil;o Livre&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+2910.55
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<p>[Inicializ&aacute;vel]&nbsp;&nbsp;&nbsp; [Apagar]&nbsp;&nbsp;&nbsp;
+[Ajuda]&nbsp;&nbsp;&nbsp;&nbsp; [Maximizar]&nbsp;&nbsp;&nbsp; [Imprimir]
+<br>[Sair]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+[Tipo]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Unidades][Gravar]
+<br>----------------------------------------------------------------------------
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3"></a><u><font size=+1>2.3-) Descri&ccedil;&atilde;o
+dos comandos do CFdisk</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Os comandos do programa s&atilde;o utilizados criar
+parti&ccedil;&otilde;es, entrar na ajuda do programa, alterar o tipo da
+parti&ccedil;&atilde;o, apagar uma parti&ccedil;&atilde;o, etc.
+<br>&nbsp;&nbsp;&nbsp; Pode ser utilizado Seta p/ Esquerda e Seta p/ direita
+para se movimentar entre os comandos, quando o cursor estiver em cima do
+comando que deseja executar, pressione &lt;Enter>.
+<br>&nbsp;&nbsp;&nbsp; Outro m&eacute;todo que se pode utilizar para acionar
+uma op&ccedil;&atilde;o do CFdisk, &eacute; pressionando a primeira letra
+de cada op&ccedil;&atilde;o, automaticamente a op&ccedil;&atilde;o &eacute;
+executada(sem ter que pressionar &lt;Enter>). Neste m&eacute;todo, todos
+os comandos aceitam letras mai&uacute;sculas e min&uacute;sculas, exceto
+o comando Write(gravar parti&ccedil;&atilde;o) que &eacute; executado somente
+se pressionar &lt;W> mai&uacute;scula, para evitar
+<br>grava&ccedil;&otilde;es acidentais o disco.
+<br>&nbsp;&nbsp;&nbsp; Quando estiver em um Sub-Menu e desejar retornar
+ao menu principal, pressione a tecla &lt;Esc>.&nbsp;
+<div align=right>
+<br><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.1"></a><u><font size=+1>2.3.1-) Setas Acima e Abaixo/
+Esquerda e Direita (Movimenta&ccedil;&atilde;o do Cursor)</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Setas Acima e Abaixo s&atilde;o utilizadas para se
+movimentar entre as parti&ccedil;&otilde;es existentes no disco e espa&ccedil;o
+livre, selecionando-a para que seja utilizada as op&ccedil;&otilde;es do
+CFdisk.
+<br>&nbsp;&nbsp;&nbsp; Setas Esquerda e Direita s&atilde;o utilizadas para
+selecionar entre as op&ccedil;&otilde;es dipon&iacute;veis do programa(que
+ser&atilde;o explicadas abaixo). Para confirmar uma op&ccedil;&atilde;o,
+pressione &lt;Enter>.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.2"></a><u><font size=+1>2.3.2-) &lt;CTRL>+&lt;l></font></u></center>
+
+<p>&nbsp;&nbsp; Este comando &eacute; utilizado para atualizar a tela manualmente
+caso a atualiza&ccedil;&atilde;o autom&aacute;tica falhar, por exemplo,
+quando uma parti&ccedil;&atilde;o for excluida, e continuar a ser mostrada
+na tela.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.3"></a><u><font size=+1>2.3.3-) Boot &lt;b></font></u></center>
+
+<p>&nbsp;&nbsp; Este comando permite escolher se a parti&ccedil;&atilde;o
+Prim&aacute;ria atual ser&aacute; utilizada para iniciar o sistema(BOOT).
+Selecione esta op&ccedil;&atilde;o para selecionar entre parti&ccedil;&atilde;o
+inicializ&aacute;vel ou n&atilde;o inializ&aacute;vel. Quando uma parti&ccedil;&atilde;o
+estiver marcada como inicializ&aacute;vel, aparecer&aacute; a palavra BOOT
+na coluna Flags(na tela principal do programa).
+<p><b>OBS:</b> N&atilde;o ser&aacute; necess&aacute;rio marcar a parti&ccedil;&atilde;o
+Linux como inicializ&aacute;vel, caso se esteja utilizando um
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Boot Manager(como
+o <i>LILO</i>) para escolher qual sistema operacional sera utilizado para
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inicializar o sistema.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.4"></a><u><font size=+1>2.3.4-) Delete &lt;d></font></u></center>
+
+<p>&nbsp;&nbsp; Este comando apaga a parti&ccedil;&atilde;o selecionada
+do disco. Ap&oacute;s apagar a parti&ccedil;&atilde;o, o espa&ccedil;o
+ocupado por ela &eacute; convertido para espa&ccedil;o livre.
+<br>&nbsp; A parti&ccedil;&atilde;o marcada atualmente como Free Space
+ou como Unusable n&atilde;o pode ser apagada.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.5"></a><u><font size=+1>2.3.5-) Geometry &lt;g></font></u></center>
+
+<p>&nbsp;&nbsp; Este comando n&atilde;o &eacute; mostrado no menu, pois
+&eacute; utilizado para alterar o tamanho (Cilindros, Cabe&ccedil;as e
+Setores do disco). Este comando s&oacute; pode ser acionado se for pressionada
+a tecla &lt;g>.
+<p><b>CUIDADO:</b> Esta op&ccedil;&atilde;o &eacute; recomendada somente
+para aqueles que sabem os riscos que o uso
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+desta op&ccedil;&atilde;o pode fazer, e se a situa&ccedil;&atilde;o que
+est&atilde;o, requerem o seu uso.
+<br>&nbsp;&nbsp; Uma situa&ccedil;&atilde;o que esta op&ccedil;&atilde;o
+&eacute; util, &eacute; se o BIOS do seu computador n&atilde;o mostrar
+corretamente os par&acirc;metros do disco(Cilindros, Cabe&ccedil;otes ou
+Setores), sendo necess&aacute;rio que se passe manualmente o tamanho do
+disco para que seja feito o correto particionamento do disco.
+<p><b>OBS:</b> Caso seu disco r&iacute;gido for <i>SCSI</i> e placa controladora
+dele n&atilde;o tiver BIOS,&nbsp; provavelmente o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CFdisk n&atilde;o
+ser&aacute; iniciado. Se este problema ocorrer, digite os par&acirc;metros
+do disco na linha
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; de comando ao
+iniciar o programa. Para maiores detalhes, veja op&ccedil;&otilde;es de
+linha de comando
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do CFdisk..
+<p>Ap&oacute;s pressionar &lt;g> ser&aacute; mostrada a seguinte tela:
+<p>----------------------------------------------------------------------------------------------------
+<center>CFdisk 0.8l
+<br>Disk Drive: /dev/hda
+<br>Heads:255&nbsp; Sectors:63&nbsp; Cilinders:627</center>
+----------------------------------------------------------------------------------------------------
+<br>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Part Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File
+System&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+[LABEL]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Size(MB)
+<p>hda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Win 95 FAT
+32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1953.12
+<br>hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Logical&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT 16 (BIG)&nbsp;&nbsp;&nbsp;&nbsp;
+GLEYDSON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 172.58
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Pri/Log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Espa&ccedil;o Livre&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+2910.55
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<p>[ Cylinders]&nbsp; [Heads]&nbsp; [Sectors]&nbsp; [Done]
+<p>----------------------------------------------------------------------------
+<br><b>onde:</b>
+<br><i>Cylinders&nbsp; </i>: Altera o n&uacute;mero de Cilindros do disco
+atual durante o particionamento.
+<br><i>Heads</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Altera o n&uacute;mero
+de Cabe&ccedil;as do disco atual durante o particionamento.
+<br><i>Sectors</i>&nbsp;&nbsp;&nbsp;&nbsp; : Altera o n&uacute;mero de
+Setores do disco atual durante o particionamento.
+<br><i>Done</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Quando finalizar
+as altera&ccedil;&otilde;es, tecle &lt;d> ou selecione Done para
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+que o CFdisk modifique os valores de Cilindros, Cabe&ccedil;as e Setores
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+que utiliza para particionar o disco e retorne a tela anterior.
+<br>&nbsp;
+<p>&nbsp;&nbsp;&nbsp;&nbsp; Quando escolher algum par&acirc;metro acima
+para altera&ccedil;&atilde;o(Cilindros, cabe&ccedil;otes ou Setores do
+disco), ser&aacute; vista uma tela como esta:
+<br>----------------------------------------------------------------------------------------------------
+<center>CFdisk 0.8l
+<br>Disk Drive: /dev/hda
+<br>Heads:255&nbsp; Sectors:63&nbsp; Cilinders:627</center>
+----------------------------------------------------------------------------------------------------
+<br>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Part Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+File System&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+[LABEL]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Size(MB)
+<p>hda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Win 95 FAT 32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1953.12
+<br>hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Logical&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS
+FAT 16 (BIG)&nbsp;&nbsp;&nbsp;&nbsp; GLEYDSON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+172.58
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Pri/Log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Espa&ccedil;o Livre&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+2910.55
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<p>Enter the number of Cylinders: 627
+<p>----------------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp;&nbsp; O valor que aparece ao selecionar a op&ccedil;&atilde;o,
+&eacute; o valor que o disco esta utilizando atualmente (<i>cilindros</i>),
+e ser&aacute; pedido que digite um valor para os Cilindros, que substituir&aacute;
+os da BIOS durante a se&ccedil;&atilde;o de particionamento.&nbsp; Para
+sair desta tela sem alterar o valor, pressione &lt;ESC>. A mesma tela e
+explica&ccedil;&atilde;o se aplicam para as altera&ccedil;&otilde;es de
+Cabe&ccedil;as e Setores.
+<p><b>OBS:</b> Se por acaso digitar um valor incorretamente para o tamanho
+do disco e&nbsp;&nbsp;&nbsp;&nbsp; n&atilde;o se lembrar
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mais do valor
+antigo ou original, selecione a op&ccedil;&atilde;o Done, e&nbsp; tecle
+&lt;q> para sair do CFdisk
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sem gravar as altera&ccedil;&otilde;es
+feitas para o disco, pois se continuar a utilizar o CFdisk com o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tamanho do disco incorreto,
+os dados existentes nele e at&eacute; mesmo parti&ccedil;&otilde;es poder&atilde;o
+ser
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perdidos(as).
+<p>&nbsp;&nbsp; Se aumentar o tamanho do disco, setores adicionais s&atilde;o
+acrescentados no final do disco, e s&atilde;o mostrados como espa&ccedil;o
+livre.
+<br>&nbsp;&nbsp; Se diminuir o tamanho do disco, as parti&ccedil;&otilde;es
+que estavam localizadas ap&oacute;s o setor/cilindro que foi excluido(se
+existir alguma), ser&aacute; apagada e a &uacute;ltima parti&ccedil;&atilde;o(ou
+espa&ccedil;o livre ao final do disco r&iacute;gido), ter&aacute; seu tamanho
+alterado e terminar&aacute; neste "novo" &uacute;ltimo setor do disco.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.6"></a><u><font size=+1>2.3.6-) Help &lt;h> ou &lt;?></font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; O comando Help mostra a tela de ajuda do programa,
+que descreve as fun&ccedil;&otilde;es das teclas utilizadas pelo programa
+e suas fun&ccedil;&otilde;es.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.7"></a><u><font size=+1>2.3.7-) Maximize &lt;m></font></u></center>
+
+<p>&nbsp;&nbsp; Este comando aumenta a utiliza&ccedil;&atilde;o de espa&ccedil;o
+do disco na parti&ccedil;&atilde;o atual. Isto porque o <i>DOS</i>, <i>OS/2</i>
+e outros sistemas operacionais utilizam o primeiro setor da primeira trilha
+da parti&ccedil;&atilde;o do disco e em todas as <i>parti&ccedil;&otilde;es
+L&oacute;gicas</i> para iniciar o sistema operacional, utilizando a segunda
+trilha em diante daquela parti&ccedil;&atilde;o para fazer o armazenamento
+de arquivos. Este espa&ccedil;o perdido entre o <i>segundo</i> e o <i>&uacute;ltimo</i>
+Setor da primeira trilha da primeira cabe&ccedil;a, pode ser recuperado
+com a utilizando este comando.
+<br>&nbsp;&nbsp;&nbsp; Este comando faz com que a parti&ccedil;&atilde;o
+se torne imcompat&iacute;vel com <i>DOS</i>, <i>OS/2</i> e outros Sistemas
+Operacionais que utilizam este primeiro Setor do disco para iniciar o sistema
+operacional.
+<br>&nbsp;&nbsp; Se este comando for utilizado, ser&aacute; colocada uma
+op&ccedil;&atilde;o chamada <i>NC</i>(n&atilde;o compat&iacute;vel) em
+Flags(na tela principal do CFdisk).
+<br>&nbsp;&nbsp; Esta op&ccedil;&atilde;o faz o uso m&aacute;ximo do disco
+e a incompatibilidade com o <i>DOS/OS/2</i>, etc. O padr&atilde;o quando
+criando uma Parti&ccedil;&atilde;o, &eacute; criando Parti&ccedil;&otilde;es
+compativeis com o <i>DOS, OS/2</i>, etc.
+<p><b>OBS:</b> O Fdisk(vers&atilde;o 8 e superiores) e parti&ccedil;&otilde;es
+formatadas com o sistema de arquivos <i>FAT32</i>,
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fazem a utiliza&ccedil;&atilde;o
+completa deste espa&ccedil;o entre o segundo e o &uacute;ltimo Setor da&nbsp;
+primeira trilha
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do disco, eliminando
+o desperd&iacute;cio de espa&ccedil;o.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.8"></a><u><font size=+1>2.3.8-) New &lt;n></font></u></center>
+
+<p>&nbsp;&nbsp; O comando New&lt;n>, cria uma nova parti&ccedil;&atilde;o
+usando o espa&ccedil;o livre(FreeSpace) existente no disco. Ap&oacute;s
+escolher esta op&ccedil;&atilde;o, o CFdisk perguntar&aacute; se deseja
+criar uma <i>parti&ccedil;&atilde;o Prim&aacute;ria</i>, <i>L&oacute;gica</i>
+ou <i>Cancelar</i> o comando.
+<br>&nbsp;&nbsp;&nbsp; Escolhendo criar uma parti&ccedil;&atilde;o <i>Prim&aacute;ria</i>
+ou <i>L&oacute;gica</i>, o sistema perguntar&aacute; o tamanho da parti&ccedil;&atilde;o
+que deseja criar, por padr&atilde;o, o CFdisk mostrar&aacute; o espa&ccedil;o
+livre total dispon&iacute;vel no disco para a cria&ccedil;&atilde;o da
+nova parti&ccedil;&atilde;o(em MegaBytes). Tecle &lt;Enter> para criar
+uma parti&ccedil;&atilde;o do tipo escolhido com este tamanho ou digite
+um tamamho menor. O CFdisk permite que seja digitados valores em:
+<br>- <i>MegaBytes</i>(M - o padr&atilde;o do programa)
+<br>- <i>KiloBytes</i>(K)
+<br>- <i>Cilindros</i>(C)
+<br>- <i>Setores</i>(S)
+<br>Digitando-se o tamanho da parti&ccedil;&atilde;o seguida de uma das
+letras acima. Se a letra n&atilde;o for digitada,
+<br>o programa assumir&aacute; o tamanho que digitou em MegaBytes.
+<p><b>OBS1:</b> Quando criar uma parti&ccedil;&atilde;o L&oacute;gica,
+automaticamente ser&aacute; criada uma parti&ccedil;&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Extendida, entre hdx1 e hdx4, e a parti&ccedil;&atilde;o Extendida n&atilde;o
+&eacute;&nbsp; mostrada na tela de
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+particionamento de disco. Se desejar exibir a parti&ccedil;&atilde;o extendida,
+execute o comando
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PRINT &lt;p> e escolha a op&ccedil;&atilde;o <i>Sector</i> para verificar
+qual &eacute; a identifica&ccedil;&atilde;o da <i>parti&ccedil;&atilde;o</i>
+<br><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Extendida</i>&nbsp; no disco. Para maiores detalhes, veja o <a href="#2.3.9">comando
+PRINT &lt;p></a>.
+<br><b>OBS2</b>: S&atilde;o permitidas, no m&aacute;ximo, 4 parti&ccedil;&otilde;es
+<i>Prim&aacute;rias</i>
+e <i>Extendidas</i>(3 <i>Prim&aacute;rias</i> e 1
+<br><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Extendida </i>ou 4 <i>parti&ccedil;&otilde;es Prim&aacute;rias</i> em cada
+disco). O CFdisk calcular&aacute;
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+automaticamente os valores das parti&ccedil;&otilde;es L&oacute;gicas caso
+as primeiras 4 parti&ccedil;&otilde;es forem
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ocupadas.
+<p>&nbsp;&nbsp;&nbsp; O pr&oacute;ximo passo, &eacute; a localiza&ccedil;&atilde;o
+da parti&ccedil;&atilde;o no espa&ccedil;o livre existente o disco. As
+duas op&ccedil;&otilde;es dispon&iacute;veis s&atilde;o:
+<br>- <i><u>Beginning</u></i> : A parti&ccedil;&atilde;o &eacute; colocada
+a partir do inicio do espa&ccedil;o livre no disco, ocupando o espa&ccedil;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+livre de acordo com o seu tamanho (do in&iacute;cio para o fim do espa&ccedil;o
+livre ), este &eacute; o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+padr&atilde;o para a cria&ccedil;&atilde;o de novas parti&ccedil;&otilde;es
+e o mais utilizado. Veja o exemplo,&nbsp; a
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+cria&ccedil;&atilde;o de uma parti&ccedil;&atilde;o de <b>30MB</b> em um
+disco com <b>50MB</b> de espa&ccedil;o n&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+particionado, sendo que este disco j&aacute; possui uma parti&ccedil;&atilde;o
+de <b>120MB</b>(com espa&ccedil;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+total de <b>170MB</b>).
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+##################################MMMMMMMMMMMMMMMMMMMMMM
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Parti&ccedil;&atilde;o existente(<b>120MB</b>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Espa&ccedil;o Livre(<b>50MB</b>)
+<br>&nbsp;
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+com a nova parti&ccedil;&atilde;o criada:
+<p>&nbsp;###################################################MMMMMMMMM
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Parti&ccedil;&atilde;o existente(<b>120</b>MB)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Nova parti&ccedil;&atilde;o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Espa&ccedil;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+(<b>30</b>MB)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Livre
+<p>-<i> <u>End&nbsp;</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : A parti&ccedil;&atilde;o
+&eacute; criada subtraindo-se o espa&ccedil;o livre total do disco pelo
+tamanho da
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+parti&ccedil;&atilde;o&nbsp; que ser&aacute; criada, come&ccedil;ando a
+criar esta parti&ccedil;&atilde;o a partir do ponto que
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+resultou esta subtra&ccedil;&atilde;o.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Veja abaixo no exemplo, a parti&ccedil;&atilde;o que ser&aacute; criada
+ter&aacute; o tamanho de <b>30</b>MB e existe
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+no disco um espa&ccedil;o n&atilde;o particionado de <b>50</b>MB, com <b>120</b>MB
+j&aacute; ocupados por uma
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+parti&ccedil;&atilde;o existente:
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+##################################MMMMMMMMMMMMMMMMMMMMM
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Parti&ccedil;&atilde;o existente(<b>120</b>MB)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Espa&ccedil;o Livre(<b>50</b>MB)
+<br>&nbsp;
+<p>com a nova parti&ccedil;&atilde;o criada (Selecionando a op&ccedil;&atilde;o
+End):
+<p>##################################MMMMMMMMMM#################
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+|
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Parti&ccedil;&atilde;o existente(<b>120</b>MB)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Espa&ccedil;o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Nova parti&ccedil;&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Livre&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+(<b>30</b>MB)
+<p>&nbsp;&nbsp;&nbsp; A parti&ccedil;&atilde;o que ser&aacute; criada utilizara
+o espa&ccedil;o livre entre o &uacute;ltimo Setor do disco e o setor resultante
+da subtra&ccedil;&atilde;o(<b>170</b>MB-<b>30</b>MB). Mesmo assim, a ordem
+que ser&aacute; criada esta parti&ccedil;&atilde;o parti&ccedil;&atilde;o
+ser&aacute; criada do Setor inicial(que &eacute; o resultado da subtra&ccedil;&atilde;o)
+para o &uacute;ltimo Setor do disco. Existir&aacute; um espa&ccedil;o livre
+de <b>20</b>MB entre a primeira parti&ccedil;&atilde;o (de <b>120</b>MB)
+e a nova parti&ccedil;&atilde;o de <b>30</b>MB.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.9"></a><u><font size=+1>2.3.9-) Print &lt;p></font></u></center>
+
+<p>&nbsp;&nbsp; Este comando mostra a tabela de parti&ccedil;&atilde;o
+no formato selecionado na tela, ou permite que seja gravado um arquivo
+no disco. Todas as parti&ccedil;&otilde;es s&atilde;o classificadas na
+ordem que foram gravadas no disco.
+<p>Os formatos aceitos para visualiza&ccedil;&atilde;o de parti&ccedil;&otilde;es
+s&atilde;o:
+<p><u><i>RAW &lt;r></i> </u>: Formato de dados do disco, mostra os setores
+que ser&atilde;o gravados para o disco, caso
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+seja escolhido o comando WRITE &lt;W>. O formato mostrado &eacute; exatamente
+aquele
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+que ser&aacute; gravado para ao disco.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Abaixo um exemplo
+deste formato:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Disk Drive:
+/dev/hda</i>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sector 0:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x000: EB 69
+4C 49 4C 4F 01 00 14 00 D7 02 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x010: FB 1B
+CF 36 74 D8 80 23 01 75 D8 80 23 01 73 D8
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x020: 80 23
+01 01 77 01 77 D8 80 23 01 78 D8 80 23 01
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x030: 64 D8
+80 23 01 65 D8 80 23 01 66 D8 80 23 01 67
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x040: D8 80
+23 01 68 D8 80 23 01 69 D8 80 23 01 6A D8
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x050: 80 23
+01 6B D8 80 23 01 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x060: 00 00
+00 00 00 00 00 00 00 00 00 B8 C0 07 8E D8
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x070: 8C 06
+66 00 89 36 64 00 89 1E 68 00 88 16 6A 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x080: B8 00
+9A 8E C0 B9 00 01 29 F6 29 FF FC F3 A5 EA
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x090: 94 00
+00 9A FA 8E D8 8E C0 BC 00 B0 B8 00 90 8E
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0A0: D0 FB
+B0 0D E8 57 00 B0 0A E8 52 00 B0 4C E8 4D
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0B0: 00 BE
+30 00 BB 00 10 FC AD 89 C1 AD 89 C2 09 C8
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0C0: 74 20
+46 E8 43 00 72 06 81 C3 00 02 EB EA 50 B0
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0D0: 20 E8
+2A 00 58 88 E0 E8 12 00 31 C0 88 C2 CD 13
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0E0: EB CF
+B0 49 E8 17 00 EA 00 00 00 9B 50 C0 E8 04
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0F0: E8 01
+00 58 24 0F 04 30 3C 3A 72 02 04 07 30 FF
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x100: B4 0E
+CD 10 C3 5A 59 5B C3 F6 C2 40 74 52 80 E2
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x110: BF 53
+51 52 B4 08 CD 13 72 EB 88 F3 5A 88 16 6D
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x120: 01 88
+F2 30 F6 88 F7 58 51 86 CD D0 C5 D0 C5 80
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x130: E5 03
+89 0E 6B 01 59 83 E1 3F F7 F1 FE C2 88 16
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x140: 6E 01
+31 D2 43 F7 F3 88 D6 8A 16 6D 01 3B 06 6B
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x150: 01 77
+13 86 C4 D0 C8 D0 C8 0A 06 6E 01 89 C1 5B
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x160: B8 01
+02 CD 13 C3 5B 31 C0 F9 C3 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x170: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x180: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x190: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1A0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1B0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 80 01
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1C0: 01 00
+0B FE 3F 8F 3F 00 00 00 51 4C 23 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1D0: 41 D7
+83 FE BF 6F 17 75 73 00 59 81 25 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1E0: 01 98
+05 FE 7F D6 98 42 25 00 7F 32 4E 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1F0: 81 70
+82 FE BF 72 70 F6 98 00 43 BC 00 00 55 AA
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sector 2441880:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x000: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x010: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x020: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x030: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x040: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x050: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x060: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x070: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x080: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x090: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0A0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0B0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0C0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0D0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0E0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0F0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x100: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x110: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x120: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x130: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x140: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x150: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x160: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x170: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x180: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x190: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1A0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1B0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 01
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1C0: 01 98
+0B FE 7F D6 3F 00 00 00 40 32 4E 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1D0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1E0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1F0: 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 55 AA
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+A primeira tabela de parti&ccedil;&atilde;o mostrada &eacute; a Prim&aacute;ria,
+depois
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; as tabelas de
+parti&ccedil;&otilde;es ligadas com cada parti&ccedil;&atilde;o l&oacute;gica.
+Como
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no exemplo,
+os dados s&atilde;o mostrados em bytes Hexadecimais(na
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primeira coluna)
+seguidos de 16 bytes por linha.
+<p><i><u>Sector &lt;s></u></i>: Mostra a tabela de parti&ccedil;&atilde;o
+classificada por setores. Esta
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; op&ccedil;&atilde;o
+mostra o espa&ccedil;o n&atilde;o particionado no disco e a<i> parti&ccedil;&atilde;o</i>
+<br><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Extendida</i>,
+que &eacute; mostrada antes das <i>parti&ccedil;&otilde;es L&oacute;gicas</i>.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Abaixo um exemplo
+deste formato:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition Table
+for /dev/hda
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+First&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Sector&nbsp;&nbsp;&nbsp;&nbsp; Sector&nbsp;&nbsp;&nbsp;&nbsp; Offset&nbsp;&nbsp;
+Length&nbsp;&nbsp; Filesystem Type (ID)&nbsp;&nbsp; Flags
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- -------&nbsp;&nbsp;&nbsp;&nbsp;
+--------&nbsp;&nbsp; ---------&nbsp;&nbsp; ------ --------- ----------------------
+---------
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2313359&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+63&nbsp; 2313360&nbsp; Win95 FAT32 (0B)&nbsp;&nbsp; Boot (80)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Logical&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2313360&nbsp; 2441879&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+0&nbsp;&nbsp;&nbsp; 128520&nbsp; Free Space&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+None (00)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 Primary&nbsp;&nbsp;
+2441880&nbsp; 7566614&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;
+5124735&nbsp; Extended&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+(05)&nbsp;&nbsp; None (00)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 Logical&nbsp;&nbsp;
+2441880&nbsp;&nbsp; 7566614&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 63&nbsp; 5124735&nbsp;
+Win95 FAT32 (0B)&nbsp;&nbsp; None (00)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 Primary&nbsp;
+7566615&nbsp; 10024559&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 2457945&nbsp;
+Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+(83)&nbsp;&nbsp; None (00)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 Primary
+10024560 10072754&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+48195&nbsp; Linux Swap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (82)&nbsp; None
+(00)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Onde</b>:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>#</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Identifica&ccedil;&atilde;o da parti&ccedil;&atilde;o no disco /dev/hda
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Type</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Tipo da parti&ccedil;&atilde;o(veja o exemplo)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>First Sector</i>
+- Primeiro Setor utilizado para o armazanamento da parti&ccedil;&atilde;o.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Last Sector</i>&nbsp;
+- &Uacute;ltimo Setor utilizado para o armazenamento da parti&ccedil;&atilde;o.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Offset&nbsp;</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i> Lenght</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Tamanho total da parti&ccedil;&atilde;o em setores (Last Sector - First
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Sector).
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>&nbsp; FileSystem
+Type (ID)</i> - Identifica&ccedil;&atilde;o do Sistema de Arquivos da parti&ccedil;&atilde;o,&nbsp;
+seguido do seu
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+c&oacute;digo hexadecimal no CFDisk. A <i>parti&ccedil;&atilde;o Extendida</i>
+&eacute; identificada como
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+um sistema de arquivos&nbsp; com o c&oacute;digo 05 (veja o exemplo).
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i> Flags&nbsp;&nbsp;&nbsp;</i>&nbsp;&nbsp;&nbsp;&nbsp;
+-&nbsp;&nbsp;&nbsp;&nbsp; Op&ccedil;&otilde;es da parti&ccedil;&atilde;o
+seguido de seu valor em&nbsp; hexadecimal.
+<p><i><u>Table &lt;t></u></i> : Mostra a tabela de parti&ccedil;&atilde;o
+classificada pelo n&uacute;mero da parti&ccedil;&atilde;o.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Esta op&ccedil;&atilde;o deixa fora todo espa&ccedil;o livre e n&atilde;o
+usado na parti&ccedil;&atilde;o.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Abaixo um exemplo deste formato.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+----------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Partition Table for /dev/hda
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+---Starting---&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----Ending----&nbsp;&nbsp;&nbsp;
+Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Number of
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+# Flags Head Sect Cyl&nbsp;&nbsp; ID&nbsp; Head Sect Cyl&nbsp;&nbsp;&nbsp;
+Sector&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sectors
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-- ----- ----&nbsp;&nbsp; ----&nbsp; ----&nbsp; ----&nbsp;&nbsp; ---- ----
+----&nbsp; --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1&nbsp; 0x80&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+0&nbsp; 0x0B&nbsp; 254&nbsp;&nbsp; 63&nbsp; 143&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+63&nbsp;&nbsp; 2313297
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+2&nbsp; 0x00&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;
+471&nbsp; 0x83&nbsp; 254&nbsp;&nbsp; 63&nbsp; 623&nbsp; 7566615&nbsp;&nbsp;
+2457945
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+3&nbsp; 0x00&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;
+152&nbsp; 0x05&nbsp; 254&nbsp;&nbsp; 63&nbsp; 470&nbsp; 2441880&nbsp;&nbsp;
+5124735
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+4&nbsp; 0x00&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;
+624&nbsp; 0x82&nbsp; 254&nbsp;&nbsp; 63&nbsp; 626 10024560&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+48195
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+5&nbsp; 0x00&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;
+152&nbsp; 0x0B&nbsp; 254&nbsp;&nbsp; 63&nbsp; 470&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+63&nbsp;&nbsp; 5124672
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Onde</b>:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>#</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- N&uacute;mero da parti&ccedil;&atilde;o de disco
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Flags</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- As op&ccedil;&otilde;es utilizadas com a parti&ccedil;&atilde;o (em&nbsp;
+valor Hexadecimal).
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+O valor <b>0x80</b> equivale a BOOT.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+O valor <b>0x00</b> equivale a nenhuma op&ccedil;&atilde;o&nbsp; utilizada
+naquela parti&ccedil;&atilde;o.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Starting</b>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Head</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Cabe&ccedil;ote Inicial
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Sector</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Setor Inicial
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Cyl</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Cilindro Inicial
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>ID</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Identifica&ccedil;&atilde;o do Sistema de arquivos(em&nbsp; hexadecimal,
+conforme a
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+tabela do CFdisk).
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Ending</b>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Head</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Cabe&ccedil;ote Final
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Sector</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Setor Final
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Cyl</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Cilindro Final
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Start
+Sector</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Setor inicial da parti&ccedil;&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>Number
+of Sectors</i> - N&uacute;mero de setores ocupados pela parti&ccedil;&atilde;o.
+<p>&nbsp;&nbsp;&nbsp; Se a parti&ccedil;&atilde;o n&atilde;o inicia ou
+n&atilde;o termina em um cilindro limite do disco ou se o seu tamanho n&atilde;o
+&eacute; divis&iacute;vel pelo tamanho do cilindro, um <b>*</b> &eacute;
+ser&aacute; mostrado ap&oacute;s o setor n&atilde;o alinhado. Este problema
+normalmente ocorre quando a parti&ccedil;&atilde;o &eacute; criada por
+um Sistema operacional em que o limite da parti&ccedil;&atilde;o n&atilde;o
+&eacute; alinhada com o cilindro ou que utiliza a contagem do tamanho do
+disco
+<br>de forma diferente.
+<br>&nbsp;&nbsp;&nbsp; A tabela de parti&ccedil;&atilde;o somente tem 10
+bits dispon&iacute;vel para identificar o cilindro inicial e final. Assim,
+quando o setor inicial absoluto &eacute; um cilindro maior que <b>1023</b>(<i>final
+do disco</i>), o valor m&aacute;ximo para a cabe&ccedil;a inicial, setor
+e cilindro s&atilde;o definidos. Este metodo &eacute; usado pelo <i>OS/2</i>,
+e
+<br>e corrige os problemas associados com <i>OS/2</i> caso o Fdisk regrava
+a tabela de parti&ccedil;&atilde;o quanto ela n&atilde;o esta neste formato.
+<br>&nbsp;&nbsp;&nbsp; Desde ent&atilde;o <i>Linux</i> e <i>OS/2</i> utilizam
+esta contagem de setores absolutos, os valores na cabe&ccedil;a inicial
+e final, Setor e Cilindro n&atilde;o s&atilde;o usadas.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.10"></a><u><font size=+1>2.3.10-) Quit &lt;q></font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp; Esta op&ccedil;&atilde;o faz com que o CFdisk
+abandonar todas as altera&ccedil;&otilde;es e retornar para o Aviso de
+comando. Quando esta op&ccedil;&atilde;o &eacute; escolhida, o programa
+retorna deixando o disco como estava antes de se iniciar o particionamento.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Se escolher esta op&ccedil;&atilde;o o CFdisk
+abandonar&aacute; o particionamento de disco e voltar&aacute; para a linha
+de comandos imediatamente. Se <i>alterar/criar/excluir</i> alguma parti&ccedil;&atilde;o
+de disco e escolher esta op&ccedil;&atilde;o, o programa emitir&aacute;
+um Beep indicando que alguma altera&ccedil;&atilde;o feita no disco foi
+abandonada.
+<p><b>OBS</b>: Esta op&ccedil;&atilde;o &eacute; &uacute;til caso tenha
+se cometido algum engano durante o particionamento do disco,
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; como apagar
+por uma parti&ccedil;&atilde;o que cont&eacute;m arquivos, alterar o tamanho
+do disco(geometria),
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; etc. Lembre-se
+que tudo o que fez ser&aacute; abandonado, durante o particionamento, se
+escolher
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esta op&ccedil;&atilde;o.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.11"></a><u><font size=+1>2.3.11-) Type &lt;t></font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp; Comando usado para alterar o tipo do sistema
+de arquivos utilizado pela parti&ccedil;&atilde;o. As parti&ccedil;&otilde;es,
+quando criadas, recebem o sistema de arquivos <b>Linux Native</b>(ou simplesmente
+Linux - <i>tipo 83</i>). O CFdisk pode criar, manipular, excluir, uma grande
+variedade de Sistemas de arquivos para os mais diversos tipos de sistemas
+operacionais existentes, veja o final deste manual para ver as parti&ccedil;&otilde;es
+compat&iacute;veis com este programa.
+<br>&nbsp;&nbsp; Para alterar o tipo do sistema de arquivos (<i>File System</i>)
+utilizado pela parti&ccedil;&atilde;o, tecle &lt;t>, e digite o valor de
+acordo com a lista de parti&ccedil;&otilde;es dispon&iacute;veis no programa.
+<br>&nbsp;&nbsp; Por exemplo, para mudar a parti&ccedil;&atilde;o do tipo
+Linux para Linux Swap, selecione esta parti&ccedil;&atilde;o, e tecle &lt;t>,
+e digite o n&uacute;mero <i>82</i>(que corresponde a <b>Linux Native</b>)
+e tecle &lt;Enter>, e a parti&ccedil;&atilde;o ter&aacute; seu sistema
+de arquivos alterado.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.12"></a><u><font size=+1>2.3.12-) Units &lt;u></font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp; A fun&ccedil;&atilde;o deste comando &eacute;
+alterar as unidades de medida do tamanho da parti&ccedil;&atilde;o que
+&eacute; mostrado na tela, por padr&atilde;o, ele &eacute; mostrado em
+MegaBytes.
+<br>&nbsp;&nbsp;&nbsp; As unidades de medida do tamanho da parti&ccedil;&atilde;o
+s&atilde;o em MegaBytes, Cilindros e Setores ocupados pela parti&ccedil;&atilde;o
+de disco.
+<br>Abaixo um exemplo da mudan&ccedil;a da unidade de medida para Cilindros.
+<br>----------------------------------------------------------------------------------------------------
+<center>CFdisk 0.8l
+<br>Disk Drive: /dev/hda
+<br>Heads:255&nbsp; Sectors:63&nbsp; Cilinders:627</center>
+----------------------------------------------------------------------------------------------------
+<br>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Part Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FSType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+[LABEL]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cilinders
+<br>hda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Primary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Win 95 FAT 32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+249
+<br>hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Logical&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT 16 (BIG)&nbsp;&nbsp; GLEYDSON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+22
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Pri/Log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Free
+Space&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+371
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<p>[Bootable]&nbsp;&nbsp; [Delete]&nbsp;&nbsp; [Help]&nbsp;&nbsp; [Maximize]&nbsp;&nbsp;
+[Print]
+<br>[Quit]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Type]&nbsp;&nbsp;&nbsp;&nbsp;
+[Units]&nbsp;&nbsp; [Write]
+<br>----------------------------------------------------------------------------------------------------
+<br>&nbsp;&nbsp; Ser&aacute; mostrada a quantidade de cilindros que a parti&ccedil;&atilde;o
+ocupa no disco ao inv&eacute;s do espa&ccedil;o em MB.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="2.3.13"></a><u><font size=+1>2.3.13-) Write &lt;W></font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Este comando grava todas as tabelas de
+parti&ccedil;&otilde;es criadas/modificadas e excluidas para o disco. S&oacute;
+&eacute; aceita a tecla &lt;W> em mai&uacute;scula para grava&ccedil;&atilde;o
+da parti&ccedil;&atilde;o de disco, por motivos de seguran&ccedil;a para
+que n&atilde;o seja feita a grava&ccedil;&atilde;o acidental das parti&ccedil;&otilde;es
+enquando estiver utilizando o programa. Para quem utiliza as setas do teclado,
+o m&eacute;todo &eacute; o mesmo que as outras op&ccedil;&otilde;es.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Ap&oacute;s selecionar esta op&ccedil;&atilde;o,
+o CFdisk perguntar&aacute; se confirma a grava&ccedil;&atilde;o das parti&ccedil;&otilde;es
+para o disco.
+<br>Para gravar a parti&ccedil;&atilde;o, digite "<i>yes</i>" e tecle &lt;Enter>.
+<br>Para cancelar o comando, pressione &lt;Esc> ou digite "<i>no</i>" e
+tecle &lt;Enter>.
+<p>&nbsp;&nbsp;&nbsp; Ap&oacute;s confirmar com "<i>yes</i>", o CFdisk
+gravar&aacute; a tabela de parti&ccedil;&atilde;o no disco e fara o Kernel
+re-ler a tabela de parti&ccedil;&atilde;o do disco, para se evitar reiniciar
+o sistema para utilizar a nova tabela de parti&ccedil;&atilde;o.
+<br>&nbsp;&nbsp;&nbsp; A tentativa de re-leitura da tabela de parti&ccedil;&atilde;o
+pode falhar. Para solucionar este problema, &eacute; preciso reiniciar
+o computador, quando o computador &eacute; reiniciado, o sistema operacional
+faz uma nova leitura das tabelas de parti&ccedil;&otilde;es existentes
+no disco, fazendo com que sejam reconhecidas
+<br>corretamente.
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="3"></a><u><font size=+1>3-) Tipos de parti&ccedil;&otilde;es
+compat&iacute;veis com o CFdisk</font></u></center>
+
+<p>&nbsp; Abaixo uma listagem das parti&ccedil;&otilde;es compat&iacute;veis
+com o programa <i>CFdisk</i> e seus respectivos c&oacute;digos H<i>exadecimais</i>,
+para consulta t&eacute;cnica ou utiliza&ccedil;&atilde;o durante o particionamento
+de disco.
+<p><b><u>C&oacute;digo</u></b>&nbsp;&nbsp; <b><u>Nome</u></b>
+<br>01 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT12
+<br>02 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Xenix root
+<br>03 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Xenix usr
+<br>04 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT16 (&lt;32MB)
+<br>05 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Extendida
+<br>06 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT16 (>=32MB)
+<br>07 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OS/2 HPFS ou NTFS
+<br>08 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AIX
+<br>09 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AIX inicializ&aacute;vel
+<br>0A -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OS/2 Boot Manager
+<br>0B -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows 95 FAT32
+<br>0C -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows 95 FAT32(LBA)
+<br>0E -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows 95 FAT16(LBA)
+<br>0F -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows 95 Extendida
+<br>11 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT12 oculta
+<br>12 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT16 oculta
+<br>16 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT16 oculta
+<br>17 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HPFS OS/2 oculta
+<br>40 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Venix 80286
+<br>51 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Novell
+<br>52 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Microport
+<br>63 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GNU Hurd
+<br>64 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Novell Netware
+286
+<br>65 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Novell Netware
+386
+<br>75 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PC/IX
+<br>80 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Minix Antigo
+<br>81 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux / Minix
+<br>82 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux Swap
+<br>83 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux Nativa
+<br>85 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux Extendida
+<br>93 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Amoeba
+<br>94 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Amoeba BBT
+<br>A5 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSD/386
+<br>A6 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Open BSD
+<br>A7 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NextStep
+<br>B7 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSDI Sistema de
+Arquivos
+<br>B8 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSDI Swap
+<br>C7 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Syrinx
+<br>DB -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CP/M
+<br>E1 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS access
+<br>E3 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS R/O
+<br>F2 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS secund&aacute;ria
+<br>FF -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BBT
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="4"></a><u><font size=+1>4- ) Direitos Autorais</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Este documento foi desenvolvido com base
+em minha experi&ecirc;ncia e conhecimento em discos e parti&ccedil;&otilde;es,
+mediante pesquisa em alguns documentos como os How-TO do Linux e verificando
+as principais d&uacute;vidas de usu&aacute;rios durante a utiliza&ccedil;&atilde;o
+de particionadores de disco, tendo como objetivo levar o conhecimento sobre
+discos, parti&ccedil;&otilde;es e utiliza&ccedil;&atilde;o deste programa,
+atendendo tanto usu&aacute;rios iniciantes como avan&ccedil;ados e como
+contribui&ccedil;&atilde;o para a comunidade Linux em geral.
+<center>
+<p>Gleydson M. da Silva (<i>gleydson_s@yahoo.com</i> e <i>gleydson@linuxbr.com.br</i>)</center>
+
+<p>&nbsp;&nbsp;&nbsp; Qualquer d&uacute;vida, sugest&atilde;o ou reclama&ccedil;&atilde;o
+podem ser mandadas para um dos E-Mail's Acima. Conto com sua contribui&ccedil;&atilde;o
+para a melhoria deste Manual.
+<p><b>&nbsp;&nbsp;&nbsp; Autorizo a reprodu&ccedil;&atilde;o Total ou parcial
+deste texto para que seja utilizado para fins educativos, autoaprendizado,
+coloca&ccedil;&atilde;o em Home pages e qualquer outra forma de distribui&ccedil;&atilde;o
+n&atilde;o comercial do documento desde que sejam mantidos os meus cr&eacute;ditos
+pela pesquisa e elabora&ccedil;&atilde;o deste documento de acordo com
+os termos da GNU (veja abaixo <a href="#6">Licen&ccedil;as e Garantias
+sobre este documento</a>).</b>
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="5"></a><u><font size=+1>5- ) Licen&ccedil;as e Garantias
+sobre este documento</font></u></center>
+
+<p>CFdisk-Portuguese copyright (C) 1999 Gleydson M. da Silva
+<p>&nbsp;&nbsp; Este documento &eacute; de livre distribui&ccedil;&atilde;o,
+que pode ser copiado e distribu&iacute;do sob os termos da Licen&ccedil;a
+P&uacute;blica Geral&nbsp; GNU, conforme publicada pela Free Software Foundation,
+vers&atilde;o 2 da licen&ccedil;a ou (a crit&eacute;rio do autor) qualquer
+vers&atilde;o posterior.
+<p><b>&nbsp;&nbsp; Este documento &eacute; distribu&iacute;do com a iten&ccedil;&atilde;o
+de ser &uacute;til ao seu utilizador, no entanto N&Atilde;O TEM NENHUMA
+GARANTIA,&nbsp; EXPL&Iacute;CITAS OU IMPL&Iacute;CITAS , COMERCIAIS OU
+DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. Consulte a Licen&ccedil;a
+P&uacute;blica Geral&nbsp; GNU para maiores detalhes.</b>
+<p><i>gleydson_s@yahoo.com</i>
+<br><i>gleydson@linuxbr.com.br</i>
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="6"></a><u><font size=+1>6- ) Nota sobre Marcas Registradas</font></u></center>
+
+<p>Os programas mencionados neste manual s&atilde;o de propriedade dos
+seus respectivos donos:
+<p>MS-DOS, Windows 3.1x, Windows 9x, Windows NT s&atilde;o de propriedade
+da Microsoft.
+<br>OS/2 e OS/2 Warp s&atilde;o de propriedade da IBM
+<div align=right><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<center>
+<p><br><a NAME="7"></a><u><font size=+1>7- ) Agradecimentos</font></u></center>
+
+<p>Agrade&ccedil;o a todas as pessoas que me mandam corre&ccedil;&otilde;es,
+coment&aacute;rios, cr&iacute;ticas e elogios sobre este documento, pois
+atrav&eacute;s destas mensagens, est&atilde;o contribuindo para a melhoria
+deste projeto.
+<p><b>Agradecimentos especiais a:</b>
+<p><b>Eduardo Marcel Macan</b> <i>&lt;macan@thecore.com.br></i> - Pelo
+apoio e interesse na divulga&ccedil;&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+deste projeto e outros documentos relacionados com a tradu&ccedil;&atilde;o
+e divulga&ccedil;&atilde;o de
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+documentos do Linux no Brasil.
+<br><b>Jorge Godoy</b> <i>&lt;jorge@bestway.com.br></i> - Pela revis&atilde;o
+deste documento e primeiras orienta&ccedil;&otilde;es
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+para a convers&atilde;o deste para SGML.
+<br><b>Adam di Carlo</b> <i>&lt;adam@onshore.com></i> - Que me deu apoio
+na coloca&ccedil;&atilde;o deste
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+documento&nbsp; na documenta&ccedil;&atilde;o da distribui&ccedil;&atilde;o
+Debian.
+<p>E a voce pelo enteresse em conhecer mais sobre o Linux.&nbsp;
+<div align=right>
+<br><i><a href="#Indice">Voltar ao Indice</a></i></div>
+
+<br>&nbsp;
+<p>&lt;EOF>
+</body>
+</html>
diff --git a/fdisk/doc/CFdisk-Portuguese.txt b/fdisk/doc/CFdisk-Portuguese.txt
new file mode 100644
index 000000000..99981c4df
--- /dev/null
+++ b/fdisk/doc/CFdisk-Portuguese.txt
@@ -0,0 +1,1236 @@
+ CFdisk-Portuguese Copyright (C) 1999 Gleydson M. da Silva
+
+
+
+
+
+
+
+ Gleydson M. da Silva - gleydson@linuxbr.com.br
+ Versăo: 1.68
+
+
+
+
+
+
+
+[ Indice ]
+
+1 - Introduçăo ao CFdisk
+ 1.1 - O que é uma partiçăo de disco
+ 1.2 - O que é a tabela de partiçăo
+ 1.3 - Introduçăo ao Particionamento de Discos
+ 1.4 - Identificadores utilizados neste manual
+ 1.5 - Identificaçăo de discos e partiçőes no Sistema Linux
+ 1.6 - Tipos de partiçőes de disco
+ 1.7 - Observaçőes sobre o formato DOS 6.xx(FAT16)
+
+2 - Iniciando o programa CFdisk
+ 2.1 - Opçőes de Linha de comando
+ 2.2 - Conhecendo a tela do CFdisk
+ 2.3 - Descriçăo dos comandos
+ 2.3.1 - Setas Acima/Abaixo - Esquerda/Direita
+ 2.3.2 - <CTRL>+<l>
+ 2.3.3 - Boot
+ 2.3.4 - Delete
+ 2.3.5 - Geometry
+ 2.3.6 - Help
+ 2.3.7 - Maximize
+ 2.3.8 - New
+ 2.3.9 - Print
+ 2.3.10 - Quit
+ 2.3.11 - Type
+ 2.3.12 - Units
+ 2.3.13 - Write
+
+3 - Tipos de partiçőes compatíveis com o CFdisk
+
+4 - Direitos Autorais
+
+5 - Licenças e Garantias sobre este documento
+
+6 - Notas sobre marcas registradas
+
+7 - Agradecimentos
+
+
+
+
+
+
+
+
+
+
+
+1-) Introduçăo ao CFdisk
+
+CFdisk é um programa utilizado para fazer o particionamento de discos,
+utilizando uma interface em modo texto.
+
+A grande características deste programa, além de sua interface de comunicaçăo
+com o usuário e a enorme quantidade de partiçőes que manipula, é a grande
+facilidade de operaçăo, o seu poder de manipulaçăo de partiçőes e a sua
+precisăo que fazem com que o usuário tenha mais confiança durante o
+particionamento de disco.
+
+É recomendável a leitura deste texto, mesmo que tenha uma noçăo sobre o
+particionamento de discos, exceto para os gurus que já conhecem a fundo a
+forma de trabalho, em geral, de programas deste tipo, pois o particionamento
+de disco pode destruir os seus arquivos e partiçőes já existentes, se for
+usado de forma incorreta.
+
+O programa CFdisk pode ser utilizado em qualquer sistema operacional que
+esteja de acordo com o padrăo POSIX (Linux, UNIX, FreeBSD, HPUX, etc).
+
+A versăo do CFdisk utilizada nas explicaçőes deste manual é a 0.8, mas
+isto năo impede que este manual seja utilizado com versőes futuras ou
+anteriores deste programa. As características principais
+do programa CFdisk e as explicaçőes sobre particionamento, săo válidas para
+quaisquer versőes deste programa.
+
+Este documento é distribuído com a itençăo de ser útil ao seu utilizador,
+no entanto NĂO TEM NENHUMA GARANTIA,  EXPLÍCITAS OU IMPLÍCITAS , COMERCIAIS
+OU DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. Consulte a Licença Pública
+Geral  GNU para maiores detalhes.
+
+
+1.1-) Partiçăo de Disco
+
+Uma partiçăo de disco é o local onde o sistema operacional armazena seu
+sistema de arquivos(arquivos, diretórios, FAT, boot sector, etc).
+
+
+
+1.2-) Tabela de partiçăo
+
+A Tabela de partiçăo é o local do disco rígido onde se localizam os dados sobre
+todas as partiçőes existentes no disco como o sistema de arquivos utilizado, se
+ela é inicializável, a cabeça inicial/final, setor inicial/final, cilindro
+inicial/final, número de setores ocupados por ela no disco.
+
+
+1.3-) Introduçăo ao particionamento de discos
+
+Particionar o disco rígido é dividir ele em partes para armazenamento
+de arquivos e programas. As partiçőes criadas no disco podem ter o tamanho
+que desejar (desde que esteja dentro da capacidade máxima do disco rígido).
+
+Uma partiçăo năo interfere em outras partiçőes do mesmo disco(é como
+se tivessemos vários discos rígidos dentro de um), e nem em outros discos
+rígidos(caso possuir mais que um disco rígido instalado em seu computador).
+
+Pode ser criada uma partiçăo única, que neste caso todo o disco rígido
+é usado para armazenar os arquivos(que é o caso mais comum caso voce tenha
+o DOS), ou várias partiçőes, que podem ser usadas pelo mesmo SO(Sistema
+Operacional) ou outros sistemas operacionais diferentes(um exemplo de várias
+partiçőes: se for usar o DOS e o Linux no mesmo disco, os dois sistemas văo
+estar no mesmo disco mas um năo interfere no outro).
+
+ATENÇĂO : A OPERAÇĂO DE PARTICIONAMENTO DE DISCOS PODE FAZER COM QUE OS DADOS
+ ARMAZENADOS EM SEU DISCO RÍGIDO SEJAM PERDIDOS, SE FOR USADA
+ INCORRETAMENTE. É SEMPRE RECOMENDADO RETIRAR UMA CÓPIA DE SEGURANÇA
+ DOS SEUS ARQUIVOS EXISTENTES NO MICRO ANTES DE SE EXECUTAR UM
+ PROGRAMA DESTE TIPO, A NĂO SER QUE TENHA CONFIANÇA NO QUE ESTA
+ FAZENDO E QUE ENTENDEU AS EXPLICAÇŐES SOBRE A IDENTIFICAÇĂO DE
+ DISCOS RÍGIDOS E SUAS PARTIÇŐES NO SISTEMA.
+
+Neste manual voce aprenderá como deve particionar seu disco rígido para
+a instalaçăo do SO usando o programa CFdisk.
+
+
+1.4-) Algumas identificaçőes utilizadas neste manual para facilitar a
+ compreensăo do texto
+
+Esta parte descreve algumas características de organizaçăo deste manual e
+algumas identificaçőes que utilizei para facilitar o seu entendimento, e as
+explicaçőes que serăo dadas.
+
+Explicaçăo de nomes e comandos, sera seguida da palavra "onde:" e abaixo
+dela as explicaçőes sobre os comandos, exemplo:
+
+onde:
+nome a ser explicado1 : Descriçăo
+nome a ser explicado2 : Descriçăo
+nome a ser explicado3 : Descriçăo
+
+ou
+
+onde:
+nome a ser explicado1 - Descriçăo
+nome a ser explicado2 - Descriçăo
+nome a ser explicado3 - Descriçăo
+
+
+Quando for feita alguma referęncia com tecla do teclado, por exemplo,
+pressione p para listar as partiçőes, a letra sera colocada entre <> para
+que seja melhor entendida:
+
+pressione <d> para deletar uma partiçăo...
+...pressione <Enter> para escolher a opçăo do menu.
+pressione <t> para listar os tipos de partiçőes disponíveis...
+
+
+ As linhas pontilhadas que aparecem na tela, veja abaixo,
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
+servem para identificar que o que esta entre as linhas é um exemplo de como
+será a resposta do comando para a tela de seu computador.
+
+
+
+1.5-) Identificaçăo de discos e partiçőes no Linux
+
+Antes de descrever como se utiliza o programa CFdisk, é importante fazer
+algumas explicaçőes sobre a identificaçăo das partiçőes e unidades de disco
+no sistema Linux( e outros *nix).
+
+Se voce for um usuário que já conhece a interpretaçăo de discos e partiçőes
+neste sistema, voce năo precisará ler esta parte.
+
+No sistema operacional Linux, os dispositivos existentes no computador
+(como impressoras, unidades de disquetes, discos rígidos, monitor, placa de
+som, etc...) săo identificados por um nome referente a este dispositivo e
+colocado no diretório /dev (que é utilizado para identificar os dispositivos
+ou periféricos existentes no computador).
+
+ A identificaçăo dos discos rígidos segue a seguinte forma:
+
+ /dev/hda1
+ | | ||
+ | | ||_Número que identifica a partiçăo do disco rígido(1=Primeira, 2=segunda)
+ | | |
+ | | |_Letra que identifica o disco rígido(a=primeiro disco, b=segundo disco, etc..)
+ | |
+ | |_Sigla HD - Significa que é um disco rígido IDE(Se tiver um SD significa SCSI)
+ |
+ |_ Identificaçăo do diretório onde os dispositivos do sistema săo armazenados
+
+OBS: As unidades de disco rígido SCSI, săo identificadas com as letras SD
+ seguida pela letra da unidade e número da partiçăo e os discos IDE săo
+ identificados por HD seguida pela letra da unidade de disco e o número
+ da partiçăo do disco(como visto acima).
+
+Abaixo, algumas identificaçőes de disco do sistema Linux:
+
+/dev/hda1 - Disco rígido IDE primário principal - Primeira partiçăo
+/dev/hda2 - Disco rígido IDE primário principal - Segunda partiçăo
+/dev/hda3 - Disco rígido IDE primário principal - Terceira partiçăo
+/dev/hdb1 - Disco rígido IDE primário escravo - Primeira partiçăo
+/dev/hdb2 - Disco rígido IDE primário escravo - Segunda partiçăo
+/dev/hdb3 - Disco rígido IDE primário escravo - Terceira partiçăo
+/dev/hdc1 - Disco rígido IDE secundário principal - Primeira partiçăo
+/dev/hdc2 - Disco rígido IDE secundário principal - Segunda partiçăo
+/dev/hdc3 - Disco rígido IDE secundário principal - Terceira partiçăo
+/dev/hdd1 - Disco rígido IDE secundário escravo - Primeira partiçăo
+/dev/hdd2 - Disco rígido IDE secundário escravo - Segunda partiçăo
+/dev/hdd3 - Disco rígido IDE secundário escravo - Terceira partiçăo
+/dev/sda1 - Primeiro disco rígido SCSI - Primeira partiçăo
+/dev/sda2 - Primeiro disco rígido SCSI - Segunda partiçăo
+/dev/sda3 - Primeiro disco rígido SCSI - Terceira partiçăo
+/dev/sdb1 - Segundo disco rígido SCSI - Primeira partiçăo
+/dev/sdb2 - Segundo disco rígido SCSI - Segunda partiçăo
+/dev/sdb3 - Segundo disco rígido SCSI - Terceira partiçăo
+
+No exemplo acima foram usadas 3 partiçőes por disco, mas podem existir mais
+partiçőes no mesmo disco, um exemplo é se o disco rígido possuir partiçőes
+Lógicas, que săo identificadas no sistemas a partir de /dev/hdx5.
+
+
+
+Abaixo um exemplo de como o Linux identifica as partiçőes em cada disco
+existente em seu computador:
+
+Vamos supor que eu tenha 2 discos rígidos:
+o 1şdisco de 2GB e o 2şdisco de 1GB(Giga Byte ou 1.000 Megas!)
+
+No primeiro disco(de 2GB), a primeira partiçăo é de 800MB do tipo
+FAT16(DOS), a segunda partiçăo é de 1.2GB do tipo EXT2(Linux)(1.2GB+800MB=2GB
+que é a capacidade total do disco). Entăo as partiçőes seriam identificadas
+da seguinte forma no Linux:
+
+/dev/hda - Disco rígido Primário Principal
+/dev/hda1 - Primeira partiçăo do primeiro disco rígido (de 800MB do tipo DOS)
+/dev/hda2 - Segunda partiçăo do primeiro disco rígido( de 1.2GB do tipo Linux)
+
+Neste caso estariam disponíveis 800MB para serem usados com o DOS e
+1.2GB para o Linux.
+
+Por exemplo, se voce particionar um disco rígido em duas partes e usar
+as duas partiçőes no DOS, ele reconhecerá as partiçőes como sendo C: e D:.
+
+Lembre-se: Quando um disco é particionado, nenhuma partiçăo interfere
+ na outra, repare que quando voce particiona(divide) um disco,
+ é como se tivesse dois discos rígidos(o único cuidado que
+ voce deve tomar é com as cópias de segurança, porque se der
+ um problema de parte eletrônica no disco rígido, por exemplo,
+ a sua placa controladora queimar ou o cabeçote dele ir pro
+ espaço, voce perderá as suas 2 partiçőes que estăo armazenadas
+ nele.
+
+
+Voltando ao exemplo das classificaçőes das partiçőes do disco, vamos
+para o segundo disco:
+
+No segundo disco(1GB), eu tenho uma partiçăo de 950MB do tipo FAT16(DOS),
+que costumo usar para armazenar arquivos temporários e cópias de segurança
+de meu sistema, etc..., e outra de 50MB SWAP(Partiçăo de memória virtual
+como descrevi acima)(950MB+50MB=1GB). Entăo as partiçőes deste disco seriam
+identificadas da seguinte forma no Linux:
+
+/dev/hdb - Disco rígido principal escravo
+/dev/hdb1 - Primeira partiçăo do disco acima ( de 950MB do tipo DOS)
+/dev/hdb2 - Segunda partiçăo do disco acima ( de 50MB do tipo SWAP)
+
+No disco acima, 950MB estăo disponíveis para serem usados pelo DOS e
+50 MB pela memória virtual (SWAP) do Linux.
+
+Note que se voce utiliza o MS-DOS, voce năo conseguirá ver as partiçőes
+do Linux e SWAP, porque săo imcompatíveis com o formato aceito pelo DOS (ele
+identificaria a primeira partiçăo do primeiro disco(800MB) como a unidade C:
+e a primeira partiçăo do segundo disco(950MB) como unidade D), mas o
+contrário năo acontece; O Linux tem total compatibilidade com a partiçăo
+DOS FAT12, FAT16, FAT32, OS/2 HPFS, e muitas outras.
+
+
+
+1.6-)Tipos de partiçőes de discos
+
+As partiçőes de disco săo divididas em tres tipos: Primária, Extendida
+e Lógica.
+Pode se ter, no máximo, 4 partiçőes Primárias e Extendidas no mesmo disco
+(3 Primárias e 1 Extendida ou 4 partiçőes Primárias em cada disco).
+A partiçăo Primária permite o armazenamento de arquivos e diretórios.
+
+Todos os computadores que possuem somente a unidade C(supondo que utilize
+o DOS), utilizam este tipo de partiçăo para armazenamento de arquivos e
+inicializaçăo do sistema operacional.
+
+Se for preciso criar mais que 4 partiçőes no mesmo disco, será necessário
+criar uma partiçăo Extendida. A partiçăo Extendida năo pode ser utilizada
+para armazenar arquivos. Ela é usada para a criaçăo de outras partiçőes,
+dentro dela, que săo chamadas de partiçőes Lógicas.
+
+Uma partiçăo extendida podem conter várias partiçőes Lógicas. As partiçőes
+Lógicas podem armazenar arquivos e diretórios(como as partiçőes primárias).
+
+Um mesmo disco rígido pode armazenar mais de 64 partiçőes independentes
+uma das outras.
+
+LEMBRE-SE: Os arquivos e diretórios podem ser armazenados somente em
+ partiçőes de disco primárias ou lógicas, a partiçăo extendida năo
+ é usada para armazanamento de arquivos e diretórios.
+
+Se possuir duas partiçőes em seu computador (C: e D: no DOS), e năo
+estiver usando a partiçăo D:, a instalaçăo pode ser feita nesta partiçăo
+desde que ela tenha o espaço necessário para o sistema operacional Linux,
+os programas que desejar instalar, mais a partiçăo SWAP.
+
+
+
+1.7-) Observaçőes sobre o formato DOS 6.XX(FAT 16)
+
+No formato DOS 6.XX(FAT16), o primeiro setor da área de dados da partiçăo
+é utilizado frequentemente pelo DOS para armazenamento de dados sobre a
+partiçăo de disco, e estes dados săo usados pelo sistema para se ter maior
+confiabilidade do que os dados armazenados na tabela de partiçăo. O sistema
+de arquivos DOS, faz o FDISK(do DOS) limpar os primeiros 512 bytes da área
+de dados da partiçăo sempre que uma mudança de tamanho acontecer.
+
+O formatador do DOS(format) verifica este primeiro setor toda vez que
+a upçăo /U (que é utilizada para năo salvar dados para se fazer a desformataçăo
+do disco) é utilizada.
+
+Isto é considerado uma FALHA no Format(do DOS) e no Fdisk(do DOS).
+A opçăo abaixo deve ser utilizada caso voce crie uma partiçăo do DOS FAT16
+com o CFdisk, que faz com que os primeiros 512 bytes daquela partiçăo
+sejam "limpos", para manter a compatibilidade com o DOS. Utilize esta opçăo
+dentro do Linux, após criar a partiçăo com o CFdisk e reiniciar o seu
+computador. Foi notado que esta opçăo só funciona corretamente somente quando
+o Sistema Linux estiver instalado em seu computador. Năo me responsabilizo
+caso utiliza-la a partir de um disquete de recuperaçăo.
+
+dd if=/dev/zero of=/dev/hdx1 bs=512 count=1
+
+onde:
+hdx1 - É a identificaçăo da unidade de disco e a partiçăo que foi criada
+ pelo CFdisk utilizando o sistema de arquivos DOS que terá seu
+ primeiro setor "limpo".
+
+
+OBS1: Cuidado ao utilizar esta opçăo, um pequeno descuido pode resultar na
+ perda de dados do seu disco rígido ou outras partiçăo.
+
+OBS2: Năo utilize este comando com partiçőes que utilizam o sistema de arquivos
+ FAT32(utilizada nos sistemas operacionais Windows 95 OSR/2 e superiores)
+ se for utilizada em um disco com este sistema, sua FAT será corrompida,
+ se isto acontecer, será necessária a re-formataçăo da partiçăo.
+
+OBS3: É extremamente recomendado que se utilize o programa de particionamento
+ que acompanha o seu sistema operacional. Por exemplo, se deseja criar
+ uma partiçăo DOS 6.XX, utilize o FDisk qua acompanha o DOS.
+
+
+
+2-) Iniciando o programa CFdisk
+
+Para entrar no programa CFdisk digite:
+cfdisk <unidade>
+
+onde:
+unidade - é a unidade de disco que deseja utilizar para fazer o particionamento
+ a unidade pode ser: /dev/hda, /dev/hdb, /dev/hdc ..., /dev/sda,
+ /dev/sdb...,etc
+
+NOTA: Se voce năo digitar a unidade, o cfdisk utilizará a unidade /dev/hda
+ como padrăo.
+
+
+
+2.1-) Opçőes de linha de comando utilizadas com o CFdisk
+
+Opçőes de linha de comando fazem com que o programa inicie de forma
+específica ou personalizada. As opçőes devem ser digitadas após o nome do
+programa (cfdisk).
+
+ cfdisk <unidade> < -avz > < -c cilindros > < -h cabeçotes >
+ < -s setores_por trilha > < -P opt > < dispositivo >
+
+onde:
+-a Usa um cursor seta ao invés de video reverso para destacar a
+ partiçăo atual.
+-v Mostra a versăo do programa e Coyright(Direitos Reservados).
+-z Ignora a leitura da tabela das partiçőes existentes no disco
+ ao iniciar o CFdisk.
+
+-c Número de Cilindros do disco
+-h Número de Cabeçotes do disco
+-s Setores por trilha existentes no disco.
+-P OPC Mostra a tabela de partiçăo no formato especifico.
+ OPC - Pode ser: r - Mostra a tabela de partiçăo em Formato RAW
+ s - Mostra a tabela de partiçăo em Format de Setores
+ t - Mostra a tabela de partiçăo classificada por
+ setores
+ Para maiores detalhes, veja O comando Print <p>.
+
+OBS: A utilizaçăo dos parâmetros -c -h -s, substituirăo os parâmetros da BIOS
+ da placa, utilize estas opçőes se sua bios năo utilizar estes parâmetros
+ ou se mostrar valores incorretos.
+
+Após entrar o programa CFdisk, ele verificará automaticamente o
+tamanho do Disco Rígido, se năo conseguir, o programa será terminado.
+Para resolver este problema, especifique o tamanho do disco em cilindros,
+cabeças, e setores na linha de comando que inicia o programa.
+Este problema geralmente acontece quando se tenta particionar uma unidade de
+disco SCSI que esteja conectada a uma placa controladora que năo possui BIOS,
+e quando uma BIOS mostra os valores da geometria do disco(tamanho)
+incorretamente.
+
+O próximo passo do CFdisk é fazer a leitura das partiçőes atuais do
+disco, se năo conseguir, o programa será terminado. O único motivo para o
+CFdisk mostrar esta mensagem de erro, é se voce digitar parâmetros
+incorretos para o tamanho do disco, caso tenha acontecido o problema
+descrito no paragrafo anterior. Verifique se os parâmetros foram digitados
+incorretamente, se os parâmetros estiverem digitados corretamente e mesmo
+assim o programa continua dando erro na leitura das partiçőes, utilize a
+opçăo -z na linha de comando do programa, que faz com que ele ignore a
+leitura das partiçőes existentes no disco ao iniciar.
+
+
+
+2.2-) Conhecendo a Tela do CFdisk
+
+Após digitar CFdisk, será mostrada a tela principal onde voce poderá
+acionar os comandos para manipulaçăo das partiçőes de disco, e visualizar
+as partiçőes de disco atuais e outros dados. Abaixo o exemplo e explicaçőes
+sobre esta tela.
+
+O disco utilizado para os exemplos é um disco de 5157 MB de Capacidade com:
+- 10672 Cilindros 15 Cabeças 63 Setores (no modo C/H/S)
+- 627 Cilindros 255 Cabeças 63 Setores (no modo LBA)
+
+ A unidade de medida utilizada pelo CFdisk para mostrar os parâmetros do
+disco será o mesmo configurado na BIOS, ou seja, se estiver utilizando o
+disco com o modo de operaçăo em LBA, os valores de cilindros, cabeças e
+setores motrados pelo CFdisk sera em LBA.
+
+
+----------------------------------------------------------------------------
+ CFdisk 0.8l
+
+ Disk Drive: /dev/hda
+ Heads:255 Sectores per track:63 Cylinders:627
+-----------------------------------------------------------------------------
+Name Flags Part Type FSType [LABEL] Size(MB)
+hda1 Boot Primary Win 95 FAT 32 1953.12
+hda5 Logical DOS FAT 16 (BIG) GLEYDSON 172.58
+ Pri/Log Free Space 2910.55
+
+
+
+
+
+
+
+
+
+
+[Bootable] [Delete] [Help] [Maximize] [Print]
+[Quit] [Type] [Units] [Write]
+----------------------------------------------------------------------------
+No cabeçalho da tela, é mostrada a versăo do programa, a unidade de disco
+que será usada no particionamento e os parâmetros de tamanho do disco(cabeçotes,
+cilindros e setores).
+Abaixo do cabeçalho após a linha pontilhada, se encontra a área das partiçőes.
+
+onde:
+- Name : é o nome da(s) partiçăo(őes) de Disco.
+- Flags : Se estiver marcada como BOOT, será possível iniciar o sistema
+ a partir desta partiçăo(quando năo se utiliza um Boot Manager).
+ Se estiver marcada como NC (Năo compatível) significa que esta
+ partiçăo năo é compatível com o DOS, OS/2, etc. Para maiores
+ detalhes, veja O comando Maximize <m>.
+- Type : O tipo da partiçăo pode ser Primária ou Lógica. Para espaço năo
+ utilizado no Disco, o tipo da partiçăo pode ser Primário/Log.
+- FileSystems : Tipo de Sistema de Arquivos que é usado naquela partiçăo.
+ Se o sistema de arquivos for desconhecido, ele será mostrado como
+ um valor Hexadecimal.
+ Um caso especial ocorre quando há Partiçőes do Disco Rígido que
+ năo podem ser usadas ( porque toda a partiçăo primária esta em uso).
+ Quando isto é detectado, o tipo de FileSystems é mostrado como năo
+ usável(Unusable) para criaçăo de novas partiçőes.
+- Label : Nome de volume da partiçăo de disco. Os nomes de partiçőes FAT32,
+ năo săo mostrados com esta versăo do CFdisk.
+- Size : Mostra o tamanho que cada partiçăo ocupa no disco rígido em
+ MegaBytes (por padrăo). Também pode mostrar o tamanho ocupado por
+ Setores ou Cilindros. Se for mostrado um asterisco (*) após o
+ tamanho, isto diz que a partiçăo năo esta alinhada com Cilindro.
+
+
+O espaço livre existente no disco para criaçăo de novas partiçőes, é
+mostrado como uma outra partiçăo, com o FSType(sistema de arquivos) Free
+Space(espaço Livre).
+
+OBS: As partiçőes de disco Extendidas năo săo mostradas na tela do CFdisk
+ durante o particionamento, mesmo assim, as partiçőes lógicas que este
+ tipo de partiçăo armazena, serăo mostradas.
+
+No rodapé da tela, encontramos os comandos utilizados pelo CFdisk para
+manipular as partiçőes de disco. Os comandos săo mostrados entre Chaves [].
+
+Todos os comandos no rodapé da tela, săo aplicaveis somente para a
+partiçăo que estiver destacada com a barra(video reverso). Veja descriçőes
+dos comandos do CFdisk para mais detalhes.
+
+Abaixo do rodapé da tela, é mostrada a descriçăo do comando que estiver
+em destaque com o cursor em video reverso.
+
+ Veja abaixo a traduçăo da tela principal do programa CFdisk:
+----------------------------------------------------------------------------
+ CFdisk 0.8l
+
+ Unidade de Disco: /dev/hda
+ Cabeças:255 Setores por trilha:63 Cilindros:627
+-----------------------------------------------------------------------------
+Nome Opçőes Tipo Part. Tipo Sist. Arquivos [VOLUME] Tamanho(MB)
+hda1 Boot Primary Win 95 FAT 32 1953.12
+hda5 Logical DOS FAT 16 (BIG) GLEYDSON 172.58
+ Pri/Log Espaço Livre 2910.55
+
+
+
+
+
+
+
+
+
+
+[Inicializável] [Apagar] [Ajuda] [Maximizar] [Imprimir]
+[Sair] [Tipo] [Unidades][Gravar]
+----------------------------------------------------------------------------
+
+
+
+2.3-) Descriçăo dos comandos do CFdisk
+
+Os comandos do programa săo utilizados criar partiçőes, entrar na ajuda do
+programa, alterar o tipo da partiçăo, apagar uma partiçăo, etc.
+
+Pode ser utilizado Seta p/ Esquerda e Seta p/ direita para se movimentar
+entre os comandos, quando o cursor estiver em cima do comando que deseja
+executar, pressione <Enter>.
+
+Outro método que se pode utilizar para acionar uma opçăo do CFdisk, é
+pressionando a primeira letra de cada opçăo, automaticamente a opçăo é
+executada(sem ter que pressionar <Enter>). Neste método, todos os comandos
+aceitam letras maiúsculas e minúsculas, exceto o comando Write(gravar
+partiçăo) que é executado somente se pressionar <W> maiúscula, para evitar
+gravaçőes acidentais o disco.
+
+Quando estiver em um Sub-Menu e desejar retornar ao menu principal,
+pressione a tecla <Esc>.
+
+
+
+2.3.1-) Setas Acima e Abaixo/ Esquerda e Direita (Movimentaçăo do Cursor)
+
+Setas Acima e Abaixo săo utilizadas para se movimentar entre as partiçőes
+existentes no disco e espaço livre, selecionando-a para que seja utilizada
+as opçőes do CFdisk.
+
+Setas Esquerda e Direita săo utilizadas para selecionar entre as opçőes
+diponíveis do programa(que serăo explicadas abaixo). Para confirmar uma
+opçăo, pressione <Enter>.
+
+
+
+2.3.2-) O comando <CTRL>+<l>
+
+Este comando é utilizado para atualizar a tela manualmente caso a
+atualizaçăo automática falhar, por exemplo, quando uma partiçăo for
+excluida, e continuar a ser mostrada na tela.
+
+
+
+2.3.3-) O comando Boot <b>
+
+Este comando permite escolher se a partiçăo Primária atual será utilizada
+para iniciar o sistema(BOOT). Selecione esta opçăo para selecionar entre
+partiçăo inicializável ou năo inializável. Quando uma partiçăo estiver
+marcada como inicializável, aparecerá a palavra BOOT na coluna Flags(na tela
+principal do programa).
+
+OBS: Năo será necessário marcar a partiçăo Linux como inicializável, caso se
+ esteja utilizando um Boot Manager para escolher qual sistema operacional
+ sera utilizado para inicializar o sistema.
+
+
+
+2.3.4-) O comando Delete <d>
+
+Este comando apaga a partiçăo selecionada do disco. Após apagar a partiçăo,
+o espaço ocupado por ela é convertido para espaço livre.
+A partiçăo marcada atualmente como Free Space ou como Unusable năo pode
+ser apagada.
+
+
+
+2.3.5-) O comando Geometry <g>
+
+Este comando năo é mostrado no menu, pois é utilizado para alterar o
+tamanho (Cilindros, Cabeças e Setores do disco). Este comando só pode
+ser acionado se for pressionada a tecla <g>.
+
+ALERTA: Esta opçăo é recomendada somente para aqueles que sabem os riscos
+ que o uso desta opçăo pode fazer, e se a situaçăo que estăo, requerem
+ o seu uso.
+
+Uma situaçăo que esta opçăo é util, é se o BIOS do seu computador năo
+mostrar corretamente os parâmetros do disco(Cilindros, Cabeçotes ou Setores),
+sendo necessário que se passe manualmente o tamanho do disco para que seja
+feito o correto particionamento do disco.
+
+OBS: Caso seu disco rígido for SCSI e placa controladora dele năo tiver BIOS,
+ provavelmente o CFdisk năo será iniciado. Se este problema ocorrer,
+ digite os parâmetros do disco na linha de comando ao iniciar o programa.
+ Para maiores detalhes, veja opçőes de linha de comando do CFdisk.
+
+Após pressionar <g> será mostrada a seguinte tela:
+
+----------------------------------------------------------------------------
+ CFdisk 0.8l
+
+ Disk Drive: /dev/hda
+ Heads:255 Sectors:63 Cilinders:627
+-----------------------------------------------------------------------------
+Name Flags Part Type File System [LABEL] Size(MB)
+hda1 Boot Primary Win 95 FAT 32 1953.12
+hda5 Logical DOS FAT 16 (BIG) GLEYDSON 172.58
+ Pri/Log Espaço Livre 2910.55
+
+
+
+
+
+
+
+
+
+[ Cylinders] [Heads] [Sectors] [Done]
+
+----------------------------------------------------------------------------
+onde:
+Cylinders: Altera o número de Cilindros do disco atual durante o particionamento.
+Heads : Altera o número de Cabeças do disco atual durante o particionamento.
+Sectors : Altera o número de Setores do disco atual durante o particionamento.
+Done : Quando finalizar as alteraçőes, tecle <d> ou selecione Done para
+ que o CFdisk modifique os valores de Cilindros, Cabeças e Setores
+ que utiliza para particionar o disco e retorne a tela anterior.
+
+
+ Quando escolher algum parâmetro acima para alteraçăo(Cilindros, cabeçotes
+ou Setores do disco), será vista uma tela como esta:
+----------------------------------------------------------------------------
+ CFdisk 0.8l
+
+ Unidade de Disco: /dev/hda
+ Cabeças:255 Setores por trilha:63 Cilindros:627
+-----------------------------------------------------------------------------
+Nome Opçőes Tipo Part. Tipo Sist. Arquivos [VOLUME] Tamanho(MB)
+hda1 Boot Primary Win 95 FAT 32 1953.12
+hda5 Logical DOS FAT 16 (BIG) GLEYDSON 172.58
+ Pri/Log Espaço Livre 2910.55
+
+
+
+
+
+
+
+
+
+Enter the number of Cylinders: 627
+
+----------------------------------------------------------------------------
+O valor que aparece ao selecionar a opçăo, é o valor que o disco esta
+utilizando atualmente(cilindros), e será pedido que digite um valor para os
+Cilindros, que substituirá os da BIOS durante a seçăo de particionamento.
+Para sair desta tela sem alterar o valor, pressione <ESC>. A mesma tela e
+explicaçăo se aplicam para as alteraçőes de Cabeças e Setores.
+
+OBS: Se por acaso digitar um valor incorretamente para o tamanho do disco e
+ năo se lembrar mais do valor antigo ou original, selecione a opçăo Done, e
+ tecle <q> para sair do CFdisk sem gravar as alteraçőes feitas para o
+ disco, pois se continuar a utilizar o CFdisk com o tamanho do disco
+ incorreto, os dados existentes nele e até mesmo partiçőes poderăo ser
+ perdidos(as).
+
+Se aumentar o tamanho do disco, setores adicionais săo acrescentados no
+final do disco, e săo mostrados como espaço livre.
+Se diminuir o tamanho do disco, as partiçőes que estavam localizadas após
+o setor/cilindro que foi excluido(se existir alguma), será apagada e a
+última partiçăo(ou espaço livre ao final do disco rígido), terá seu
+tamanho alterado e terminará neste "novo" último setor do disco.
+
+
+
+2.3.6-) O comando Help <h> ou <?>
+
+O comando Help mostra a tela de ajuda do programa, que descreve as funçőes
+das teclas utilizadas pelo programa e suas funçőes.
+
+
+
+2.3.7-) O comando Maximize <m>
+
+Este comando aumenta a utilizaçăo de espaço do disco na partiçăo atual.
+Isto porque o DOS, OS/2 e outros sistemas operacionais utilizam o primeiro
+setor da primeira trilha da partiçăo do disco e em todas as partiçőes Lógicas
+para iniciar o sistema operacional, utilizando a segunda trilha em diante
+daquela partiçăo para fazer o armazenamento de arquivos. Este espaço perdido
+entre o segundo e o último Setor da primeira trilha da primeira cabeça, pode
+ser recuperado com a utilizando este comando.
+
+Este comando faz com que a partiçăo se torne imcompatível com DOS, OS/2
+e outros Sistemas Operacionais que utilizam este primeiro Setor do disco
+para iniciar o sistema operacional.
+
+Se este comando for utilizado, será colocada uma opçăo chamada NC(năo
+compatível) em Flags(na tela principal do CFdisk).
+
+Esta opçăo faz o uso máximo do disco e a incompatibilidade com o DOS/OS/2,
+etc. O padrăo quando criando uma Partiçăo, é criando Partiçőes compativeis
+com o DOS, OS/2, etc.
+
+OBS: O Fdisk(8) e partiçőes formatadas com o sistema de arquivos FAT32, fazem
+ a utilizaçăo completa deste espaço entre o segundo e o último Setor da
+ primeira trilha do disco, eliminando o desperdício de espaço.
+
+
+
+2.3.8-) O comando New <n>
+
+O comando New<n>, cria uma nova partiçăo usando o espaço livre(FreeSpace)
+existente no disco. Após escolher esta opçăo, o CFdisk perguntará se deseja
+criar uma partiçăo Primária, Lógica ou Cancelar o comando.
+
+Escolhendo criar uma partiçăo Primária ou Lógica, o sistema perguntará o
+tamanho da partiçăo que deseja criar, por padrăo, o CFdisk mostrará o espaço
+livre total disponível no disco para a criaçăo da nova partiçăo(em MegaBytes).
+Tecle <Enter> para criar uma partiçăo do tipo escolhido com este tamanho ou
+digite um tamamho menor. O CFdisk permite que seja digitados valores em:
+
+- MegaBytes(M - o padrăo do programa)
+- KiloBytes(K)
+- Cilindros(C)
+- Setores(S)
+
+Digitando-se o tamanho da partiçăo seguida de uma das letras acima. Se a
+letra năo for digitada, o programa assumirá o tamanho que digitou em MegaBytes.
+
+OBS1: Quando criar uma partiçăo Lógica, automaticamente será criada uma
+ partiçăo extendida, entre hdx1 e hdx4, e a partiçăo Extendida năo é
+ mostrada na tela de particionamento de disco. Se desejar exibir a
+ partiçăo extendida, execute o comando PRINT <p> e escolha a opçăo
+ Sector para verificar qual é a identificaçăo da partiçăo Extendida
+ no disco. Para maiores detalhes, veja o comando PRINT <p>.
+
+OBS2: Săo permitidas, no máximo, 4 partiçőes Primárias e Extendidas(3 Primárias
+ e 1 Extendida ou 4 partiçőes Primárias em cada disco). O CFdisk
+ calculará automaticamente os valores das partiçőes lógicas caso
+ as primeiras 4 partiçőes forem ocupadas.
+
+O próximo passo, é a localizaçăo da partiçăo no espaço livre existente no
+disco. As duas opçőes disponíveis săo:
+
+- Beginning : A partiçăo é colocada a partir do inicio do espaço livre no
+ disco, ocupando o espaço livre de acordo com o seu tamanho
+ (do início para o fim do espaço livre ), este é o padrăo para
+ a criaçăo de novas partiçőes e o mais utilizado. Veja o exemplo,
+ a criaçăo de uma partiçăo de 30MB em um disco com 50MB de
+ espaço năo particionado, sendo que este disco já possui uma
+ partiçăo de 120MB(com espaço total de 170MB)
+
+ ##################################MMMMMMMMMMMMMMMMMMMMMMMMMM
+ | |
+ Partiçăo existente(120MB) Espaço Livre(50MB)
+
+
+ com a nova partiçăo criada:
+
+ ###################################################MMMMMMMMM
+ | | |
+ Partiçăo existente(120MB) Nova partiçăo Espaço
+ (30MB) Livre
+
+- End : A partiçăo é criada subtraindo-se o espaço livre total do disco
+ pelo tamanho da partiçăo que será criada, começando a criar
+ esta partiçăo a partir do ponto que resultou esta subtraçăo.
+ Veja abaixo no exemplo, a partiçăo que será criada terá o
+ tamanho de 30MB e existe no disco um espaço năo particionado
+ de 50MB, com 120MB já ocupados por uma partiçăo existente:
+
+ ##################################MMMMMMMMMMMMMMMMMMMMMMMMMM
+ | |
+ Partiçăo existente(120MB) Espaço Livre(50MB)
+
+
+ com a nova partiçăo criada (Selecionando a opçăo End):
+
+ ##################################MMMMMMMMMM#################
+ | | |
+ Partiçăo existente(120MB) Espaço Nova partiçăo
+ Livre (30MB)
+
+ A partiçăo que será criada utilizara o espaço livre entre o
+ último Setor do disco e o setor resultante da subtraçăo(170MB-30MB).
+ Mesmo assim, a ordem que será criada esta partiçăo partiçăo
+ será criada do Setor inicial(que é o resultado da subtraçăo)
+ para o último Setor do disco. Existirá um espaço livre de 20MB
+ entre a primeira partiçăo (de 120MB) e a nova partiçăo de 30MB.
+
+
+
+2.3.9-) O comando Print <p>
+
+Este comando mostra a tabela de partiçăo no formato selecionado na tela,
+ou permite que seja gravado um arquivo no disco. Todas as partiçőes săo
+classificadas na ordem que foram gravadas no disco.
+
+Os formatos aceitos para visualizaçăo de partiçőes săo:
+
+RAW <r> : Formato de dados do disco, mostra os setores que serăo gravados
+ para o disco, caso seja escolhido o comando WRITE <W>. O formato
+ mostrado é exatamente aquele que será gravado para ao disco.
+ Abaixo um exemplo deste formato:
+ --------------------------------------------------------------------
+ Disk Drive: /dev/hda
+ Sector 0:
+ 0x000: EB 69 4C 49 4C 4F 01 00 14 00 D7 02 00 00 00 00
+ 0x010: FB 1B CF 36 74 D8 80 23 01 75 D8 80 23 01 73 D8
+ 0x020: 80 23 01 01 77 01 77 D8 80 23 01 78 D8 80 23 01
+ 0x030: 64 D8 80 23 01 65 D8 80 23 01 66 D8 80 23 01 67
+ 0x040: D8 80 23 01 68 D8 80 23 01 69 D8 80 23 01 6A D8
+ 0x050: 80 23 01 6B D8 80 23 01 00 00 00 00 00 00 00 00
+ 0x060: 00 00 00 00 00 00 00 00 00 00 00 B8 C0 07 8E D8
+ 0x070: 8C 06 66 00 89 36 64 00 89 1E 68 00 88 16 6A 00
+ 0x080: B8 00 9A 8E C0 B9 00 01 29 F6 29 FF FC F3 A5 EA
+ 0x090: 94 00 00 9A FA 8E D8 8E C0 BC 00 B0 B8 00 90 8E
+ 0x0A0: D0 FB B0 0D E8 57 00 B0 0A E8 52 00 B0 4C E8 4D
+ 0x0B0: 00 BE 30 00 BB 00 10 FC AD 89 C1 AD 89 C2 09 C8
+ 0x0C0: 74 20 46 E8 43 00 72 06 81 C3 00 02 EB EA 50 B0
+ 0x0D0: 20 E8 2A 00 58 88 E0 E8 12 00 31 C0 88 C2 CD 13
+ 0x0E0: EB CF B0 49 E8 17 00 EA 00 00 00 9B 50 C0 E8 04
+ 0x0F0: E8 01 00 58 24 0F 04 30 3C 3A 72 02 04 07 30 FF
+ 0x100: B4 0E CD 10 C3 5A 59 5B C3 F6 C2 40 74 52 80 E2
+ 0x110: BF 53 51 52 B4 08 CD 13 72 EB 88 F3 5A 88 16 6D
+ 0x120: 01 88 F2 30 F6 88 F7 58 51 86 CD D0 C5 D0 C5 80
+ 0x130: E5 03 89 0E 6B 01 59 83 E1 3F F7 F1 FE C2 88 16
+ 0x140: 6E 01 31 D2 43 F7 F3 88 D6 8A 16 6D 01 3B 06 6B
+ 0x150: 01 77 13 86 C4 D0 C8 D0 C8 0A 06 6E 01 89 C1 5B
+ 0x160: B8 01 02 CD 13 C3 5B 31 C0 F9 C3 00 00 00 00 00
+ 0x170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01
+ 0x1C0: 01 00 0B FE 3F 8F 3F 00 00 00 51 4C 23 00 00 00
+ 0x1D0: 41 D7 83 FE BF 6F 17 75 73 00 59 81 25 00 00 00
+ 0x1E0: 01 98 05 FE 7F D6 98 42 25 00 7F 32 4E 00 00 00
+ 0x1F0: 81 70 82 FE BF 72 70 F6 98 00 43 BC 00 00 55 AA
+
+ Sector 2441880:
+ 0x000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x0A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x0B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x0C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x0D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x0E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x0F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
+ 0x1C0: 01 98 0B FE 7F D6 3F 00 00 00 40 32 4E 00 00 00
+ 0x1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
+ -----------------------------------------------------------------
+ A primeira tabela de partiçăo mostrada é a Primária, depois
+ as tabelas de partiçőes ligadas com cada partiçăo lógica. Como
+ no exemplo, os dados săo mostrados em bytes Hexadecimais(na
+ primeira coluna) seguidos de 16 bytes por linha.
+
+Sector <s>: Mostra a tabela de partiçăo classificada por setores. Esta
+ opçăo mostra o espaço năo particionado no disco e a partiçăo
+ Extendida, que é mostrada antes das partiçőes Lógicas.
+ Abaixo um exemplo deste formato:
+ ------------------------------------------------------------------
+ Partition Table for /dev/hda
+
+ First Last
+ # Type Sector Sector Offset Length Filesystem Type (ID) Flags
+ -- ------- -------- --------- ------ --------- ---------------------- ---------
+ 1 Primary 0 2313359 63 2313360 Win95 FAT32 (0B) Boot (80)
+ Logical 2313360 2441879 0 128520 Free Space None (00)
+ 3 Primary 2441880 7566614 0 5124735 Extended (05) None (00)
+ 5 Logical 2441880 7566614 63 5124735 Win95 FAT32 (0B) None (00)
+ 2 Primary 7566615 10024559 0 2457945 Linux (83) None (00)
+ 4 Primary 10024560 10072754 0 48195 Linux Swap (82) None (00)
+ ------------------------------------------------------------------
+
+ onde:
+ # - Identificaçăo da partiçăo no disco /dev/hda
+ Type - Tipo da partiçăo(veja o exemplo)
+ First Sector - Primeiro Setor utilizado para o armazanamento da partiçăo.
+ Last Sector - Último Setor utilizado para o armazenamento da partiçăo.
+ Offset -
+ Lenght - Tamanho total da partiçăo em setores (Last Sector - First
+ Sector).
+ FileSystem Type (ID) - Identificaçăo do Sistema de Arquivos da partiçăo,
+ seguido do seu código hexadecimal no CFDisk. A partiçăo
+ Extendida é identificada como um sistema de arquivos
+ com o código 05 (veja o exemplo).
+ Flags - Opçőes da partiçăo seguido de seu valor em
+ hexadecimal.
+
+Table <t> : Mostra a tabela de partiçăo classificada pelo número da partiçăo.
+ Esta opçăo deixa fora todo espaço livre e năo usado na partiçăo.
+ Abaixo um exemplo deste formato.
+ ----------------------------------------------------------------
+ Partition Table for /dev/hda
+
+ ---Starting--- ----Ending---- Start Number of
+ # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors
+ -- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------
+ 1 0x80 1 1 0 0x0B 254 63 143 63 2313297
+ 2 0x00 0 1 471 0x83 254 63 623 7566615 2457945
+ 3 0x00 0 1 152 0x05 254 63 470 2441880 5124735
+ 4 0x00 0 1 624 0x82 254 63 626 10024560 48195
+ 5 0x00 1 1 152 0x0B 254 63 470 63 5124672
+ ---------------------------------------------------------------
+
+ onde:
+ # - Número da partiçăo de disco
+ Flags - As opçőes utilizadas com a partiçăo (em
+ valor Hexadecimal).
+ O valor 0x80 equivale a BOOT.
+ O valor 0x00 equivale a nenhuma opçăo
+ utilizada naquela partiçăo.
+ Starting
+ Head - Cabeçote Inicial
+ Sector - Setor Inicial
+ Cyl - Cilindro Inicial
+ ID - Identificaçăo do Sistema de arquivos(em
+ hexadecimal, conforme a tabela do CFdisk).
+ Ending
+ Head - Cabeçote Final
+ Sector - Setor Final
+ Cyl - Cilindro Final
+ Start Sector - Setor inicial da partiçăo
+ Number of Sectors - Número de setores ocupados pela partiçăo.
+
+Se a partiçăo năo inicia ou năo termina em um cilindro limite do disco
+ou se o seu tamanho năo é divisível pelo tamanho do cilindro, um * é será
+mostrado após o setor năo alinhado. Este problema normalmente ocorre quando
+a partiçăo é criada por um Sistema operacional em que o limite da partiçăo
+năo é alinhada com o cilindro ou que utiliza a contagem do tamanho do disco
+de forma diferente.
+
+ A tabela de partiçăo somente tem 10 bits disponível para identificar o
+cilindro inicial e final. Assim, quando o setor inicial absoluto é um
+cilindro maior que 1023(final do disco), o valor máximo para a cabeça
+inicial, setor e cilindro săo mostrados. Este metodo é usado pelo OS/2, e
+e corrige os problemas associados com OS/2 caso o Fdisk regrava a tabela de
+partiçăo quanto ela năo esta neste formato.
+
+Desde entăo Linux e OS/2 utilizam esta contagem de setores absolutos, os
+valores na cabeça inicial e final, Setor e Cilindro năo săo usadas.
+
+
+
+2.3.10-) O comando quit <q>
+
+Esta opçăo faz com que o CFdisk abandonar todas as alteraçőes e
+retornar para o Aviso de comando. Quando esta opçăo é escolhida, o programa
+retorna deixando o disco como estava antes de se iniciar o particionamento.
+
+Se escolher esta opçăo o CFdisk abandonará o particionamento de disco
+e voltará para a linha de comandos imediatamente. Se alterar/criar/excluir
+alguma partiçăo de disco e escolher esta opçăo, o programa emitirá um Beep
+indicando que alguma alteraçăo feita no disco foi abandonada.
+
+OBS: Esta opçăo é útil caso tenha se cometido algum engano durante o
+ particionamento do disco, como apagar por uma partiçăo que contém
+ arquivos, alterar o tamanho do disco(geometria), etc. Lembre-se que
+ tudo o que fez será abandonado, durante o particionamento, se escolher
+ esta opçăo.
+
+
+
+2.3.11-) O comando type <t>
+
+Comando usado para alterar o tipo do sistema de arquivos utilizado
+pela partiçăo. As partiçőes, quando criadas, recebem o sistema de arquivos
+Linux Native(ou simplesmente Linux - tipo 83). O CFdisk pode criar, manipular,
+excluir, uma grande variedade de Sistemas de arquivos para os mais diversos
+tipos de sistemas operacionais existentes, veja o final deste manual para
+ver as partiçőes compatíveis com este programa.
+
+Para alterar o tipo do sistema de arquivos (File System) utilizado pela
+partiçăo, tecle <t>, e digite o valor de acordo com a lista de partiçőes
+disponíveis no programa.
+
+Por exemplo, para mudar a partiçăo do tipo Linux para Linux Swap, selecione
+esta partiçăo, e tecle <t>, e digite o número 82(que corresponde a Linux
+Native) e tecle <Enter>, e a partiçăo terá seu sistema de arquivos alterado.
+
+
+
+2.3.12-) O comando units <u>
+
+A funçăo deste comando é alterar as unidades de medida do tamanho da
+partiçăo que é mostrado na tela, por padrăo, ele é mostrado em MegaBytes.
+As unidades de medida do tamanho da partiçăo săo em MegaBytes, Cilindros e
+Setores ocupados pela partiçăo de disco.
+Abaixo um exemplo da mudança da unidade de medida para Cilindros.
+----------------------------------------------------------------------------
+ CFdisk 0.8l
+
+ Disk Drive: /dev/hda
+ Heads:255 Sectores per track:63 Cylinders:627
+-----------------------------------------------------------------------------
+Name Flags Part Type FSType [LABEL] Cilinders
+hda1 Boot Primary Win 95 FAT 32 249
+hda5 Logical DOS FAT 16 (BIG) GLEYDSON 22
+ Pri/Log Free Space 371
+
+
+
+
+
+
+
+
+
+
+[Bootable] [Delete] [Help] [Maximize] [Print]
+[Quit] [Type] [Units] [Write]
+----------------------------------------------------------------------------
+Será mostrada a quantidade de cilindros que a partiçăo ocupa no disco ao
+invés do espaço em MB.
+
+
+
+2.3.13-) O comando Write <W>
+
+Este comando grava todas as tabelas de partiçőes criadas/modificadas e
+excluidas para o disco. Só é aceita a tecla <W> em maiúscula para gravaçăo
+da partiçăo de disco, por motivos de segurança para que năo seja feita a
+gravaçăo acidental das partiçőes enquando estiver utilizando o programa.
+Para quem utiliza as setas do teclado, o método é o mesmo que as outras
+opçőes.
+
+Após selecionar esta opçăo, o CFdisk perguntará se confirma a gravaçăo
+das partiçőes para o disco.
+
+Para gravar a partiçăo, digite "yes" e tecle <Enter>.
+Para cancelar o comando, pressione <Esc> ou digite "no" e tecle <Enter>.
+
+Após confirmar com "yes", o CFdisk gravará a tabela de partiçăo no disco
+e fara o Kernel re-ler a tabela de partiçăo do disco, para se evitar
+reiniciar o sistema para utilizar a nova tabela de partiçăo.
+
+A tentativa de re-leitura da tabela de partiçăo pode falhar. Para
+solucionar este problema, é preciso reiniciar o computador, quando o
+computador é reiniciado, o sistema operacional faz uma nova leitura das
+tabelas de partiçőes existentes no disco, fazendo com que sejam reconhecidas
+corretamente.
+
+
+
+3-) Tipos de partiçőes compatíveis com o CFdisk
+
+Abaixo uma listagem das partiçőes compatíveis com o programa CFdisk e
+seus respectivos códigos Hexadecimais, para consulta técnica ou utilizaçăo
+durante o particionamento de disco.
+
+Código Nome
+01 - DOS FAT12
+02 - Xenix root
+03 - Xenix usr
+04 - DOS FAT16 (<32MB)
+05 - Extendida
+06 - DOS FAT16 (>=32MB)
+07 - OS/2 HPFS ou NTFS
+08 - AIX
+09 - AIX inicializável
+0A - OS/2 Boot Manager
+0B - Windows 95 FAT32
+0C - Windows 95 FAT32(LBA)
+0E - Windows 95 FAT16(LBA)
+0F - Windows 95 Extendida
+11 - DOS FAT12 oculta
+12 - DOS FAT16 oculta
+16 - DOS FAT16 oculta
+17 - HPFS OS/2 oculta
+40 - Venix 80286
+51 - Novell
+52 - Microport
+63 - GNU Hurd
+64 - Novell Netware 286
+65 - Novell Netware 386
+75 - PC/IX
+80 - Minix Antigo
+81 - Linux / Minix
+82 - Linux Swap
+83 - Linux Nativa
+85 - Linux Extendida
+93 - Amoeba
+94 - Amoeba BBT
+A5 - BSD/386
+A6 - Open BSD
+A7 - NextStep
+B7 - BSDI Sistema de Arquivos
+B8 - BSDI Swap
+C7 - Syrinx
+DB - CP/M
+E1 - DOS access
+E3 - DOS R/O
+F2 - DOS secundária
+FF - BBT
+
+
+
+
+4- ) Direitos Autorais
+
+Este documento foi desenvolvido com base em minha experięncia e conhecimento em
+discos e partiçőes, e mediante pesquisa em alguns documentos como os How-TO do
+Linux tendo como objetivo a contribuiçăo para a comunidade Linux em geral.
+
+Gleydson M. da Silva (gleydson_s@yahoo.com ou gleydson@linuxbr.com.br)
+
+Qualquer dúvida, sugestăo ou reclamaçăo podem ser mandadas para um dos
+E-Mail's Acima. Conto com sua contribuiçăo para a melhoria deste Manual.
+
+Autorizo a reproduçăo Total ou parcial deste texto para que seja utilizado para
+fins educativos, autoaprendizado, colocaçăo em Home pages e qualquer outra
+forma de distribuiçăo năo comercial do documento desde que sejam mantidos os
+meus créditos pela pesquisa e desenvolvimento deste documento de acordo com os
+termos da GNU (veja abaixo).
+
+
+
+
+5- ) Licenças e Garantias sobre este documento
+
+
+CFdisk-Portuguese Copyright (C) 1999 Gleydson M. da Silva
+Este é um documento de livre distribuiçăo, que pode ser copiado e
+distribuído sob os termos da Licença Pública Geral  GNU, conforme publicada
+pela Free Software Foundation, versăo 2 da licença ou (a critério do autor)
+qualquer versăo posterior.
+
+Este documento é distribuído com a itençăo de ser útil ao seu utilizador,
+no entanto NĂO TEM NENHUMA GARANTIA,  EXPLÍCITAS OU IMPLÍCITAS , COMERCIAIS
+OU DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. Consulte a Licença Pública
+Geral  GNU para maiores detalhes.
+
+gleydson_s@yahoo.com
+gleydson@linuxbr.com.br
+
+
+
+6- )Nota sobre Marcas Registradas
+
+Os programas mencionados neste manual săo de propriedade dos seus respectivos
+donos:
+
+MS-DOS, Windows 3.1x, Windows 9x, Windows NT săo de propriedade da Microsoft.
+OS/2 e OS/2 Warp săo de propriedade da IBM
+
+
+7- ) Agradecimentos
+
+Agradeço a todas as pessoas que me mandam correçőes, comentários, críticas,
+elogios, dúvidas sobre este documento, pois através destas mensagens, estăo
+contribuindo para a melhoria deste projeto e me icentivando em sua continuaçăo.
+
+
+Agradecimentos especiais a:
+
+Eduardo Marcel Macan <macan@thecore.com.br> - Pelo apoio e interesse na
+ divulgaçăo deste projeto e outros documentos relacionados com a
+ traduçăo e divulgaçăo de documentos sobre o Linux no Brasil.
+
+Jorge Godoy <jorge@bestway.com.br> - Pela revisăo deste documento e primeiras
+ orientaçőes para a conversăo deste para SGML.
+
+Adam di Carlo <adam@onshore.com> - Que me deu apoio na colocaçăo deste documento
+ na documentaçăo da distribuiçăo Debian.
+
+E a voce pelo interesse em conhecer mais sobre o Linux.
+
+
+<EOF> \ No newline at end of file
diff --git a/fdisk/doc/Fdisk-Portuguese.html b/fdisk/doc/Fdisk-Portuguese.html
new file mode 100644
index 000000000..fdf29b809
--- /dev/null
+++ b/fdisk/doc/Fdisk-Portuguese.html
@@ -0,0 +1,1118 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Gleydson Silva">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (Win95; I) [Netscape]">
+ <title>Fdisk-Portugues-HOWTO</title>
+</head>
+<body>
+
+<center><b><font size=+1>Fdisk-Portugues-HOWTO Copyright (C) 1999 Gleydson
+M. da Silva</font></b>
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<p>
+<hr WIDTH="100%">
+<br><b>Gleydson M. da Silva</b><i> - gleydson@linuxbr.com.br</i>
+<br><b>Vers&atilde;o 1.3</b></center>
+
+<hr WIDTH="100%">
+<br>&nbsp;
+<br>&nbsp;
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<center>
+<p><a NAME="Indice"></a><b><u><font size=+2>&Iacute;ndice</font></u></b></center>
+
+<p><b><font size=+1>1</font></b> -<a href="#1"> Introdu&ccedil;&atilde;o
+ao Fdisk</a>
+<br>&nbsp; <b>1.1</b> - <a href="#1.1">O que &eacute; uma Parti&ccedil;&atilde;o
+de Disco</a>
+<br>&nbsp; <b>1.2</b> - <a href="#1.2">A Tabela de Parti&ccedil;&atilde;o</a>
+<br>&nbsp; <b>1.3</b> - <a href="#1.3">Introdu&ccedil;&atilde;o ao Particionamento
+de discos</a>
+<br>&nbsp; <b>1.4</b> - <a href="#1.4">Identifica&ccedil;&otilde;es utilizadas
+neste documento</a>
+<br>&nbsp; <b>1.5</b> - <a href="#1.5">Identifica&ccedil;&atilde;o de discos
+e parti&ccedil;&otilde;es no Linux</a>
+<br>&nbsp; <b>1.6</b> - <a href="#1.6">Tipos de parti&ccedil;&otilde;es
+de disco</a>
+<br>&nbsp; <b>1.7</b>-) <a href="#1.7">Observa&ccedil;&otilde;es sobre
+o formato DOS 6.XX(FAT 16)</a>
+<p><b><font size=+1>2</font></b> - <a href="#2">Iniciando o programa Fdisk</a>
+<br>&nbsp; <b>2.1</b> - <a href="#2.1">Op&ccedil;&otilde;es de Linha de
+comando</a>
+<br>&nbsp; <b>2.2</b> - <a href="#2.2">Comandos do Fdisk</a>
+<p><b><font size=+1>3</font></b> - <a href="#3">Manipulando parti&ccedil;&otilde;es
+no disco r&iacute;gido</a>
+<br>&nbsp; <b>3.1</b> - <a href="#3.1">Listando parti&ccedil;&otilde;es
+existentes no disco</a>
+<br>&nbsp; <b>3.2</b> - <a href="#3.2">Criando parti&ccedil;&otilde;es
+de disco</a>
+<br>&nbsp; <b>3.3</b> - <a href="#3.3">Mudando o tipo da parti&ccedil;&atilde;o</a>
+<br>&nbsp; <b>3.4</b> - <a href="#3.4">Excluindo uma parti&ccedil;&atilde;o
+de disco</a>
+<br>&nbsp; <b>3.5</b> - <a href="#3.5">Gravando parti&ccedil;&otilde;es
+alteradas para o disco</a>
+<br>&nbsp; <b>3.6</b> - <a href="#3.6">Abandonando o programa sem gravar
+altera&ccedil;&otilde;es para o disco</a>
+<br>&nbsp; <b>3.7</b> - <a href="#3.7">Alternando entre parti&ccedil;&atilde;o
+inicializ&aacute;vel/n&atilde;o inicializ&aacute;vel</a>
+<br>&nbsp; <b>3.8</b> -<a href="#3.8"> Escolhendo a unidade&nbsp; para
+mostrar o tamanho ocupado pela parti&ccedil;&atilde;o</a>
+<p><b><font size=+1>4</font></b> - <a href="#4">Tipos de parti&ccedil;&otilde;es
+reconhecidas pelo Fdisk</a>
+<p><b><font size=+1>5</font></b> - <a href="#5">Direitos Autorais</a>
+<p><b><font size=+1>6</font></b> - <a href="#6">Licen&ccedil;as e Garantias
+sobre este documento</a>
+<p><b><font size=+1>7</font></b> - <a href="#7">Marcas Registradas</a>
+<p><font size=+1>8</font> - <a href="#8">Agradecimentos</a>
+<br>&nbsp;
+<br>&nbsp;
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<center>
+<p><a NAME="1"></a><u><font size=+1>1-) Introdu&ccedil;&atilde;o ao Fdisk</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Fdisk &eacute; um programa utilizado para o particionamento
+de discos r&iacute;gidos <i>IDE</i> e <i>SCSI</i>.&nbsp;&nbsp; A vers&atilde;o
+do programa Fdisk descrita neste manual &eacute; a <i>2.8</i>
+<p><b>ATEN&Ccedil;&Atilde;O</b>: ESTE MANUAL TEM COMO OBJETIVO A EXPLICA&Ccedil;&Atilde;O
+DE
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+FUNCIONAMENTO E&nbsp; UTILIZA&Ccedil;&Atilde;O DO FDISK DO LINUX (N&Atilde;O
+O
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+FDISK DO DOS), MESMO QUE&nbsp; VOCE SEJA UM USU&Aacute;RIO DO DOS,
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+RECOMENDO QUE LEIA ESTE MANUAL COMO UMA REFER&Ecirc;NCIA
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+T&Eacute;CNICA E PARA SEU APRENDIZADO.
+<p><b>&nbsp;&nbsp;&nbsp; Este documento &eacute; distribu&iacute;do com
+a iten&ccedil;&atilde;o de ser &uacute;til ao seu utilizador, no entanto
+N&Atilde;O TEM NENHUMA GARANTIA,&nbsp; EXPL&Iacute;CITAS OU IMPL&Iacute;CITAS
+, COMERCIAIS OU DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. Consulte a
+Licen&ccedil;a P&uacute;blica Geral&nbsp; (GNU) para maiores detalhes.</b>
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="1.1"></a><u><font size=+1>1.1-) Parti&ccedil;&atilde;o de Disco</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Uma <i>parti&ccedil;&atilde;o de disco</i> &eacute;
+o local onde o sistema operacional armazena seu sistema de arquivos(<i>arquivos,
+diret&oacute;rios, FAT, boot sector, etc</i>).
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="1.2"></a><u><font size=+1>1.2-) Tabela de parti&ccedil;&atilde;o</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; A <i>Tabela de parti&ccedil;&atilde;o</i> &eacute;
+o local do disco r&iacute;gido onde se localizam os dados sobre todas as
+parti&ccedil;&otilde;es existentes no disco como o sistema de arquivos
+utilizado, se ela &eacute; inicializ&aacute;vel, a cabe&ccedil;a inicial/final,
+setor inicial/final, cilindro inicial/final, n&uacute;mero de setores ocupados
+por ela no disco.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="1.3"></a><u><font size=+1>1.3-) Introdu&ccedil;&atilde;o ao
+particionamento de discos</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Particionar o disco r&iacute;gido &eacute; dividir
+ele em partes para armazenamento de arquivos e programas. As parti&ccedil;&otilde;es
+criadas no disco podem ter o tamanho que desejar (desde que esteja dentro
+da capacidade m&aacute;xima do disco r&iacute;gido).
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Uma parti&ccedil;&atilde;o n&atilde;o interfere
+em outras parti&ccedil;&otilde;es do mesmo disco(&eacute; como se tivessemos
+v&aacute;rios discos r&iacute;gidos dentro de um).
+<br>&nbsp;&nbsp;&nbsp; Em um disco r&iacute;gido, pode ser criada uma parti&ccedil;&atilde;o
+&uacute;nica, que neste caso todo o disco r&iacute;gido&nbsp; &eacute;
+usado para armazenar os arquivos(que &eacute; o caso mais comum caso voce
+tenha o DOS), ou v&aacute;rias parti&ccedil;&otilde;es, que podem ser usadas
+pelo mesmo SO(Sistema Operacional) ou outros sistemas operacionais diferentes(um
+exemplo de v&aacute;rias parti&ccedil;&otilde;es, &eacute; se voce for
+usar o DOS e o Linux no mesmo disco, os dois
+<br>sistemas v&atilde;o estar no mesmo disco mas um n&atilde;o interfere
+no outro).
+<br>&nbsp;&nbsp;&nbsp; Este manual tem a iten&ccedil;&atilde;o de explicar
+o funcionamento do programa fdisk (fdisk do Linux n&atilde;o do DOS!).
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="1.4"></a><u><font size=+1>1.4-) Algumas identifica&ccedil;&otilde;es
+utilizadas neste manual para facilitar a&nbsp; compreens&atilde;o do texto</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Esta parte descreve algumas caracter&iacute;sticas
+de organiza&ccedil;&atilde;o deste manual e algumas identifica&ccedil;&otilde;es
+que adotei para facilitar o seu entendimento, e as explica&ccedil;&otilde;es
+que ser&atilde;o dadas.
+<p>&nbsp;&nbsp;&nbsp; Explica&ccedil;&atilde;o de nomes e comandos, ser&aacute;
+seguida da palavra "<b>onde</b>" e abaixo dela as explica&ccedil;&otilde;es
+sobre os comandos, exemplo:
+<p><b>onde</b>:
+<br><i>nome a ser explicado1</i>&nbsp; : Descri&ccedil;&atilde;o
+<br><i>nome a ser explicado2</i>&nbsp; : Descri&ccedil;&atilde;o
+<br><i>nome a ser explicado3</i>&nbsp; : Descri&ccedil;&atilde;o
+<p>ou
+<p><b>onde</b>:
+<br><i>nome a ser explicado1</i>&nbsp; - Descri&ccedil;&atilde;o
+<br><i>nome a ser explicado2</i>&nbsp; - Descri&ccedil;&atilde;o
+<br><i>nome a ser explicado3</i>&nbsp; - Descri&ccedil;&atilde;o
+<br>&nbsp;
+<p>&nbsp;&nbsp;&nbsp; Quando for feita alguma refer&ecirc;ncia com tecla
+do teclado, por exemplo, pressione p para listar as parti&ccedil;&otilde;es,
+a letra sera colocada entre &lt;> para facilitar a interpreta&ccedil;&atilde;o:
+<br>pressione &lt;p> para listar as parti&ccedil;&otilde;es
+<br>ap&oacute;s isto pressione &lt;Enter> para confirmar
+<br>pressione &lt;l> para listar os tipos de parti&ccedil;&otilde;es dispon&iacute;veis
+<br>&nbsp;
+<p>&nbsp;&nbsp;&nbsp; As linhas pontilhadas que aparecem na tela, veja
+abaixo,
+<br>----------------------------------------------------------------------------
+<br>----------------------------------------------------------------------------
+<br>servem para identificar que o que esta entre as linhas &eacute; um
+exemplo de como
+<br>ser&aacute; a resposta do comando para a tela de seu computador.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="1.5"></a><u><font size=+1>1.5-) Identifica&ccedil;&atilde;o
+de discos e parti&ccedil;&otilde;es no Linux</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Antes de descrever como se utiliza o programa fdisk,
+&eacute; importante fazer algumas explica&ccedil;&otilde;es sobre a identifica&ccedil;&atilde;o
+das parti&ccedil;&otilde;es e unidades de disco no sistema Linux( e outros
+*nix). Se voce for um usu&aacute;rio que j&aacute; conhece a interpreta&ccedil;&atilde;o
+de discos e parti&ccedil;&otilde;es neste sistema, voce n&atilde;o precisar&aacute;
+ler esta parte.
+<br>&nbsp;&nbsp;&nbsp; No sistema operacional Linux, os dispositivos existentes
+no computador (como impressoras, unidades de disquetes, discos r&iacute;gidos,
+monitor, placa de som, etc...) s&atilde;o identificados por um nome referente
+a este dispositivo e colocado no diret&oacute;rio /dev (que &eacute; utilizado
+para identificar dispositivos ou perif&eacute;ricos existentes no computador).
+<br>&nbsp;&nbsp; A identifica&ccedil;&atilde;o dos discos r&iacute;gidos
+segue a seguinte forma:
+<p>&nbsp; /dev/hda1
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; |&nbsp;
+|
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; |&nbsp;
+|_N&uacute;mero que identifica a parti&ccedil;&atilde;o do disco r&iacute;gido(<i>1=Primeira,
+2=segunda</i>)
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; |
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; |_Letra
+que identifica o disco r&iacute;gido(<i>a=primeiro disco, b=segundo disco,
+etc..</i>)
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
+<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |_Sigla HD - Significa
+que &eacute; um disco r&iacute;gido IDE(<i>Se tiver um SD significa SCSI</i>)
+<br>&nbsp; |
+<br>&nbsp; |_ Identifica&ccedil;&atilde;o do diret&oacute;rio onde os dispositivos
+do sistema s&atilde;o armazenados
+<p><b>OBS</b>: As unidades de disco r&iacute;gido <i>SCSI</i>, s&atilde;o
+identificadas com as letras <i>sd</i>&nbsp; seguida pela letra da
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unidade e n&uacute;mero
+da parti&ccedil;&atilde;o e os discos <i>IDE</i> s&atilde;o identificados
+por <i>hd</i> seguida pela letra da
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unidade de disco e
+o n&uacute;mero da parti&ccedil;&atilde;o do disco(como visto acima).
+<p>Abaixo, algumas identifica&ccedil;&otilde;es de disco do sistema Linux:
+<p><i>/dev/hda1</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE prim&aacute;rio principal - Primeira parti&ccedil;&atilde;o
+<br><i>/dev/hda2&nbsp;</i>&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE prim&aacute;rio principal - Segunda parti&ccedil;&atilde;o
+<br><i>/dev/hda3</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE prim&aacute;rio principal - Terceira parti&ccedil;&atilde;o
+<br><i>/dev/hdb1</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE prim&aacute;rio escravo - Primeira parti&ccedil;&atilde;o
+<br><i>/dev/hdb2</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE prim&aacute;rio escravo - Segunda parti&ccedil;&atilde;o
+<br><i>/dev/hdb3</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE prim&aacute;rio escravo - Terceira parti&ccedil;&atilde;o
+<br><i>/dev/hdc1</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE secund&aacute;rio principal - Primeira parti&ccedil;&atilde;o
+<br><i>/dev/hdc2</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE secund&aacute;rio principal - Segunda parti&ccedil;&atilde;o
+<br><i>/dev/hdc3</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE secund&aacute;rio principal - Terceira parti&ccedil;&atilde;o
+<br><i>/dev/hdd1</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE secund&aacute;rio escravo - Primeira parti&ccedil;&atilde;o
+<br><i>/dev/hdd2</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE secund&aacute;rio escravo - Segunda parti&ccedil;&atilde;o
+<br><i>/dev/hdd3</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Disco r&iacute;gido
+IDE secund&aacute;rio escravo - Terceira parti&ccedil;&atilde;o
+<br><i>/dev/sda1</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Primeiro disco r&iacute;gido
+SCSI - Primeira parti&ccedil;&atilde;o
+<br><i>/dev/sda2</i>&nbsp;&nbsp; -&nbsp;&nbsp; Primeiro disco r&iacute;gido
+SCSI - Segunda parti&ccedil;&atilde;o
+<br><i>/dev/sda3</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Primeiro disco r&iacute;gido
+SCSI - Terceira parti&ccedil;&atilde;o
+<br><i>/dev/sdb1</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Segundo disco r&iacute;gido
+SCSI - Primeira parti&ccedil;&atilde;o
+<br><i>/dev/sdb2</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Segundo disco r&iacute;gido
+SCSI - Segunda parti&ccedil;&atilde;o
+<br><i>/dev/sdb3</i>&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp; Segundo disco r&iacute;gido
+SCSI - Terceira parti&ccedil;&atilde;o
+<p>&nbsp;&nbsp;&nbsp; No exemplo acima foram usadas 3 parti&ccedil;&otilde;es
+por disco, mas podem existir mais parti&ccedil;&otilde;es no mesmo disco,
+um exemplo &eacute; se o disco r&iacute;gido possuir <i>parti&ccedil;&otilde;es
+L&oacute;gicas</i>, que s&atilde;o identificadas no sistemas a partir de
+/dev/hdx5 em diante.
+<p>&nbsp;&nbsp;&nbsp; Abaixo um exemplo de como o Linux identifica as parti&ccedil;&otilde;es
+em cada disco existente em seu computador:
+<p>Vamos supor que eu tenha 2 discos r&iacute;gidos:
+<br>o <i>1&ordm;disco de 2GB</i> e o <i>2&ordm;disco&nbsp; de 1GB </i>(Giga
+Byte ou 1.000 Megas)
+<p>&nbsp;&nbsp;&nbsp; No primeiro disco(<i>de 2GB</i>), a primeira parti&ccedil;&atilde;o
+&eacute; de <i>800MB</i> do tipo FAT16(<i>DOS</i>), a segunda parti&ccedil;&atilde;o
+&eacute; de <i>1.2GB</i> do tipo EXT2(<i>Linux</i>)(<i>1.2GB+800MB=2GB</i>
+que &eacute; a capacidade total do disco). Ent&atilde;o as parti&ccedil;&otilde;es
+seriam identificadas da seguinte forma no Linux:
+<p><i>/dev/hda</i> - Disco r&iacute;gido Prim&aacute;rio Principal
+<br><i>/dev/hda1</i> - Primeira parti&ccedil;&atilde;o do primeiro disco
+r&iacute;gido (de 800MB do tipo DOS)
+<br><i>/dev/hda2</i> - Segunda parti&ccedil;&atilde;o do primeiro disco
+r&iacute;gido( de 1.2GB do tipo Linux)
+<p>&nbsp;&nbsp;&nbsp; Neste caso estariam dispon&iacute;veis <i>800MB</i>
+para serem usados com o DOS e <i>1.2GB</i> para o Linux.
+<br>&nbsp;&nbsp;&nbsp; Por exemplo, se voce particionar um disco r&iacute;gido
+em duas partes e usar as duas parti&ccedil;&otilde;es no DOS, ele reconhecer&aacute;
+as parti&ccedil;&otilde;es como sendo C: e D:.
+<p><b>Lembre-se</b>: Quando um disco &eacute; particionado, uma parti&ccedil;&atilde;o
+n&atilde;o interfere nas outras, repare que
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+quando voce particiona(divide) um disco, &eacute; como se tivesse dois
+discos r&iacute;gidos(o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&uacute;nico cuidado que voce deve tomar &eacute; com as c&oacute;pias
+de seguran&ccedil;a, porque se der um
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+problema de parte eletr&ocirc;nica no disco r&iacute;gido, por exemplo,&nbsp;
+a sua placa controladora
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+queimar ou o cabe&ccedil;ote dele ir pro espa&ccedil;o, ser&atilde;o perdidas
+as suas 2 parti&ccedil;&otilde;es que
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+est&atilde;o armazenadas nele.
+<br>&nbsp;
+<p>Voltando ao exemplo das classifica&ccedil;&otilde;es das parti&ccedil;&otilde;es
+do disco, vamos para o segundo disco:
+<p>&nbsp;&nbsp;&nbsp; No segundo disco(<i>1GB</i>), eu tenho uma parti&ccedil;&atilde;o
+de <i>950MB</i> do tipo FAT16(<i>DOS</i>), que costumo usar para armazenar
+arquivos tempor&aacute;rios e c&oacute;pias de seguran&ccedil;a de meu
+computador, etc..., e outra de 50MB <i>SWAP</i>(Parti&ccedil;&atilde;o
+de mem&oacute;ria virtual como descrevi acima)(<i>950MB+50MB=1GB</i>).
+Ent&atilde;o as parti&ccedil;&otilde;es deste disco seriam identificadas
+da seguinte forma no Linux:
+<p><i>/dev/hdb</i>&nbsp;&nbsp; - Disco r&iacute;gido principal escravo
+<br><i>/dev/hdb1</i> - Primeira parti&ccedil;&atilde;o do disco acima (
+de 950MB do tipo DOS)
+<br><i>/dev/hdb2</i> - Segunda parti&ccedil;&atilde;o do disco acima (
+de 50MB do tipo SWAP)
+<p>&nbsp;&nbsp;&nbsp; No disco acima, <i>950MB</i> est&atilde;o dispon&iacute;veis
+para serem usados pelo DOS e <i>50 MB</i> pela mem&oacute;ria virtual (<i>SWAP</i>)
+do Linux.
+<p>&nbsp;&nbsp;&nbsp; Note que se voce utiliza o MS-DOS, n&atilde;o ser&aacute;
+poss&iacute;vel conseguir&aacute; ver as parti&ccedil;&otilde;es do Linux
+e SWAP, porque s&atilde;o imcompat&iacute;veis com o formato aceito pelo
+DOS (ele identificaria a primeira parti&ccedil;&atilde;o do primeiro disco(800MB)
+como a unidade C: e a primeira parti&ccedil;&atilde;o do segundo disco(950MB)
+como unidade D), mas o contr&aacute;rio n&atilde;o acontece; O Linux tem
+total compatibilidade com a parti&ccedil;&atilde;o DOS FAT12, FAT16, FAT32,
+OS/2 HPFS, e muitas outras.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="1.6"></a><u><font size=+1>1.6-) Tipos de parti&ccedil;&otilde;es
+de discos</font></u></center>
+
+<p>&nbsp;&nbsp; As parti&ccedil;&otilde;es de disco s&atilde;o divididas
+em tres tipos: <i>Prim&aacute;ria, Extendida </i>e<i> L&oacute;gica</i>.
+<p>&nbsp;&nbsp; Pode se ter no m&aacute;ximo quatro parti&ccedil;&otilde;es
+prim&aacute;rias e extendidas no mesmo disco. A <i>parti&ccedil;&atilde;o
+Prim&aacute;ria</i> permite o armazenamento de arquivos e diret&oacute;rios.
+<br>Todos os computadores que possuem somente a unidade C(supondo que voce
+use o DOS), usam este tipo de parti&ccedil;&atilde;o para armazenamento
+de arquivos e inicializa&ccedil;&atilde;o do sistema operacional.
+<br>&nbsp;&nbsp;&nbsp; Se for preciso criar mais que 4 parti&ccedil;&otilde;es
+no mesmo disco, ser&aacute; necess&aacute;rio
+<br>criar uma <i>parti&ccedil;&atilde;o Extendida</i>. A <i>parti&ccedil;&atilde;o
+Extendida</i>&nbsp; n&atilde;o pode ser utilizada para armazenar arquivos.
+Ela &eacute; usada para a cria&ccedil;&atilde;o de outras parti&ccedil;&otilde;es,
+dentro dela, que s&atilde;o chamadas de <i>parti&ccedil;&otilde;es L&oacute;gicas</i>.
+<br>&nbsp;&nbsp;&nbsp; Uma <i>parti&ccedil;&atilde;o extendida</i> podem
+conter v&aacute;rias <i>parti&ccedil;&otilde;es L&oacute;gicas</i>. As
+parti&ccedil;&otilde;es L&oacute;gicas podem armazenar arquivos e diret&oacute;rios(como
+as parti&ccedil;&otilde;es prim&aacute;rias).
+<br>&nbsp;&nbsp;&nbsp; Um mesmo disco r&iacute;gido pode armazenar mais
+de 64 parti&ccedil;&otilde;es independentes uma das outras.
+<p><b>OBS</b>: Os arquivos e diret&oacute;rios podem ser armazenados somente
+em parti&ccedil;&otilde;es de disco <i>Prim&aacute;rias</i> ou <i>L&oacute;gicas</i>,
+a parti&ccedil;&atilde;o <i>Extendida</i> n&atilde;o &eacute; usada para
+armazanamento de arquivos e diret&oacute;rios.
+<p>&nbsp;&nbsp;&nbsp;&nbsp; Se possuir duas parti&ccedil;&otilde;es em
+seu computador (C: e D: no DOS), e n&atilde;o estiver usando a parti&ccedil;&atilde;o
+D:, a instala&ccedil;&atilde;o pode ser feita nesta parti&ccedil;&atilde;o
+desde que ela tenha o espa&ccedil;o necess&aacute;rio para o sistema operacional
+Linux, os programas que desejar instalar, mais a parti&ccedil;&atilde;o
+SWAP.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="1.7"></a><u><font size=+1>1.7-) Observa&ccedil;&otilde;es sobre
+o formato DOS 6.XX(FAT 16)</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp; No formato DOS 6.XX(<i>FAT16</i>), o primeiro
+setor da &aacute;rea de dados da parti&ccedil;&atilde;o &eacute; utilizado
+frequentemente pelo DOS para armazenamento de dados sobre a parti&ccedil;&atilde;o
+de disco, e estes dados s&atilde;o usados pelo sistema para se ter maior
+confiabilidade do que os dados armazenados na tabela de parti&ccedil;&atilde;o.
+O sistema de arquivos DOS, faz o FDISK(do <i>DOS</i>) limpar os primeiros
+512 bytes da &aacute;rea de dados da parti&ccedil;&atilde;o sempre que
+uma mudan&ccedil;a de tamanho acontecer.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; O formatador do DOS(<i>format</i>) verifica
+este primeiro setor toda vez que a up&ccedil;&atilde;o <i>/U</i> (que &eacute;
+utilizada para n&atilde;o salvar dados para se fazer a desformata&ccedil;&atilde;o
+do disco) &eacute; utilizada.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Isto &eacute; considerado uma FALHA no Format(do
+<i>DOS</i>)
+e no Fdisk(do <i>DOS</i>).
+<br>A op&ccedil;&atilde;o abaixo deve ser utilizada caso voce crie uma
+parti&ccedil;&atilde;o do <i>DOS FAT16</i> com o Fdisk, que faz com que
+os primeiros 512 bytes daquela parti&ccedil;&atilde;o sejam "limpos", para
+manter a compatibilidade com o DOS. Utilize esta op&ccedil;&atilde;o dentro
+do Linux, ap&oacute;s criar a parti&ccedil;&atilde;o com o Fdisk e reiniciar
+o seu
+<br>computador. Foi notado que esta op&ccedil;&atilde;o s&oacute; funciona
+corretamente somente quando o Sistema Linux estiver instalado em seu computador.
+N&atilde;o me responsabilizo caso utiliza-la a partir de um disquete de
+recupera&ccedil;&atilde;o.
+<p><b>dd if=/dev/zero of=/dev/hdx1 bs=512 count=1</b>
+<p><b>onde</b>:
+<br><i>hdx1</i> - &Eacute; a identifica&ccedil;&atilde;o da unidade de
+disco e a parti&ccedil;&atilde;o que foi criada&nbsp; pelo Fdisk utilizando
+o sistema de arquivos DOS que ter&aacute; seu&nbsp; primeiro setor "limpo".
+<p><b>OBS1</b>: Cuidado ao utilizar esta op&ccedil;&atilde;o, um pequeno
+descuido pode resultar na&nbsp; perda de dados do
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+seu disco r&iacute;gido ou outras parti&ccedil;&atilde;o.
+<br><b>OBS2</b>: N&atilde;o utilize este comando com parti&ccedil;&otilde;es
+que utilizam o sistema de arquivos&nbsp; <i>FAT32</i>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+(utilizada nos sistemas operacionais <i>Windows 95 OSR/2</i> e superiores)
+se for utilizada em
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+um disco com este sistema, sua FAT ser&aacute; corrompida,&nbsp; se isto
+acontecer, ser&aacute; necess&aacute;ria a
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+re-formata&ccedil;&atilde;o da parti&ccedil;&atilde;o.
+<br><b>OBS3</b>: &Eacute; extremamente recomendado que se utilize o programa
+de particionamento que
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+acompanha o seu sistema operacional para a cria&ccedil;&atilde;o da parti&ccedil;&atilde;o.
+Por exemplo, se deseja
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+criar uma parti&ccedil;&atilde;o DOS 6.XX, utilize o FDisk qua acompanha
+o DOS.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="2"></a><u><font size=+1>2-) Iniciando o programa Fdisk</font></u></center>
+
+<p>Para iniciar o programa fdisk(Linux)digite:
+<p><i>fdisk</i> [unidade]
+<p><b>Onde</b>:
+<br><i>unidade</i> - deve ser a unidade de disco r&iacute;gido no padr&atilde;o
+Linux(<i> /dev/hda,&nbsp; /dev/hdb, /dev/sda,</i>
+<br><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+/dev/sdb, etc... </i>). Se voce tem apenas 1&nbsp; disco r&iacute;gido
+IDE, use <i>/dev/hda</i>, para fazer o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+fdisk trabalhar com este disco ou digite fdisk sem especificar a unidade.
+Se possuir 1
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+disco SCSI, use /dev/sda
+<p>&nbsp; Se unidade n&atilde;o for especificada, o programa fdisk usar&aacute;
+<i>/dev/hda</i>
+como unidade de disco padr&atilde;o.
+<p><b>ATEN&Ccedil;&Atilde;O</b> : A OPERA&Ccedil;&Atilde;O DE PARTICIONAMENTO
+DE DISCOS PODE FAZER COM
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+QUE OS DADOS&nbsp; ARMAZENADOS EM SEU DISCO R&Iacute;GIDO SEJAM
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PERDIDOS, SE FOR USADA INCORRETAMENTE. &Eacute; SEMPRE
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+RECOMENDADO RETIRAR UMA C&Oacute;PIA DE SEGURAN&Ccedil;A DOS SEUS
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ARQUIVOS EXISTENTES NO MICRO ANTES DE SE EXECUTAR UM
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PROGRAMA DESTE TIPO, A N&Atilde;O SER QUE TENHA CONFIAN&Ccedil;A NO
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+QUE ESTA FAZENDO E QUE ENTENDEU AS EXPLICA&Ccedil;&Otilde;ES SOBRE A
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+IDENTIFICA&Ccedil;&Atilde;O DE&nbsp;&nbsp; DISCOS R&Iacute;GIDOS E SUAS
+PARTI&Ccedil;&Otilde;ES NO
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+SISTEMA.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="2.1"></a><u><font size=+1>2.1-) Op&ccedil;&otilde;es de linha
+de comando</font></u></center>
+
+<p>&nbsp;&nbsp; Com a utiliza&ccedil;&atilde;o de op&ccedil;&otilde;es
+de linha de comando, voce pode fazer com que o programa inicie de uma forma
+espec&iacute;fica, ou personalizada.
+<p><b>fdisk</b> [<i>-b</i>] [<i>-u</i>] [<i>unidade</i>]&nbsp;&nbsp; -
+Op&ccedil;&otilde;es aceitas para o particionamento.
+<br><b>fdisk</b> [<i>-l</i>] [<i>-b</i>] [<i>-u</i>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Op&ccedil;&otilde;es aceitas para listar as parti&ccedil;&otilde;es atuais.
+<br><b>fdisk</b> [<i>-s</i>] [<i>unidade</i>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Op&ccedil;&atilde;o aceita para mostrar o Tamanho da parti&ccedil;&atilde;o
+<br><b>fdisk</b> [<i>-v</i>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Vers&atilde;o do programa
+<p><b>Onde</b>:
+<br><i>-b</i>&nbsp; : Faz com que o fdisk mostre na tela a coluna <i>BEGIN</i>
+quando utilizar a op&ccedil;&atilde;o &lt;p> durante o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; particionamento do disco ou com
+a op&ccedil;&atilde;o -l&nbsp; quando se for listar as parti&ccedil;&otilde;es
+na linha de
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comando.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>OBS</b>: Esta op&ccedil;&atilde;o
+&eacute; geralmente desnecess&aacute;ria, porque seu valor equivale ao
+valor da coluna
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+START.
+<br><i>-u</i>&nbsp; : Muda a unidade de medida padr&atilde;o para Setores.
+Se esta op&ccedil;&atilde;o for usada&nbsp; na linha de
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comando para se fazer o particionamento
+de disco, ap&oacute;s pressionar &lt;p>, o programa mostrar&aacute;
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; na tela o inicio e o fim da parti&ccedil;&atilde;o
+em Setores ao inv&eacute;s de utilizar cilindros para a listagem.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Se for utilizada em conjunto com a op&ccedil;&atilde;o
+-l, a unidade de medida do Inicio e Fim da parti&ccedil;&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ser&aacute; listada Setores ao inv&eacute;s
+de cilindros.
+<br><i>-l</i>&nbsp; : Lista as parti&ccedil;&otilde;es existentes no disco,
+sem entrar no programa fdisk, ou alterar qualquer
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parti&ccedil;&atilde;o. Esta op&ccedil;&atilde;o
+&eacute; equivalente a entrar no programa fdisk e pressionar &lt;p>, mas
+ela
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; somente lista as parti&ccedil;&otilde;es
+sem entrar no programa.
+<br><i>-s</i>&nbsp; : Mostra o tamanho de uma parti&ccedil;&atilde;o de
+disco. A &uacute;nica diferen&ccedil;a desta para as outras op&ccedil;&otilde;es,
+&eacute;
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; que se deve especificar a unidade mais
+a parti&ccedil;&atilde;o que deseja ver o tamanho, por exemplo,
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; digitando-se:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>fdisk -s /dev/hda1</i>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voce visualizar&aacute; o tamanho total
+da parti&ccedil;&atilde;o de disco hda1.
+<br><i>-v</i>&nbsp; : Mostra a vers&atilde;o do programa fdisk que esta
+utilizando.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="2.2"></a><u><font size=+1>2.2-) Comandos do fdisk.</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp; O fdisk do Linux manipula as parti&ccedil;&otilde;es
+de seu disco atrav&eacute;s de comandos digitados no teclado. Cada letra
+digitada corresponde a um comando diferente no fdisk. Estes comandos ser&atilde;o
+utilizados ap&oacute;s iniciar o programa.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Aqui vai a lista de comandos dispon&iacute;veis
+no fdisk, recomendo que anote em um papel, ou imprima esta parte do texto(
+ou todo o documento) para que possa consultar estas op&ccedil;&otilde;es
+durante o particionamento do seu disco r&iacute;gido.
+<p><i>a</i>&nbsp; - Seleciona entre parti&ccedil;&atilde;o inicializ&aacute;vel
+e n&atilde;o inicializ&aacute;vel.
+<br><i>b</i>&nbsp; - Edita um volume de disco BSD(n&atilde;o usada em computadores
+com DOS)
+<br><i>d</i>&nbsp; - Apaga uma tabela de parti&ccedil;&atilde;o (Delete)
+<br><i>l</i>&nbsp;&nbsp; - Lista os tipos de parti&ccedil;&otilde;es dispon&iacute;veis
+(List)
+<br><i>m</i> - Ajuda
+<br><i>n</i>&nbsp; - Cria uma nova tabela de parti&ccedil;&atilde;o (New)
+<br><i>p</i>&nbsp; - Mostra a tabela de parti&ccedil;&atilde;o atual (Print)
+<br><i>q</i>&nbsp; - sai do fdisk sem gravar as altera&ccedil;&otilde;es
+no disco (quit)
+<br><i>t</i>&nbsp;&nbsp; - Muda o tipo da parti&ccedil;&atilde;o (Type)
+<br><i>u</i>&nbsp; - Altera as unidades de medidas que s&atilde;o mostradas
+na tela
+<br><i>v</i>&nbsp; - Verifica a tabela de parti&ccedil;&atilde;o (verify)
+<br><i>w</i> - grava as altera&ccedil;&otilde;es feitas para o disco e
+sai do fdisk (write)
+<br><i>x</i>&nbsp; - Comandos especiais do programa(somente para usu&aacute;rios
+experientes)
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="3"></a><u><font size=+1>3-) Manipulando parti&ccedil;&otilde;es
+no disco r&iacute;gido</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Agora vamos come&ccedil;ar realmente a trabalhar
+com o fdisk, os textos que foram colocados acima, foi para que voce entendesse
+o que &eacute; o particionamento de um disco r&iacute;gido e para que soubesse
+a diferen&ccedil;a entre parti&ccedil;&atilde;o e um disco r&iacute;gido,(j&aacute;
+vi muitas pessoas falarem de parti&ccedil;&atilde;o como se fosse disco
+r&iacute;gido...)
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Abaixo uma explica&ccedil;&atilde;o passo-a-passo
+de como particionar um disco usando
+<br>o fdisk e seus comandos.
+<p><b>ATEN&Ccedil;&Atilde;O</b>: O disco r&iacute;gido usado no particionamento
+&eacute; um exemplo. Ele n&atilde;o deve ser usado por
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+voce para fazer o particionamento de seu disco, uma vez que a capacidade
+e outros
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+par&acirc;metros do disco r&iacute;gido variam de um para o outro. Este
+exemplo serve apenas
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+para que voce entenda como o fdisk funciona, o que faz cada um de seus
+comandos
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+e a&nbsp; fazer o c&aacute;lculo do tamanho das parti&ccedil;&otilde;es.
+<p>&nbsp;&nbsp; A tradu&ccedil;&atilde;o das mensagens que aparecem em
+Ingles nos exemplos que vou colocar logo abaixo, e a ajuda do programa,
+n&atilde;o foram feitas porque aparecem exatamente como est&atilde;o quando
+fizer o particionamento de seu disco, e n&atilde;o conhe&ccedil;o nenhuma
+vers&atilde;o do fdisk(Linux) em portugu&ecirc;s (caso algu&eacute;m conhe&ccedil;a
+uma vers&atilde;o deste programa em portugu&ecirc;s, favor entrar em contato
+comigo para que eu possa atualizar este documento, meu endere&ccedil;o
+de E-mail esta no final do documento).
+<br>&nbsp;&nbsp;&nbsp; Somente vou explicar o que significa cada mensagem
+que aparece no fdisk
+<br>atrav&eacute;s de uma compara&ccedil;&atilde;o.
+<p>No exemplo eu vou usar um disco de <i>1.08GB</i>. Este disco possui
+<i>630</i>
+cilindros, <i>16</i> cabe&ccedil;as, e <i>21</i> setores por trilha( <i>emmodo
+LBA</i>).
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="3.1"></a><u><font size=+1>3.1-) Listando parti&ccedil;&otilde;es
+existentes no disco</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Primeiro digite <i>fdisk /dev/hda</i> (supondo que
+este seja o disco principal), se a unidade de disco n&atilde;o for digitada,
+o fdisk usar&aacute; /dev/hda como padr&atilde;o. Ap&oacute;s voce digitar
+este comando, o fdisk procura por parti&ccedil;&otilde;es existentes, seus
+tamanhos e outras caracter&iacute;sticas(geometria do disco) que ser&atilde;o
+utilizadas para se fazer o c&aacute;lculo de parti&ccedil;&otilde;es.
+<br>&nbsp;&nbsp;&nbsp; Quando entrar no programa, digite a letra &lt;p>
+para que o programa mostre as tabelas de parti&ccedil;&atilde;o existentes
+no disco r&iacute;gido.
+<p>A tela que aparece &eacute; a seguinte:
+<p>----------------------------------------------------------------------------------------------------
+<br>Command (m for help): p
+<br>Disk /dev/hda: 16 heads, 21 sectors, 630 cylinders
+<br>Units = cylinders of 630*512 bytes
+<p>&nbsp;Device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Boot&nbsp;&nbsp;&nbsp; Begin&nbsp;&nbsp;&nbsp;
+Start&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp;&nbsp;
+System
+<br>&nbsp;/dev/hda1&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+117&nbsp;&nbsp; 204800&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp; DOS 16-bits >=32M
+<p>Command (m for help):
+<br>-----------------------------------------------------------------------------------------------------
+<br>&nbsp;
+<p>Abaixo uma tradu&ccedil;&atilde;o desta tela:
+<br>-----------------------------------------------------------------------------------------------------
+<br>Commando (m para ajuda): &lt;p>
+<br>Disco /dev/hda: 16 cabe&ccedil;as, 21 setores, 630 cilindros
+<br>Unidades = cilindros de 630*512 bytes
+<p>Dispositivo&nbsp; Partida&nbsp; Come&ccedil;a&nbsp; Inicio&nbsp;&nbsp;
+Fim&nbsp; Blocos&nbsp; Identif.&nbsp; Sistema
+<br>/dev/hda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 117&nbsp;
+204800&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS 16-bits
+>=32M
+<p>Comando (m para ajuda):
+<br>----------------------------------------------------------------------------------------------------
+<p><b>Onde</b>:
+<br><i>Device</i> : &Eacute; a identifica&ccedil;&atilde;o da parti&ccedil;&atilde;o
+de disco.
+<br><i>Boot</i>&nbsp;&nbsp;&nbsp;&nbsp; : Se estiver com "*", se a parti&ccedil;&atilde;o
+pode ser usada para BOOT.
+<br><i>Begin</i>&nbsp;&nbsp;&nbsp; : Cilindro inicial da parti&ccedil;&atilde;o
+de disco
+<br><i>Start</i>&nbsp;&nbsp;&nbsp;&nbsp; : Cilindro inicial da parti&ccedil;&atilde;o
+de disco
+<br><i>End</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Cilindro Final da
+parti&ccedil;&atilde;o do disco
+<br><i>Blocks&nbsp;&nbsp;</i> : Quantidade de blocos ocupados pela parti&ccedil;&atilde;o
+de disco. No Linux, um
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Bloco equivale a 1024 bytes(1KB)
+<br><i>ID</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Tipo da
+parti&ccedil;&atilde;o (conforme a lista de parti&ccedil;&otilde;es existentes
+quando &eacute;
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+pressionada a letra &lt;L>.
+<br><i>System</i> : Descri&ccedil;&atilde;o do sistema de arquivos que
+&eacute; usado na parti&ccedil;&atilde;o de disco.
+<p>&nbsp;&nbsp;&nbsp; Como vemos acima, o disco r&iacute;gido possui uma
+parti&ccedil;&atilde;o do tipo <i>DOS- FAT16 </i>ocupando <i>200MB</i>
+de espa&ccedil;o em disco (200000 Blocos multiplicados por 1024).
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="3.2"></a><u><font size=+1>3.2-) Criando uma parti&ccedil;&atilde;o
+de Disco</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Para criar uma parti&ccedil;&atilde;o de disco, pressionamos
+a letra &lt;n>. Neste exemplo vamos criar uma parti&ccedil;&atilde;o do
+tipo<b> Linux EXT2</b>(Nativa) com o tamanho de <i>820MB</i>, esta parti&ccedil;&atilde;o
+&eacute; a que conter&aacute; todo o sistema de arquivos Linux e seus programas,
+veja o exemplo:
+<p>-----------------------------------------------------------------------------------------------------
+<br>Command ( m for help): &lt;n>
+<br>&nbsp;&nbsp;&nbsp; e&nbsp; extended
+<br>&nbsp;&nbsp;&nbsp; p&nbsp; primary partition (1-4)
+<br>&lt;p>
+<br>Partition number (1-4): &lt;2>
+<br>First cylinder(118-630): &lt;118>
+<br>Last cylinder or +size or +sizeK or +sizeM (118-630): &lt;+820M>
+<br>-----------------------------------------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp; O fdisk perguntar&aacute; se deseja criar uma parti&ccedil;&atilde;o
+extendida ou prim&aacute;ria. Crie uma parti&ccedil;&atilde;o prim&aacute;ria
+para o sistema de arquivos do Linux, ou uma parti&ccedil;&atilde;o extendida
+caso voce ja tenha 3 parti&ccedil;&otilde;es prim&aacute;rias criadas em
+seu disco, conforme foi visto acima.
+<br>&nbsp;&nbsp;&nbsp; Como pode ter notado no exemplo acima, como j&aacute;
+existia a parti&ccedil;&atilde;o 1, digitamos o n&uacute;mero 2 para que
+fosse criada uma segunda parti&ccedil;&atilde;o, se a parti&ccedil;&atilde;o
+n&uacute;mero 2 j&aacute; existisse, seria digitado o n&uacute;mero 3 para
+criar uma terceira parti&ccedil;&atilde;o, assim por diante.
+<br>&nbsp;&nbsp;&nbsp; Ap&oacute;s escolher o tipo de parti&ccedil;&atilde;o
+que ser&aacute; criada, voce dever&aacute; especificar o cilindro inicial
+da parti&ccedil;&atilde;o de disco. No exemplo acima, o valor do cilindro
+inicial &eacute; de 118. Utilize sempre o valor do cilindro inicial sugerido
+pelo fdisk, a n&atilde;o ser que se queira deixar um espa&ccedil;o entre
+uma parti&ccedil;&atilde;o antiga e a nova parti&ccedil;&atilde;o para
+a cria&ccedil;&atilde;o de uma parti&ccedil;&atilde;o menor ou por outros
+motivos.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; O &uacute;ltimo passo &eacute; especificar
+onde terminar&aacute; a parti&ccedil;&atilde;o de disco. &Eacute; permitida
+a utiliza&ccedil;&atilde;o de Cilindros, bytes, Kbytes e Mbytes para marcar
+o final da parti&ccedil;&atilde;o de disco (veja detalhes abaixo).
+<p><b>LEMBRE-SE</b>: Em um mesmo disco r&iacute;gido podem existir at&eacute;
+4 parti&ccedil;&otilde;es prim&aacute;rias (contando com
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+a parti&ccedil;&atilde;o Extendida).
+<p><b>Onde</b>:
+<br>&nbsp;&nbsp; <i>Partition number</i> : N&uacute;mero da parti&ccedil;&atilde;o
+que vai ser criada, como j&aacute; temos&nbsp; uma parti&ccedil;&atilde;o
+no
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+disco, digitamos o n&uacute;mero 2 para dizer ao fdisk que queremos criar
+uma
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+segunda parti&ccedil;&atilde;o prim&aacute;ria. Neste exemplo, voce acabou
+de criar a
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+parti&ccedil;&atilde;o /dev/hda2.
+<br>&nbsp;&nbsp;&nbsp;<i> First cylinder</i>&nbsp; : Primeiro cilindro
+dispon&iacute;vel ap&oacute;s o &uacute;ltimo cilindro usado pela parti&ccedil;&atilde;o
+1. Neste
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+caso usamos o cilindro 118 at&eacute; o cilindro final(Last Cylinder).
+O valor deve ser
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+digitado em cilindros.
+<br><i>&nbsp;&nbsp;&nbsp; Last cylinder or +size or +sizeK or +sizeM</i>
+: Aqui voce pode especificar o final da parti&ccedil;&atilde;o de
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+disco.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Os seguintes valores podem ser usados para marcar o&nbsp; final da parti&ccedil;&atilde;o
+de
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+disco:
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+597&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- &Eacute; o valor equivalente a parti&ccedil;&atilde;o de 820MB&nbsp;
+(em cilindros)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
++820000000&nbsp; - &Eacute; o valor equivalente a parti&ccedil;&atilde;o
+de&nbsp; 820MB (em bytes)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
++820000K&nbsp;&nbsp;&nbsp;&nbsp; - &Eacute; o valor equivalente a parti&ccedil;&atilde;o
+de 820MB (em Kbytes)
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
++820M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - &Eacute;
+o valor equivalente a parti&ccedil;&atilde;o de 820MB (em Mbytes)
+<p>&nbsp;&nbsp;&nbsp; Recomendo que especifique o valor em <i>MB</i> ou
+<i>KB</i>
+por n&atilde;o exigir o c&aacute;lculo do espa&ccedil;o do disco usado
+em cada cilindro, e por ser um dos mais utilizados e mais pr&aacute;ticos.
+Especificando o valor em <i>bytes, Kbytes</i> ou <i>Mbytes</i>, o fdisk
+se encarregar&aacute; de converter o tamanho digitado para um valor de
+cilindro final.
+<br>&nbsp;&nbsp;&nbsp; Se digitar um n&uacute;mero acima do espa&ccedil;o
+dispon&iacute;vel no disco(ou cilindro dipon&iacute;vel), ser&aacute; mostrada
+uma mensagem de erro dizendo que a parti&ccedil;&atilde;o n&atilde;o pode
+ser criada.
+<p><b>OBS</b>: Caso seja criada uma parti&ccedil;&atilde;o DOS FAT16, dever&aacute;
+ser utilizado o comando
+<br>&nbsp;&nbsp;&nbsp;&nbsp; <b>dd if=/dev/zero of=/dev/hdx1 bs=512 count=1</b>
+<br>&nbsp;&nbsp;&nbsp;&nbsp; para que a parti&ccedil;&atilde;o criada seja
+compat&iacute;vel com o formato utilizado pelo
+<br>&nbsp;&nbsp;&nbsp;&nbsp; DOS. Para maiores detalhes veja <a href="#1.7">Observa&ccedil;&otilde;es
+sobre o formato DOS 6.XX</a>
+<br>&nbsp;
+<p>&nbsp;&nbsp;&nbsp; Para verificar as parti&ccedil;&otilde;es existentes
+no disco tecle &lt;p>
+<br>-----------------------------------------------------------------------------------------------------
+<br>Command (m for help): p
+<br>Disk /dev/hda: 16 heads, 21 sectors, 630 cylinders
+<br>Units = cylinders of 630*512 bytes
+<p>&nbsp;Device&nbsp;&nbsp;&nbsp; Boot&nbsp; Begin&nbsp; Start&nbsp; End&nbsp;&nbsp;
+Blocks&nbsp;&nbsp;&nbsp; Id&nbsp;&nbsp;&nbsp;&nbsp; System
+<br>/dev/hda1&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1&nbsp;&nbsp;&nbsp; 117&nbsp;&nbsp; 204800&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+DOS 16-bits >=32M
+<br>/dev/hda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 118&nbsp;&nbsp;&nbsp;
+118&nbsp;&nbsp; 597&nbsp;&nbsp; 839680&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;
+Linux Native
+<p>Command (m for help):
+<br>-----------------------------------------------------------------------------------------------------
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<br>&nbsp;
+<center>
+<p><a NAME="3.3"></a><u><font size=+1>3.3-) Mudando o tipo de uma parti&ccedil;&atilde;o</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; O tipo da parti&ccedil;&atilde;o &eacute; a identifica&ccedil;&atilde;o
+de qual sistema de arquvios que ela pertence e na qual possuem caracter&iacute;sticas
+pr&oacute;prias e diferentes de outros sistemas de arquivos.
+<br>&nbsp;&nbsp;&nbsp; Tecle &lt;t> para trocar o tipo de parti&ccedil;&atilde;o
+usado no disco.
+<br>Pressione a tecla &lt;l> se desejar ver os tipos de parti&ccedil;&otilde;es
+compat&iacute;veis com o programa fdisk.
+<br>&nbsp;&nbsp;&nbsp;&nbsp; Veja o exemplo de como trocar o tipo da parti&ccedil;&atilde;o
+de Linux Native (<i>tipo 83</i>) para Linux Swap (<i>tipo 82</i>).
+<br>-----------------------------------------------------------------------------------------------------
+<br>&nbsp; Command (m for help): &lt;t>
+<br>&nbsp; Partition number (1-4): &lt;3>
+<br>&nbsp; Hex code (type L to list codes): &lt;82>
+<br>-----------------------------------------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp; Agora a parti&ccedil;&atilde;o em /dev/hda3 &eacute;
+do tipo Linux SWAP(tipo 82).
+<br>&nbsp;
+<p>Pressione a tecla &lt;p> para verificar a parti&ccedil;&atilde;o /dev/hda3:
+<br>-----------------------------------------------------------------------------------------------------
+<br>Command (m for help): p
+<br>Disk /dev/hda: 16 heads, 21 sectors, 630 cylinders
+<br>Units = cylinders of 630*512 bytes
+<p>&nbsp;Device&nbsp;&nbsp;&nbsp; Boot&nbsp; Begin&nbsp; Start&nbsp; End&nbsp;
+Blocks&nbsp;&nbsp;&nbsp; Id&nbsp;&nbsp;&nbsp;&nbsp; System
+<br>/dev/hda1&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1&nbsp;&nbsp;&nbsp; 117&nbsp; 204800&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;
+DOS 16-bits >=32M
+<br>/dev/hda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 118&nbsp;&nbsp;&nbsp;
+118&nbsp;&nbsp; 597&nbsp; 839680&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;
+Linux Native
+<br>/dev/hda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 598&nbsp;&nbsp;&nbsp;
+598&nbsp;&nbsp; 630&nbsp;&nbsp; 61440&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;
+Linux SWAP
+<p>Command (m for help):
+<br>-----------------------------------------------------------------------------------------------------
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="3.4"></a><u><font size=+1>3.4-) Excluindo uma parti&ccedil;&atilde;o
+de Disco</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Para excluir uma parti&ccedil;&atilde;o, pressione
+a tecla &lt;d>, ser&aacute; mostrada a seguinte tela:
+<br>----------------------------------------------------------------------------------------------------
+<br>Command (m for help):&lt;d>
+<br>Partition number(1-4): 3
+<p>Command(m for help):
+<br>----------------------------------------------------------------------------------------------------
+<br>&nbsp;&nbsp;&nbsp; Com o comando acima, a parti&ccedil;&atilde;o n&uacute;mero
+3 (SWAP) foi excluida,. O espa&ccedil;o ocupado pela parti&ccedil;&atilde;o
+3 &eacute; novamente liberado para que voce possa utilizar para criar outra
+(ou outras) parti&ccedil;&otilde;es de disco.
+<p><b>ATEN&Ccedil;&Atilde;O</b>: TENHA MUITO CUIDADE COM O DA OP&Ccedil;&Atilde;O
+&lt;D>(Delete) DO FDISK.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Caso se tenha apagado acidentalmente alguma parti&ccedil;&atilde;o que
+cont&eacute;m dados, pressione
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+a tecla &lt;q> para sair do fdisk sem gravar o que fez. Neste caso, ser&aacute;
+necess&aacute;rio
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+refazer todo o particionamento do disco.&nbsp; N&atilde;o pressione a tecla
+&lt;w> se voce excluiu
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+alguma parti&ccedil;&atilde;o que utiliza, porque todo o que foi feito
+no fdisk ser&aacute; gravado,
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+inclusive a parti&ccedil;&atilde;o excluida acidentalmente, sem a possibilidade
+de recupera-la.
+<p>para verificar se a parti&ccedil;&atilde;o foi excluida pressionamos
+&lt;p>:
+<br>-----------------------------------------------------------------------------------------------------
+<br>Command (m for help): p
+<br>Disk /dev/hda: 16 heads, 21 sectors, 630 cylinders
+<br>Units = cylinders of 630*512 bytes
+<p>&nbsp;Device&nbsp;&nbsp;&nbsp; Boot Begin&nbsp; Start&nbsp; End&nbsp;
+Blocks&nbsp;&nbsp;&nbsp; Id&nbsp;&nbsp;&nbsp;&nbsp; System
+<br>/dev/hda1&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1&nbsp;&nbsp;&nbsp; 117&nbsp; 204800&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;
+DOS 16-bits >=32M
+<br>/dev/hda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 118&nbsp;&nbsp;&nbsp;
+118&nbsp;&nbsp; 597&nbsp; 839680&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;
+Linux Native
+<br>Command (m for help):
+<br>----------------------------------------------------------------------------------------------------
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="3.5"></a><u><font size=+1>3.5-) Gravando parti&ccedil;&otilde;es
+alteradas para o disco</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp; Para gravar as altera&ccedil;&otilde;es feitas
+na(s) parti&ccedil;&otilde;es para o disco ap&oacute;s fazer o particionamento,
+pressione a tecla &lt;w>, esta op&ccedil;&atilde;o faz a saida do fdisk
+gravando todas as altera&ccedil;&otilde;es que fez durante o uso do programa
+fdisk(parti&ccedil;&otilde;es criadas, alteradas, excluidas).
+<br>&nbsp;&nbsp;&nbsp; Enquando voce trabalha no fdisk criando parti&ccedil;&otilde;es,
+modificando tamanhos, excluindo parti&ccedil;&otilde;es, nada do que faz
+&eacute; gravado para o disco automaticamente (por motivos de seguran&ccedil;a
+contra perda de alguma parti&ccedil;&atilde;o j&aacute; existente).
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="3.6"></a><u><font size=+1>3.6-) Abandonando o particionamento
+de disco sem gravar as altera&ccedil;&otilde;es</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Para sair do fdisk sem gravar as altera&ccedil;&otilde;es
+para o disco pressione &lt;q>. Esta op&ccedil;&atilde;o de sair do fdisk
+sem gravar as altera&ccedil;&otilde;es(abandona o programa), &eacute; bastante
+&uacute;til caso tenha apagado acidentalmente uma parti&ccedil;&atilde;o
+que contenha arquivos e programas importantes armazenados nela.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="3.7"></a><u><font size=+1>3.7-) Alternando entre parti&ccedil;&atilde;o
+inicializ&aacute;vel e n&atilde;o inicializ&aacute;vel</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp; Parti&ccedil;&atilde;o inicializ&aacute;vel
+&eacute; aquela em que o sistema pode dar a partida(boot) no computador.
+Pressione a tecla &lt;a> para alterar o tipo da parti&ccedil;&atilde;o
+entre inicializ&aacute;vel e n&atilde;o inicaliz&aacute;vel.
+<br><b>OBS</b>: O Linux pode iniciar mesmo que a parti&ccedil;&atilde;o
+que esta instalado esteja&nbsp; marcada como n&atilde;o
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inicializ&aacute;vel,
+utilizando um boot manager(gerenciador de inicializa&ccedil;&atilde;o)
+como o LILO(Linux
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Loader) ou o
+LoadLin no DOS.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="3.8"></a><u><font size=+1>3.8-) Alterando a unidade de medida
+do tamanho ocupado pela parti&ccedil;&atilde;o</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Para alterar de uma unidade de medida para outra,
+pressione a tecla &lt;u>. A unidade de medida da parti&ccedil;&atilde;o,
+&eacute; o valor com que ser&aacute; mostrado o tamanho que a parti&ccedil;&atilde;o
+ocupa no disco toda a vez que se pressiona a tecla &lt;p>, para mostrar
+as parti&ccedil;&otilde;es na tela, durante o particionamento de disco
+ou quando se utilizar a op&ccedil;&atilde;o -l na linha de comando, para
+listar as parti&ccedil;&otilde;es de disco.
+<p>As unidades de medida dispon&iacute;veis s&atilde;o:
+<br><i>Cilindros</i> : Este &eacute; o padr&atilde;o do sistema, corresponde
+ao local onde come&ccedil;a e
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+aonde termina a parti&ccedil;&atilde;o, em cilindros.
+<br><i>Setores</i>&nbsp;&nbsp; : corresponde ao local onde come&ccedil;a
+e aonde termina a parti&ccedil;&atilde;o, em
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Setores.
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<br>&nbsp;
+<center>
+<p><a NAME="4"></a><u><font size=+1>4-) Outros tipos de parti&ccedil;&otilde;es
+dispon&iacute;veis no fdisk(para refer&ecirc;ncia t&eacute;cnica)</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp; Abaixo, segue a listagem dos tipos de parti&ccedil;&otilde;es
+compat&iacute;veis com esta vers&atilde;o do fdisk, que pode servir de
+guia durante o processo de particionamento, e para que conhe&ccedil;a a
+compatibilidade deste programa com os diversos tipos de parti&ccedil;&otilde;es
+que suporte.
+<p><b>OBS1</b>: Recomendo que voce use o programa de particionamento que
+acompanha seu sistema
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+operacional para a cria&ccedil;&atilde;o de seu sistema de arquivos, por
+exemplo:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Para criar uma parti&ccedil;&atilde;o DOS, utilize o Fdisk que acompanha
+o&nbsp; DOS.
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+- Para criar uma parti&ccedil;&atilde;o Linux, utilize o Fdisk que acompanha
+o Linux.
+<br>&nbsp;
+<p><b><u>Tipo</u>&nbsp;&nbsp;&nbsp;&nbsp; <u>Descri&ccedil;&atilde;o</u></b>
+<p>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vazio
+<br>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS FAT 12
+<br>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Xenix root
+<br>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Xenix /usr
+<br>4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS 16-bits&lt;32MB
+<br>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Extendida DOS
+<br>6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS 16-bits >=32MB
+<br>7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OS/2 HPFS
+<br>8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AIX
+<br>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AIX inicializ&aacute;vel
+<br>a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OS/2 Boot Manager
+<br>40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Venix 80286
+<br>51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Novell
+<br>52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Microport
+<br>63&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GNU hurd
+<br>64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Novell Netware 286
+<br>65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Novell Netware 386
+<br>75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PC/IX
+<br>80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OLD Minix
+<br>81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux Minix
+<br>82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux SWAP
+<br>83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux Native
+<br>85&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux Extendida
+<br>93&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Amoeba
+<br>94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Amoeba BBT
+<br>a5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSD/386
+<br>a6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Open BSD
+<br>a7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NextStep
+<br>b7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSDI File System
+<br>b8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSDI Swap
+<br>c7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Syrinx
+<br>db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CP/M
+<br>e1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS access
+<br>e3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOS R/O
+<br>f2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dos Secund&aacute;ria
+<br>ff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BBT
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="5"></a><u><font size=+1>5-) Direitos Autorais</font></u></center>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Este documento foi desenvolvido
+com base em minha experi&ecirc;ncia e conhecimento em discos e parti&ccedil;&otilde;es,
+mediante pesquisa em alguns documentos como os How-TO do Linux e verificando
+as principais d&uacute;vidas de usu&aacute;rios durante a utiliza&ccedil;&atilde;o
+de particionadores de disco, tendo como objetivo levar o conhecimento sobre
+discos, parti&ccedil;&otilde;es e utiliza&ccedil;&atilde;o deste programa,
+atendendo tanto usu&aacute;rios iniciantes como avan&ccedil;ados e como
+contribui&ccedil;&atilde;o para a comunidade Linux em geral.
+<br>&nbsp;
+<br>&nbsp;
+<br>
+<br>
+<center>
+<p>Gleydson M. da Silva (<i>gleydson_s@yahoo.com</i> e <i>gleydson@linuxbr.com.br</i>)</center>
+
+<p>&nbsp;&nbsp;&nbsp; Qualquer d&uacute;vida, sugest&atilde;o ou reclama&ccedil;&atilde;o
+podem ser mandadas para um dos E-Mail's Acima. Conto com sua contribui&ccedil;&atilde;o
+para a melhoria deste Manual.
+<center>
+<p><b>&nbsp;&nbsp;&nbsp; Autorizo a reprodu&ccedil;&atilde;o Total ou parcial
+deste texto para que seja utilizado para fins educativos, autoaprendizado,
+coloca&ccedil;&atilde;o em Home pages e qualquer outra forma de distribui&ccedil;&atilde;o
+n&atilde;o comercial do documento desde que sejam mantidos os meus cr&eacute;ditos
+pela pesquisa e elabora&ccedil;&atilde;o deste documento de acordo com
+os termos da GNU (veja abaixo <a href="#6">Licen&ccedil;as e Garantias
+sobre este documento</a>).</b></center>
+&nbsp;
+<div align=right>
+<br><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<center><a NAME="6"></a><font size=+1>6- ) Licen&ccedil;as e garantias
+sobre este documento</font></center>
+
+<p><b>Fdisk-Portugues-HOWTO Copyright (C) 1999 Gleydson M. da Silva</b>
+<p>&nbsp;&nbsp;&nbsp; Este &eacute; um documento de livre distribui&ccedil;&atilde;o,
+que pode ser copiado e distribu&iacute;do sob os termos da Licen&ccedil;a
+P&uacute;blica Geral&nbsp; GNU, conforme publicada pela Free Software Foundation,
+vers&atilde;o 2 da licen&ccedil;a ou (a crit&eacute;rio do autor) qualquer
+vers&atilde;o posterior.
+<br><b>&nbsp;&nbsp; Este documento &eacute; distribu&iacute;do com a iten&ccedil;&atilde;o
+de ser &uacute;til ao seu utilizador, no entanto N&Atilde;O TEM NENHUMA
+GARANTIA,&nbsp; EXPL&Iacute;CITAS OU IMPL&Iacute;CITAS , COMERCIAIS OU
+DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. Consulte a Licen&ccedil;a
+P&uacute;blica Geral&nbsp; GNU para maiores detalhes.</b>
+<p><i>gleydson_s@yahoo.com</i>
+<br><i>gleydson@linuxbr.com.br</i>
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<br>&nbsp;
+<center>
+<p><a NAME="7"></a><font size=+1>7- ) Marcas Registradas</font></center>
+
+<p>Os programas e refer&ecirc;ncias mencionados neste manual s&atilde;o
+de propriedade dos seus respectivos donos:
+<p>MS-DOS, Windows 3.1x, Windows 9x, Windows NT s&atilde;o de propriedade
+da Microsoft.
+<br>OS/2 e OS/2 Warp s&atilde;o de propriedade da IBM
+<div align=right><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+
+<center><a NAME="8"></a><font size=+1>8- ) Agradecimentos</font></center>
+
+<p>Agrade&ccedil;o a todas as pessoas que me mandam corre&ccedil;&otilde;es,
+coment&aacute;rios, cr&iacute;ticas, elogios, d&uacute;vidas sobre este
+documento, pois atrav&eacute;s destas mensagens, est&atilde;o contribuindo
+para a melhoria deste projeto e me icentivando em sua continua&ccedil;&atilde;o.&nbsp;
+<div align=right>
+<br><a href="#Indice">Volta ao &Iacute;ndice</a></div>
+&lt;EOF>
+</body>
+</html>
diff --git a/fdisk/doc/Fdisk-Portuguese.txt b/fdisk/doc/Fdisk-Portuguese.txt
new file mode 100644
index 000000000..fbf0dcf87
--- /dev/null
+++ b/fdisk/doc/Fdisk-Portuguese.txt
@@ -0,0 +1,855 @@
+ Fdisk-Portuguese Copyright (C) 1999 Gleydson M. da Silva
+
+
+
+
+
+
+
+
+
+ Gleydson M. da Silva - gleydson@linuxbr.com.br
+ Versăo 1.3
+
+
+
+
+
+
+
+
+
+[ Índice ]
+
+1 - Introduçăo ao Fdisk
+ 1.1 - O que é uma Partiçăo de Disco
+ 1.2 - A tabela de partiçăo
+ 1.3 - Introduçăo ao Particionamento de discos
+ 1.4 - Identificaçőes utilizadas neste documento
+ 1.5 - Identificaçăo de discos e partiçőes no Linux
+ 1.6 - Tipos de partiçőes de disco
+ 1.7-) Observaçőes sobre o formato DOS 6.XX(FAT 16)
+
+2 - Iniciando o programa Fdisk
+ 2.1 - Opçőes de Linha de comando
+ 2.2 - Comandos do Fdisk
+
+3 - Manipulando partiçőes no disco rígido
+ 3.1 - Listando partiçőes existentes no disco
+ 3.2 - Criando partiçőes de disco
+ 3.3 - Mudando o tipo da partiçăo
+ 3.4 - Excluindo uma partiçăo de disco
+ 3.5 - Gravando partiçőes alteradas para o disco
+ 3.6 - Abandonando o programa sem gravar alteraçőes para o disco
+ 3.7 - Alternando entre partiçăo inicializável/năo inicializável
+ 3.8 - Escolhendo a unidade para mostrar o tamanho ocupado pela partiçăo
+
+4 - Tipos de partiçőes reconhecídas pelo Fdisk
+
+5 - Direitos Autorais
+
+6 - Licenças e Garantias sobre este documento
+
+7 - Marcas Registradas
+
+8 - Agradecimentos
+
+
+
+
+
+
+
+
+
+
+
+
+
+1-) Introduçăo ao Fdisk
+
+ Fdisk é um programa utilizado para fazer o particionamento de discos rígidos
+IDE e SCSI.
+ A versăo do programa Fdisk descrita neste manual é a 2.8
+ATENÇĂO: ESTE MANUAL TEM COMO OBJETIVO A EXPLICAÇĂO DE FUNCIONAMENTO E
+ UTILIZAÇĂO DO FDISK DO LINUX (NĂO O FDISK DO DOS), MESMO QUE
+ SEJA UM USUÁRIO DO DOS, EU RECOMENDO QUE LEIA ESTE MANUAL
+ COMO UMA REFERĘNCIA TÉCNICA E PARA SEU APRENDIZADO.
+
+ Este documento é distribuído com a itençăo de ser útil ao seu utilizador,
+no entanto NĂO TEM NENHUMA GARANTIA,  EXPLÍCITAS OU IMPLÍCITAS , COMERCIAIS
+OU DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. Consulte a Licença Pública
+Geral  GNU para maiores detalhes.
+
+
+
+1.1-) Partiçăo de Disco
+
+ Uma partiçăo de disco é o local onde o sistema operacional armazena seu
+sistema de arquivos(arquivos, diretórios, FAT, boot sector, etc).
+
+
+
+1.2-) Tabela de partiçăo
+
+A Tabela de partiçăo é o local do disco rígido onde se localizam os dados sobre
+todas as partiçőes existentes no disco como o sistema de arquivos utilizado, se
+ela é inicializável, a cabeça inicial/final, setor inicial/final, cilindro
+inicial/final, número de setores ocupados por ela no disco.
+
+
+
+1.3-) Introduçăo ao particionamento de discos
+
+Particionar o disco rígido é dividir ele em partes para armazenamento
+de arquivos e programas. As partiçőes criadas no disco podem ter o tamanho
+que desejar (desde que esteja dentro da capacidade máxima do disco rígido).
+
+Uma partiçăo năo interfere em outras partiçőes do mesmo disco(é como
+se tivessemos vários discos rígidos dentro de um).
+
+Em um disco rígido, pode ser criada uma partiçăo única, que neste caso
+todo o disco rígido é usado para armazenar os arquivos(que é o caso mais
+comum caso voce tenha o DOS), ou várias partiçőes, que podem ser usadas
+pelo mesmo SO(Sistema Operacional) ou outros sistemas operacionais diferentes
+(um exemplo de várias partiçőes, é se voce for usar o DOS e o Linux no mesmo
+disco, os dois sistemas văo estar no mesmo disco mas um năo interfere no
+outro).
+
+Este manual tem a itençăo de explicar o particionamento de discos utilizando
+o programa fdisk (fdisk do Linux năo do DOS!).
+
+
+
+1.4-) Algumas identificaçőes utilizadas neste manual para facilitar a
+ compreensăo do texto
+
+Esta parte descreve algumas características de organizaçăo deste manual
+e algumas identificaçőes que adotei para facilitar o seu entendimento, e as
+explicaçőes que serăo dadas.
+
+Explicaçăo de nomes e comandos, sera seguida da palavra "onde" e abaixo
+dela as explicaçőes sobre os comandos, exemplo:
+
+onde:
+nome a ser explicado1 : Descriçăo
+nome a ser explicado2 : Descriçăo
+nome a ser explicado3 : Descriçăo
+
+ou
+
+onde:
+nome a ser explicado1 - Descriçăo
+nome a ser explicado2 - Descriçăo
+nome a ser explicado3 - Descriçăo
+
+
+Quando for feita alguma referęncia com tecla do teclado, por exemplo,
+pressione p para listar as partiçőes, a letra sera colocada entre <> para
+facilitar a interpretaçăo:
+
+pressione <p> para listar as partiçőes
+após isto pressione <Enter> para confirmar
+pressione <l> para listar os tipos de partiçőes disponíveis
+
+
+As linhas pontilhadas que aparecem na tela, veja abaixo,
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
+servem para identificar que o que esta entre as linhas é um exemplo de como
+será a resposta do comando para a tela de seu computador.
+
+
+
+1.5-) Identificaçăo de discos e partiçőes no Linux
+
+Antes de descrever como se utiliza o programa fdisk, é importante fazer
+algumas explicaçőes sobre a identificaçăo das partiçőes e unidades de disco
+no sistema Linux( e outros *nix). Se voce for um usuário que já conhece
+a interpretaçăo de discos e partiçőes neste sistema, voce năo precisará ler
+esta parte.
+
+No sistema operacional Linux, os dispositivos existentes no computador
+(como impressoras, unidades de disquetes, discos rígidos, monitor, placa de
+som, etc...) săo identificados por um nome referente a este dispositivo e
+colocado no diretório /dev (que é utilizado para identificar dispositivos ou
+periféricos existentes no computador).
+
+A identificaçăo dos discos rígidos segue a seguinte forma:
+
+ /dev/hda1
+ | | ||
+ | | ||_Número que identifica a partiçăo do disco rígido(1=Primeira, 2=segunda)
+ | | |
+ | | |_Letra que identifica o disco rígido(a=primeiro disco, b=segundo disco, etc..)
+ | |
+ | |_Sigla HD - Significa que é um disco rígido IDE(Se tiver um SD significa SCSI)
+ |
+ |_ Identificaçăo do diretório onde os dispositivos do sistema săo armazenados
+
+OBS: As unidades de disco rígido SCSI, săo identificadas com as letras SD
+ seguida pela letra da unidade e número da partiçăo e os discos IDE săo
+ identificados por HD seguida pela letra da unidade de disco e o número
+ da partiçăo do disco(como visto acima).
+
+Abaixo, algumas identificaçőes de disco do sistema Linux:
+
+/dev/hda1 - Disco rígido IDE primário principal - Primeira partiçăo
+/dev/hda2 - Disco rígido IDE primário principal - Segunda partiçăo
+/dev/hda3 - Disco rígido IDE primário principal - Terceira partiçăo
+/dev/hdb1 - Disco rígido IDE primário escravo - Primeira partiçăo
+/dev/hdb2 - Disco rígido IDE primário escravo - Segunda partiçăo
+/dev/hdb3 - Disco rígido IDE primário escravo - Terceira partiçăo
+/dev/hdc1 - Disco rígido IDE secundário principal - Primeira partiçăo
+/dev/hdc2 - Disco rígido IDE secundário principal - Segunda partiçăo
+/dev/hdc3 - Disco rígido IDE secundário principal - Terceira partiçăo
+/dev/hdd1 - Disco rígido IDE secundário escravo - Primeira partiçăo
+/dev/hdd2 - Disco rígido IDE secundário escravo - Segunda partiçăo
+/dev/hdd3 - Disco rígido IDE secundário escravo - Terceira partiçăo
+/dev/sda1 - Primeiro disco rígido SCSI - Primeira partiçăo
+/dev/sda2 - Primeiro disco rígido SCSI - Segunda partiçăo
+/dev/sda3 - Primeiro disco rígido SCSI - Terceira partiçăo
+/dev/sdb1 - Segundo disco rígido SCSI - Primeira partiçăo
+/dev/sdb2 - Segundo disco rígido SCSI - Segunda partiçăo
+/dev/sdb3 - Segundo disco rígido SCSI - Terceira partiçăo
+
+No exemplo acima foram usadas 3 partiçőes por disco, mas podem existir
+mais partiçőes no mesmo disco, um exemplo é se o disco rígido possuir
+partiçőes Lógicas, que săo identificadas no sistemas a partir de /dev/hdx5
+em diante.
+
+Abaixo um exemplo de como o Linux identifica as partiçőes em cada disco
+existente em seu computador:
+
+Vamos supor que eu tenha 2 discos rígidos:
+o 1şdisco de 2GB e o 2şdisco de 1GB(Giga Byte ou 1.000 Megas!)
+
+No primeiro disco(de 2GB), a primeira partiçăo é de 800MB do tipo
+FAT16(DOS), a segunda partiçăo é de 1.2GB do tipo EXT2(Linux)(1.2GB+800MB=2GB
+que é a capacidade total do disco). Entăo as partiçőes seriam identificadas
+da seguinte forma no Linux:
+
+/dev/hda - Disco rígido Primário Principal
+/dev/hda1 - Primeira partiçăo do primeiro disco rígido (de 800MB do tipo DOS)
+/dev/hda2 - Segunda partiçăo do primeiro disco rígido( de 1.2GB do tipo Linux)
+
+Neste caso estariam disponíveis 800MB para serem usados com o DOS e
+1.2GB para o Linux.
+Por exemplo, se voce particionar um disco rígido em duas partes e usar
+as duas partiçőes no DOS, ele reconhecerá as partiçőes como sendo C: e D:.
+
+Lembre-se: Quando um disco é particionado, uma partiçăo năo interfere
+ nas outras, repare que quando voce particiona(divide) um disco,
+ é como se tivesse dois discos rígidos(o único cuidado que
+ voce deve tomar é com as cópias de segurança, porque se der
+ um problema de parte eletrônica no disco rígido, por exemplo,
+ a sua placa controladora queimar ou o cabeçote dele ir pro
+ espaço, voce perderá as suas 2 partiçőes que estăo armazenadas
+ nele.
+
+
+Voltando ao exemplo das classificaçőes das partiçőes do disco, vamos
+para o segundo disco:
+
+No segundo disco(1GB), eu tenho uma partiçăo de 950MB do tipo FAT16(DOS),
+que costumo usar para armazenar arquivos temporários e cópias de segurança
+de meu sistema, etc..., e outra de 50MB SWAP(Partiçăo de memória virtual
+como descrevi acima)(950MB+50MB=1GB). Entăo as partiçőes deste disco seriam
+identificadas da seguinte forma no Linux:
+
+/dev/hdb - Disco rígido principal escravo
+/dev/hdb1 - Primeira partiçăo do disco acima ( de 950MB do tipo DOS)
+/dev/hdb2 - Segunda partiçăo do disco acima ( de 50MB do tipo SWAP)
+
+No disco acima, 950MB estăo disponíveis para serem usados pelo DOS e 50 MB pela
+memória virtual (SWAP) do Linux.
+
+Note que se voce utiliza o MS-DOS, năo será possível ver as partiçőes
+do Linux e SWAP, porque săo imcompatíveis com o formato aceito pelo DOS (ele
+identificaria a primeira partiçăo do primeiro disco(800MB) como a unidade C:
+e a primeira partiçăo do segundo disco(950MB) como unidade D), mas o
+contrário năo acontece; O Linux tem total compatibilidade com a partiçăo
+DOS FAT12, FAT16, FAT32, OS/2 HPFS, e muitas outras.
+
+
+
+1.6-) Tipos de partiçőes de discos
+
+As partiçőes de disco săo divididas em tres tipos: Primária, Extendida
+e Lógica.
+
+Pode se ter no máximo quatro partiçőes primárias e extendidas no mesmo
+disco. A partiçăo Primária permite o armazenamento de arquivos e diretórios.
+Todos os computadores que possuem somente a unidade C(supondo que voce use o
+DOS), usam este tipo de partiçăo para armazenamento de arquivos e inicializaçăo
+do sistema operacional.
+
+Se for preciso criar mais que 4 partiçőes no mesmo disco, será necessário
+criar uma partiçăo Extendida. A partiçăo Extendida năo pode ser utilizada
+para armazenar arquivos. Ela é usada para a criaçăo de outras partiçőes,
+dentro dela, que săo chamadas de partiçőes Lógicas.
+
+Uma partiçăo extendida podem conter várias partiçőes Lógicas. As partiçőes
+Lógicas podem armazenar arquivos e diretórios(como as partiçőes primárias).
+
+Um mesmo disco rígido pode armazenar mais de 64 partiçőes independentes
+uma das outras.
+
+OBS: Os arquivos e diretórios podem ser armazenados somente em partiçőes de
+ disco primárias ou lógicas, a partiçăo extendida năo é usada para armazanamento
+ de arquivos e diretórios.
+
+Se possuir duas partiçőes em seu computador (C: e D: no DOS), e năo
+estiver usando a partiçăo D:, a instalaçăo pode ser feita nesta partiçăo
+desde que ela tenha o espaço necessário para o sistema operacional Linux,
+os programas que desejar instalar, mais a partiçăo SWAP.
+
+
+
+1.7-) Observaçőes sobre o formato DOS 6.XX(FAT 16)
+
+No formato DOS 6.XX(FAT16), o primeiro setor da área de dados da partiçăo
+é utilizado frequentemente pelo DOS para armazenamento de dados sobre a
+partiçăo de disco, e estes dados săo usados pelo sistema para se ter maior
+confiabilidade do que os dados armazenados na tabela de partiçăo. O sistema
+de arquivos DOS, faz o FDISK(do DOS) limpar os primeiros 512 bytes da área
+de dados da partiçăo sempre que uma mudança de tamanho acontecer.
+
+O formatador do DOS(format) verifica este primeiro setor toda vez que
+a upçăo /U (que é utilizada para năo salvar dados para se fazer a desformataçăo
+do disco) é utilizada.
+
+Isto é considerado uma FALHA no Format(do DOS) e no Fdisk(do DOS).
+A opçăo abaixo deve ser utilizada caso voce crie uma partiçăo do DOS FAT16
+com o Fdisk, que faz com que os primeiros 512 bytes daquela partiçăo
+sejam "limpos", para manter a compatibilidade com o DOS. Utilize esta opçăo
+dentro do Linux, após criar a partiçăo com o Fdisk e reiniciar o seu
+computador. Foi notado que esta opçăo só funciona corretamente somente quando
+o Sistema Linux estiver instalado em seu computador. Năo me responsabilizo
+caso utiliza-la a partir de um disquete de recuperaçăo.
+
+dd if=/dev/zero of=/dev/hdx1 bs=512 count=1
+
+onde:
+hdx1 - É a identificaçăo da unidade de disco e a partiçăo que foi criada
+ pelo Fdisk utilizando o sistema de arquivos DOS que terá seu
+ primeiro setor "limpo".
+
+
+OBS1: Cuidado ao utilizar esta opçăo, um pequeno descuido pode resultar na
+ perda de dados do seu disco rígido ou outras partiçăo.
+
+OBS2: Năo utilize este comando com partiçőes que utilizam o sistema de arquivos
+ FAT32(utilizada nos sistemas operacionais Windows 95 OSR/2 e superiores)
+ se for utilizada em um disco com este sistema, sua FAT será corrompida,
+ se isto acontecer, será necessária a re-formataçăo da partiçăo.
+
+OBS3: É extremamente recomendado que se utilize o programa de particionamento
+ que acompanha o seu sistema operacional. Por exemplo, se deseja criar
+ uma partiçăo DOS 6.XX, utilize o FDisk qua acompanha o DOS.
+
+
+
+2-) Iniciando o programa Fdisk
+
+Para iniciar o programa fdisk(Linux)digite:
+fdisk [unidade]
+
+Onde:
+unidade - deve ser a unidade de disco rígido no padrăo Linux( /dev/hda,
+ /dev/hdb, /dev/sda, /dev/sdb, etc... ). Se voce tem apenas 1
+ disco rígido IDE, use /dev/hda, para fazer o fdisk trabalhar
+ com este disco. Se possuir 1 disco SCSI, use /dev/sda
+
+Se a unidade năo for especificada, o programa fdisk usará /dev/hda como
+unidade de disco padrăo.
+
+ATENÇĂO : A OPERAÇĂO DE PARTICIONAMENTO DE DISCOS PODE FAZER COM QUE OS DADOS
+ ARMAZENADOS EM SEU DISCO RÍGIDO SEJAM PERDIDOS, SE FOR USADA
+ INCORRETAMENTE. É SEMPRE RECOMENDADO RETIRAR UMA CÓPIA DE SEGURANÇA
+ DOS SEUS ARQUIVOS EXISTENTES NO MICRO ANTES DE SE EXECUTAR UM
+ PROGRAMA DESTE TIPO, A NĂO SER QUE TENHA CONFIANÇA NO QUE ESTA
+ FAZENDO E QUE ENTENDEU AS EXPLICAÇŐES SOBRE A IDENTIFICAÇĂO DE
+ DISCOS RÍGIDOS E SUAS PARTIÇŐES NO SISTEMA.
+
+
+
+2.1-) Opçőes de linha de comando
+
+Com a utilizaçăo de opçőes de linha de comando, voce pode fazer com que
+o programa inicie de uma forma específica, ou personalizada.
+
+fdisk [-b] [-u] [unidade] - Opçőes aceitas para o particionamento.
+fdisk [-l] [-b] [-u] - Opçőes aceitas para listar as partiçőes atuais.
+fdisk [-s] [unidade] - Opçăo aceita para mostrar o Tamanho da partiçăo
+fdisk [-v] - Versăo do programa
+
+Onde:
+-b : Faz com que o fdisk mostre na tela a coluna BEGIN quando utilizar
+ a opçăo <p> durante o particionamento do disco ou com a opçăo -l
+ quando se for listar as partiçőes na linha de comando.
+ OBS: Esta opçăo é geralmente desnecessária, porque seu valor equivale
+ ao valor da coluna START.
+-u : Muda a unidade de medida padrăo para Setores. Se esta opçăo for usada
+ na linha de comando para se fazer o particionamento de disco, após
+ pressionar <p>, o programa mostrará na tela o inicio e o fim da
+ partiçăo em Setores ao invés de utilizar cilindros para a listagem.
+ Se for utilizada em conjunto com a opçăo -l, a unidade de medida do
+ Inicio e Fim da partiçăo será listada Setores ao invés de cilindros.
+-l : Lista as partiçőes existentes no disco, sem entrar no programa
+ fdisk, ou alterar qualquer partiçăo. Esta opçăo é equivalente a
+ entrar no programa fdisk e pressionar <p>, mas ela somente lista
+ as partiçőes sem entrar no programa.
+-s : Mostra o tamanho de uma partiçăo de disco. A única diferença desta
+ para as outras opçőes, é que se deve especificar a unidade mais a
+ partiçăo que deseja ver o tamanho, por exemplo, digitando-se:
+ fdisk -s /dev/hda1
+ voce visualizará o tamanho total da partiçăo de disco hda1.
+-v : Mostra a versăo do programa fdisk que esta utilizando.
+
+
+
+2.2-) Comandos do fdisk.
+
+O fdisk do Linux manipula as partiçőes de seu disco através de comandos
+digitados no teclado. Cada letra digitada corresponde a um comando diferente
+no fdisk. Estes comandos serăo utilizados após iniciar o programa.
+
+Aqui vai a lista de comandos disponíveis no fdisk, recomendo que anote
+em um papel, ou imprima esta parte do texto( ou todo o documento) para que
+possa consultar estas opçőes durante o particionamento do seu disco rígido.
+
+a - Seleciona entre partiçăo inicializável e năo inicializável.
+b - Edita um volume de disco BSD(năo usada em computadores com DOS)
+d - Apaga uma tabela de partiçăo (Delete)
+l - Lista os tipos de partiçőes disponíveis (List)
+m - Ajuda
+n - Cria uma nova tabela de partiçăo (New)
+p - Mostra a tabela de partiçăo atual (Print)
+q - sai do fdisk sem gravar as alteraçőes no disco (quit)
+t - Muda o tipo da partiçăo (Type)
+u - Altera as unidades de medidas que săo mostradas na tela
+v - Verifica a tabela de partiçăo (verify)
+w - grava as alteraçőes feitas para o disco e sai do fdisk (write)
+x - Comandos especiais do programa(somente para usuários experientes)
+
+
+
+3-) Manipulando partiçőes no disco rígido
+
+Agora vamos começar realmente a trabalhar com o fdisk, os textos que
+foram colocados acima, foi para que voce entendesse o que é o particionamento
+de um disco rígido e para que soubesse a diferença entre partiçăo e um disco
+rígido,(já vi muitas pessoas falarem de partiçăo como se fosse disco rígido...)
+
+Abaixo uma explicaçăo passo-a-passo de como particionar um disco usando
+o fdisk e seus comandos.
+
+ATENÇĂO: O disco rígido usado no particionamento é um exemplo. Ele năo deve
+ ser usado por voce para fazer o particionamento de seu disco, uma
+ vez que a capacidade e outros parâmetros do disco rígido variam de
+ um para o outro. Este exemplo serve apenas para que voce entenda
+ como o fdisk funciona, o que faz cada um de seus comandos e a
+ fazer o cálculo do tamanho das partiçőes.
+
+A traduçăo das mensagens que aparecem em Ingles nos exemplos que vou colocar
+logo abaixo, e a ajuda do programa, năo foram feitas porque aparecem exatamente
+como estăo quando fizer o particionamento de seu disco, e năo conheço
+nenhuma versăo do fdisk(Linux) em portuguęs (caso alguém conheça uma versăo
+deste programa em portuguęs, favor entrar em contato comigo para que eu
+possa atualizar este documento, meu endereço de E-mail esta no final do
+documento).
+Somente vou explicar o que significa cada mensagem que aparece no fdisk
+através de uma comparaçăo.
+
+No exemplo eu vou usar um disco de 1.08GB. Este disco possui 630 cilindros,
+16 cabeças, e 21 setores por trilha(modo LBA).
+
+
+
+3.1-) Listando partiçőes existentes no disco
+
+Primeiro digite fdisk /dev/hda (supondo que este disco seja o principal),
+se a unidade de disco năo for digitada, o fdisk usará /dev/hda como padrăo.
+Após voce digitar este comando, o fdisk procura por partiçőes existentes,
+seus tamanhos e outras características(geometria do disco) que serăo
+utilizadas para se fazer o cálculo de partiçőes.
+
+Quando entrar no programa, digite a letra <p> para que o programa mostre
+as tabelas de partiçăo existentes no disco rígido.
+
+A tela que aparece é a seguinte:
+
+----------------------------------------------------------------------------
+Command (m for help): p
+Disk /dev/hda: 16 heads, 21 sectors, 630 cylinders
+Units = cylinders of 630*512 bytes
+
+ Device Boot Begin Start End Blocks Id System
+ /dev/hda1 * 1 1 117 204800 6 DOS 16-bits >=32M
+
+Command (m for help):
+-----------------------------------------------------------------------------
+
+
+Abaixo uma traduçăo desta tela:
+----------------------------------------------------------------------------
+Commando (m para ajuda): <p>
+Disco /dev/hda: 16 cabeças, 21 setores, 630 cilindros
+Unidades = cilindros de 630*512 bytes
+
+Dispositivo Partida Começa Inicio Fim Blocos Identif. Sistema
+/dev/hda1 * 1 1 117 204800 6 DOS 16-bits >=32M
+
+Comando (m para ajuda):
+----------------------------------------------------------------------------
+
+Onde:
+Device : É a identificaçăo da partiçăo de disco.
+Boot : Se estiver com "*", se a partiçăo pode ser usada para BOOT.
+Begin : Cilindro inicial da partiçăo de disco
+Start : Cilindro inicial da partiçăo de disco
+End : Cilindro Final da partiçăo do disco
+Blocks : Quantidade de blocos ocupados pela partiçăo de disco. No Linux, um
+ Bloco equivale a 1024 bytes(1KB)
+ID : Tipo da partiçăo (conforme a lista de partiçőes existentes quando é
+ pressionada a letra <L>.
+System : Descriçăo do sistema de arquivos que é usado na partiçăo de disco.
+
+Como vemos acima, o disco rígido possui uma partiçăo do tipo DOS- FAT16
+ocupando 200MB de espaço em disco (200000 Blocos multiplicados por 1024).
+
+
+
+3.2-) Criando uma partiçăo de Disco
+
+Para criar uma partiçăo de disco, pressionamos a letra <n>. Neste
+exemplo vamos criar uma partiçăo do tipo Linux EXT2(Nativa) com o tamanho de
+820MB, esta partiçăo é a que conterá todo o sistema de arquivos Linux e seus
+programas, veja o exemplo:
+
+----------------------------------------------------------------------------
+Command ( m for help): <n>
+ e extended
+ p primary partition (1-4)
+<p>
+Partition number (1-4): <2>
+First cylinder(118-630): <118>
+Last cylinder or +size or +sizeK or +sizeM (118-630): <+820M>
+----------------------------------------------------------------------------
+O fdisk perguntará se deseja criar uma partiçăo extendida ou primária.
+Crie uma partiçăo primária para o sistema de arquivos do Linux, ou uma
+partiçăo extendida caso voce ja tenha 3 partiçőes primárias criadas em seu
+disco, conforme foi visto acima.
+
+Como pode ter notado no exemplo acima, como já existia a partiçăo 1,
+digitamos o número 2 para que fosse criada uma segunda partiçăo, se
+a partiçăo número 2 já existisse, seria digitado o número 3 para criar
+uma terceira partiçăo, assim por diante.
+
+Após escolher o tipo de partiçăo que será criada, voce deverá especificar
+o cilindro inicial da partiçăo de disco. No exemplo acima, o valor do cilindro
+inicial é de 118. Utilize sempre o valor do cilindro inicial sugerido pelo
+fdisk, a năo ser que se queira deixar um espaço entre uma partiçăo antiga e
+a nova partiçăo para a criaçăo de uma partiçăo menor ou por outros motivos.
+
+O último passo é especificar onde terminará a partiçăo de disco. É
+permitida a utilizaçăo de Cilindros, bytes, Kbytes e Mbytes para marcar o
+final da partiçăo de disco (veja detalhes abaixo).
+
+LEMBRE-SE: Em um mesmo disco rígido podem existir até 4 partiçőes primárias
+ (contando com a partiçăo Extendida).
+
+onde:
+ Partition number : Número da partiçăo que vai ser criada, como já temos
+ uma partiçăo no disco, digitamos o número 2 para
+ dizer ao fdisk que queremos criar uma segunda partiçăo
+ primária. Neste exemplo, voce acabou de criar a
+ partiçăo /dev/hda2.
+ First cylinder : Primeiro cilindro disponível após o último cilindro
+ usado pela partiçăo 1. Neste caso usamos o cilindro
+ 118 até o cilindro final(Last Cylinder). O valor
+ deve ser digitado em cilindros.
+ Last cylinder or +size or +sizeK or +sizeM : Aqui voce pode especificar
+ o final da partiçăo de disco.
+ Os seguintes valores podem ser usados para marcar o
+ final da partiçăo de disco:
+
+ 597 - É o valor equivalente a partiçăo de 820MB
+ (em cilindros)
+ +820000000 - É o valor equivalente a partiçăo de
+ 820MB (em bytes)
+ +820000K - É o valor equivalente a partiçăo de
+ 820MB (em Kbytes)
+ +820M - É o valor equivalente a partiçăo de
+ 820MB (em Mbytes)
+
+Recomendo que especifique o valor em MB ou KB por năo exigir o
+cálculo do espaço do disco usado em cada cilindro, e por ser um dos mais
+utilizados e mais práticos. Especificando o valor em bytes, Kbytes ou
+Mbytes, o fdisk se encarregará de converter o tamanho digitado para
+um valor de cilindro final.
+
+Se digitar um número acima do espaço disponível no disco(ou cilindro
+diponível), será mostrada uma mensagem de erro dizendo que a partiçăo năo
+pode ser criada.
+
+OBS: Caso seja criada uma partiçăo DOS FAT16, deverá ser utilizado o comando
+ dd if=/dev/zero of=/dev/hdx1 bs=512 count=1
+ para que a partiçăo criada seja compatível com o formato utilizado pelo
+ DOS. Para maiores detalhes veja Observaçőes sobre o formato DOS 6.XX
+
+
+ Para verificar as partiçőes existentes no disco tecle <p>
+----------------------------------------------------------------------------
+Command (m for help): p
+Disk /dev/hda: 16 heads, 21 sectors, 630 cylinders
+Units = cylinders of 630*512 bytes
+
+ Device Boot Begin Start End Blocks Id System
+/dev/hda1 * 1 1 117 204800 6 DOS 16-bits >=32M
+/dev/hda2 118 118 597 839680 83 Linux Native
+
+Command (m for help):
+----------------------------------------------------------------------------
+
+
+
+
+3.3-) Mudando o tipo de uma partiçăo
+
+O tipo da partiçăo é a identificaçăo de qual sistema de arquvios que ela
+pertence e na qual possuem características próprias e diferentes de outros
+sistemas de arquivos.
+
+Tecle <t> para trocar o tipo de partiçăo usado no disco.
+Pressione a tecla <l> se desejar ver os tipos de partiçőes compatíveis
+com o programa fdisk.
+
+Veja o exemplo de como trocar o tipo da partiçăo de Linux Native (tipo
+83) para Linux Swap (tipo 82):
+
+----------------------------------------------------------------------------
+ Command (m for help): <t>
+ Partition number (1-4): <3>
+ Hex code (type L to list codes): <82>
+----------------------------------------------------------------------------
+ Agora a partiçăo em /dev/hda3 é do tipo Linux SWAP(tipo 82).
+
+
+Pressione a tecla <p> para verificar a partiçăo /dev/hda3:
+----------------------------------------------------------------------------
+Command (m for help): p
+Disk /dev/hda: 16 heads, 21 sectors, 630 cylinders
+Units = cylinders of 630*512 bytes
+
+ Device Boot Begin Start End Blocks Id System
+/dev/hda1 * 1 1 117 204800 6 DOS 16-bits >=32M
+/dev/hda2 118 118 597 839680 83 Linux Native
+/dev/hda3 598 598 630 61440 83 Linux SWAP
+Command (m for help):
+----------------------------------------------------------------------------
+
+
+
+3.4-) Excluindo uma partiçăo de Disco
+
+Para excluir uma partiçăo, pressione a tecla <d>, será mostrada a seguinte
+tela:
+
+----------------------------------------------------------------------------
+Command (m for help):<d>
+Partition number(1-4): 3
+
+Command(m for help):
+----------------------------------------------------------------------------
+
+Com o comando acima, a partiçăo número 3 (SWAP) foi excluida,. O espaço
+ocupado pela partiçăo 3 é novamente liberado para que voce possa utilizar
+para criar outra (ou outras) partiçőes de disco.
+
+ATENÇĂO: TENHA MUITO CUIDADE COM O DA OPÇĂO <D>(Delete) DO FDISK. Caso se
+ tenha apagado acidentalmente alguma partiçăo que contém dados,
+ pressione a tecla <q> para sair do fdisk sem gravar o que fez.
+ Neste caso, será necessário refazer todo o particionamento do disco.
+ Năo pressione a tecla <w> se voce excluiu alguma partiçăo que
+ utiliza, porque todo o que foi feito no fdisk será gravado, inclusive
+ a partiçăo excluida acidentalmente, sem a possibilidade de
+ recupera-la.
+
+para verificar se a partiçăo foi excluida pressionamos <p>:
+----------------------------------------------------------------------------
+Command (m for help): p
+Disk /dev/hda: 16 heads, 21 sectors, 630 cylinders
+Units = cylinders of 630*512 bytes
+
+ Device Boot Begin Start End Blocks Id System
+/dev/hda1 * 1 1 117 204800 6 DOS 16-bits >=32M
+/dev/hda2 118 118 597 839680 83 Linux Native
+Command (m for help):
+----------------------------------------------------------------------------
+
+
+
+3.5-) Gravando partiçőes alteradas para o disco
+
+Para gravar as alteraçőes feitas na(s) partiçőes para o disco após
+fazer o particionamento, pressione a tecla <w>, esta opçăo faz a saida do
+fdisk gravando todas as alteraçőes que fez durante o uso do programa
+fdisk(partiçőes criadas, alteradas, excluidas).
+
+Enquando voce trabalha no fdisk criando partiçőes, modificando tamanhos,
+excluindo partiçőes, nada do que faz é gravado para o disco automaticamente
+(por motivos de segurança contra perda de alguma partiçăo já existente).
+
+
+
+3.6-) Abandonando o particionamento de disco sem gravar as alteraçőes
+
+Para sair do fdisk sem gravar as alteraçőes para o disco pressione <q>.
+Esta opçăo de sair do fdisk sem gravar as alteraçőes(abandona o programa),
+é bastante útil caso tenha apagado acidentalmente uma partiçăo que contenha
+arquivos e programas importantes armazenados nela.
+
+
+
+3.7-) Alternando entre partiçăo inicializável e năo inicializável
+
+Partiçăo inicializável é aquela em que o sistema pode dar a partida(boot).
+Pressione a tecla <a> para alterar o tipo da partiçăo entre inicializável
+e năo inicalizável.
+
+OBS: O Linux pode iniciar mesmo que a partiçăo que esta instalado esteja
+ marcada como năo inicializável, utilizando um boot manager(gerenciador
+ de inicializaçăo) como o LILO(Linux Loader) ou o LoadLin no DOS.
+
+
+
+3.8-) Alterando a unidade de medida do tamanho ocupado pela partiçăo
+
+Para alterar de uma unidade de medida para outra, pressione a tecla <u>.
+A unidade de medida da partiçăo, é o tipo de valor que mostrará o tamanho
+que a partiçăo ocupa no disco toda a vez que se pressiona a tecla <p>, para
+mostrar as partiçőes na tela, durante o particionamento de disco ou quando
+se utilizar a opçăo -l na linha de comando, para listar as partiçőes de
+disco.
+
+As unidades de medida disponíveis săo:
+Cilindros : Este é o padrăo do sistema, corresponde ao local onde começa e
+ aonde termina a partiçăo, em cilindros.
+Setores : corresponde ao local onde começa e aonde termina a partiçăo, em
+ setores.
+
+
+
+
+4-) Outros tipos de partiçőes disponíveis no fdisk(para referęncia técnica)
+
+Abaixo, segue a listagem dos tipos de partiçőes compatíveis com esta versăo
+do fdisk, que pode servir de guia durante o processo de particionamento, e
+para que conheça a compatibilidade deste programa com os diversos tipos
+de partiçőes que suporte.
+
+OBS1: Recomendo que voce use o programa de particionamento específico de
+ seu sistema operacional, por exemplo:
+ Para criar uma partiçăo DOS, utilize o Fdisk do dos.
+ Para criar uma partiçăo Linux, utilize o Fdisk dele.
+
+
+Tipo Descriçăo
+
+0 Vazio
+1 DOS FAT 12
+2 Xenix root
+3 Xenix /usr
+4 DOS 16-bits<32MB
+5 Extendida DOS
+6 DOS 16-bits >=32MB
+7 OS/2 HPFS
+8 AIX
+9 AIX inicializável
+a OS/2 Boot Manager
+40 Venix 80286
+51 Novell
+52 Microport
+63 GNU hurd
+64 Novell Netware 286
+65 Novell Netware 386
+75 PC/IX
+80 OLD Minix
+81 Linux Minix
+82 Linux SWAP
+83 Linux Native
+85 Linux Extendida
+93 Amoeba
+94 Amoeba BBT
+a5 BSD/386
+a6 Open BSD
+a7 NextStep
+b7 BSDI File System
+b8 BSDI Swap
+c7 Syrinx
+db CP/M
+e1 DOS access
+e3 DOS R/O
+f2 Dos Secundária
+ff BBT
+
+
+
+5-) Direitos Autorais
+
+Este documento foi desenvolvido com base em minha experięncia e conhecimento
+em discos e partiçőes, mediante pesquisa em alguns documentos como os How-TO's
+do Linux, e verificando as principais dúvidas de usuários durante a utilizaçăo
+de particionadores de disco, tendo como objetivo levar o conhecimento sobre
+discos, partiçőes e utilizaçăo deste programa, atendendo tanto usuários
+iniciantes como avançados e como contribuiçăo para a comunidade Linux em geral.
+
+Gleydson M. da Silva (gleydson_s@yahoo.com e gleydson@linuxbr.com.br)
+
+Qualquer dúvida, sugestăo ou reclamaçăo podem ser mandadas para um dos E-Mail's
+Acima. Conto com sua contribuiçăo para a melhoria deste Manual.
+
+Autorizo a reproduçăo Total ou parcial deste texto para que seja utilizado para
+fins educativos, autoaprendizado, colocaçăo em Home pages e qualquer outra forma
+de distribuiçăo năo comercial do documento desde que sejam mantidos os meus
+créditos pela pesquisa e elaboraçăo deste documento de acordo com os termos da
+GNU (veja baixo Licenças e Garantias sobre este documento).
+
+
+6- ) Licenças e garantias sobre este documento
+
+Fdisk-Portuguese Copyright (C) 1999 Gleydson M. da Silva
+Este é um documento de livre distribuiçăo, que pode ser copiado e
+distribuído sob os termos da Licença Pública Geral  GNU, conforme publicada
+pela Free Software Foundation, versăo 2 da licença ou (a critério do autor)
+qualquer versăo posterior.
+
+Este documento é distribuído com a itençăo de ser útil ao seu utilizador,
+no entanto NĂO TEM NENHUMA GARANTIA,  EXPLÍCITAS OU IMPLÍCITAS , COMERCIAIS
+OU DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. Consulte a Licença Pública
+Geral  GNU para maiores detalhes.
+
+gleydson_s@yahoo.com
+gleydson@linuxbr.com.br
+
+
+
+7- ) Marcas Registradas
+
+Os programas e referęncias mencionados neste manual săo de propriedade dos
+seus respectivos donos:
+
+MS-DOS, Windows 3.1x, Windows 9x, Windows NT săo de propriedade da Microsoft.
+OS/2 e OS/2 Warp săo de propriedade da IBM
+
+
+8- Agradecimentos
+
+Agradeço a todas as pessoas que me mandam correçőes, comentários, críticas,
+elogios, dúvidas sobre este documento, pois através destas mensagens, estăo
+contribuindo para a melhoria deste projeto e me icentivando para sua continuaçăo.
+
+<EOF> \ No newline at end of file
diff --git a/fdisk/fdisk.8 b/fdisk/fdisk.8
index 6307b98ec..e26baf1c5 100644
--- a/fdisk/fdisk.8
+++ b/fdisk/fdisk.8
@@ -5,9 +5,9 @@
.SH NAME
fdisk \- Partition table manipulator for Linux
.SH SYNOPSIS
-.BI "fdisk [\-u] [" device ]
+.BI "fdisk [\-u] " device
.sp
-.BI "fdisk \-l [\-u] [" "device ..." ]
+.BI "fdisk \-l [\-u] " "device ..."
.sp
.BI "fdisk \-s " "partition ..."
.sp
@@ -189,20 +189,6 @@ of cylinders.
The
.I size
of the partition (in blocks) is printed on the standard output.
-This value is normally used as an argument to the
-.BR mkfs (8)
-program to specify the size of the partition which will be formatted.
-(Older versions of fdisk would do this only if the partition id is
-greater than 10, in an attempt to refuse DOS partitions;
-this test has been deleted.)
-Note that
-.B "sfdisk -s"
-gives different (namely, correct) answers.
-Reasons for the difference are that the kernel and
-.B fdisk
-need not have the same idea about partition numbering
-(e.g., in case you have BSD slices), and have different
-ideas about the size of an extended partition.
.SH BUGS
There are several *fdisk programs around.
Each has its problems and strengths.
@@ -210,6 +196,20 @@ Try them in the order
.BR cfdisk ,
.BR fdisk ,
.BR sfdisk .
+(Indeed,
+.B cfdisk
+is a beautiful program that has strict requirements on
+the partition tables it accepts, and produces high quality partition
+tables. Use it if you can.
+.B fdisk
+is a buggy program that does fuzzy things - usually it happens to
+produce reasonable results. Its single advantage is that it has
+some support for BSD disk labels and other non-DOS partition tables.
+Avoid it if you can.
+.B sfdisk
+is for hackers only - the user interface is terrible, but it is
+more correct than fdisk and more powerful than both fdisk and cfdisk.
+Moreover, it can be used noninteractively.)
.PP
The IRIX/SGI type disklabel is currently not supported by the kernel.
Moreover, IRIX/SGI header directories are not fully supported yet.
diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c
index 8cdc6df84..8270d344f 100644
--- a/fdisk/fdisk.c
+++ b/fdisk/fdisk.c
@@ -66,6 +66,22 @@
* Modified, Sat Oct 3 14:40:17 MET DST 1998, ANeuper@GUUG.de
* Support SGI's partitioning -- an, 980930.
* Do the verify using LBA, not CHS, limits -- aeb, 981206.
+ * Corrected single-cylinder partition creating a little, now that
+ * ankry@mif.pg.gda.pl pointed out a bug; there are more bugs -- aeb, 990214.
+ *
+ * Sat Mar 20 09:31:05 EST 1999 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * Internationalization
+ *
+ * Corrected deleting last logical partition -- aeb, 990430.
+ * Removed all assumptions on file names -- aeb, 990709
+ * [modprobe gave ugly error messages, and the number of devices to probe
+ * increased all the time: hda, sda, eda, rd/c0d0, ida/c0d0, ...
+ * Also partition naming was very ugly.]
+ *
+ * Corrected a bug where creating an extended hda3, say, then a logical hda5
+ * that does not start at the beginning of hda3, then a logical hda6 that does
+ * start at the beginning of hda3 would wipe out the partition table describing
+ * hda5. [Patch by Klaus G. Wagner" <kgw@suse.de>] -- aeb, 990711
*/
@@ -78,6 +94,8 @@
#include <setjmp.h>
#include <errno.h>
#include <getopt.h>
+#include <locale.h>
+#include "nls.h"
#include <sys/stat.h>
#include <sys/ioctl.h>
@@ -85,6 +103,7 @@
#include <linux/hdreg.h> /* for HDIO_GETGEO */
#include <linux/fs.h> /* for BLKRRPART, BLKGETSIZE */
+#include "common.h"
#include "fdisk.h"
#include "fdisksunlabel.h"
@@ -92,6 +111,10 @@
#include "fdiskaixlabel.h"
#include "../version.h"
+#include "../defines.h"
+#ifdef HAVE_blkpg_h
+#include <linux/blkpg.h>
+#endif
#define hex_val(c) ({ \
char _c = (c); \
@@ -100,8 +123,6 @@
})
-#define DEFAULT_DEVICE "/dev/hda"
-#define ALTERNATE_DEVICE "/dev/sda"
#define LINE_LENGTH 80
#define offset(b, n) ((struct partition *)((b) + 0x1be + \
(n) * sizeof(struct partition)))
@@ -175,7 +196,7 @@ get_nr_sects(struct partition *p) {
/* normally O_RDWR, -l option gives O_RDONLY */
static int type_open = O_RDWR;
-char *disk_device = DEFAULT_DEVICE, /* hda, unless specified */
+char *disk_device, /* must be specified */
*line_ptr, /* interactive input */
line_buffer[LINE_LENGTH],
changed[MAXIMUM_PARTS], /* marks changed buffers */
@@ -195,8 +216,8 @@ uint heads,
cylinders,
sector_size = DEFAULT_SECTOR_SIZE,
sector_offset = 1,
- display_factor = 1, /* in units/sector */
- unit_flag = 1,
+ units_per_sector = 1,
+ display_in_cyl_units = 1,
extended_offset = 0, /* offset of link pointers */
offsets[MAXIMUM_PARTS] = {0, 0, 0, 0};
@@ -210,58 +231,6 @@ struct partition *part_table[MAXIMUM_PARTS] /* partitions */
*ext_pointers[MAXIMUM_PARTS] /* link pointers */
= {NULL, NULL, NULL, NULL};
-struct systypes sys_types[] = {
- {0x00, "Empty"},
- {0x01, "DOS 12-bit FAT"},
- {0x02, "XENIX root"},
- {0x03, "XENIX usr"},
- {0x04, "DOS 16-bit <32M"},
- {0x05, "Extended"},
- {0x06, "DOS 16-bit >=32M"},
- {0x07, "OS/2 HPFS"}, /* or QNX? */
- {0x08, "AIX"},
- {0x09, "AIX bootable"},
- {0x0a, "OS/2 Boot Manager"},
- {0x0b, "Win95 FAT32"},
- {0x0c, "Win95 FAT32 (LBA)"},
- {0x0e, "Win95 FAT16 (LBA)"},
- {0x0f, "Win95 Extended (LBA)"},
- {0x11, "Hidden DOS FAT12"},
- {0x14, "Hidden DOS FAT16"},
- {0x16, "Hidden DOS FAT16 (big)"},
- {0x17, "Hidden OS/2 HPFS or NTFS"},
- {0x40, "Venix 80286"},
- {0x41, "PPC PReP Boot"},
- {0x51, "Novell?"},
- {0x52, "Microport"}, /* or CPM? */
- {0x63, "GNU HURD"}, /* or System V/386? */
- {0x64, "Novell Netware 286"},
- {0x65, "Novell Netware 386"},
- {0x75, "PC/IX"},
- {0x80, "Old MINIX"}, /* Minix 1.4a and earlier */
-
- {LINUX_PARTITION, "Linux/MINIX"}, /* Minix 1.4b and later */
- {LINUX_SWAP, "Linux swap"},
- {LINUX_NATIVE, "Linux native"},
- {LINUX_EXTENDED, "Linux extended"},
-
- {0x93, "Amoeba"},
- {0x94, "Amoeba BBT"}, /* (bad block table) */
- {0xa5, "BSD/386"},
- {0xa6, "OpenBSD"},
- {0xa7, "NEXTSTEP"},
- {0xb7, "BSDI fs"},
- {0xb8, "BSDI swap"},
- {0xc7, "Syrinx"},
- {0xdb, "CP/M"}, /* or Concurrent DOS? */
- {0xe1, "DOS access"},
- {0xe3, "DOS R/O"},
- {0xeb, "BeOS fs"},
- {0xf2, "DOS secondary"},
- {0xff, "BBT"}, /* (bad track table) */
- { 0, NULL }
-};
-
jmp_buf listingbuf;
void fatal(enum failure why)
@@ -275,39 +244,53 @@ void fatal(enum failure why)
}
switch (why) {
- case usage: message =
-"Usage: fdisk [-b SSZ] [-u] [DISK] Change partition table\n"
-" fdisk -l [-b SSZ] [-u] [DISK] List partition table(s)\n"
-" fdisk -s PARTITION Give partition size(s) in blocks\n"
-" fdisk -v Give fdisk version\n"
+ case usage: message = _(
+"Usage: fdisk [-b SSZ] [-u] DISK Change partition table\n"
+" fdisk -l [-b SSZ] [-u] DISK List partition table(s)\n"
+" fdisk -s PARTITION Give partition size(s) in blocks\n"
+" fdisk -v Give fdisk version\n"
"Here DISK is something like /dev/hdb or /dev/sda\n"
"and PARTITION is something like /dev/hda7\n"
"-u: give Start and End in sector (instead of cylinder) units\n"
-"-b 2048: (for certain MO drives) use 2048-byte sectors\n";
+"-b 2048: (for certain MO drives) use 2048-byte sectors\n");
+ break;
+ case usage2:
+ /* msg in cases where fdisk used to probe */
+ message = _(
+"Usage: fdisk [-l] [-b SSZ] [-u] device\n"
+"E.g.: fdisk /dev/hda (for the first IDE disk)\n"
+" or: fdisk /dev/sdc (for the third SCSI disk)\n"
+" or: fdisk /dev/eda (for the first PS/2 ESDI drive)\n"
+" or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)\n"
+" ...\n");
break;
case no_device:
- message = "A disk block device is needed.\n";
+ message = _("A disk block device is needed.\n");
break;
case no_partition:
- message = "Given name does not refer to a partition,\n"
- "or maybe not even to a block device.\n";
+ message =_("Given name does not refer to a partition,\n"
+ "or maybe not even to a block device.\n");
break;
case unable_to_open:
- sprintf(error, "Unable to open %s\n", disk_device);
+ sprintf(error, _("Unable to open %s\n"), disk_device);
break;
case unable_to_read:
- sprintf(error, "Unable to read %s\n", disk_device);
+ sprintf(error, _("Unable to read %s\n"), disk_device);
break;
case unable_to_seek:
- sprintf(error, "Unable to seek on %s\n", disk_device);
+ sprintf(error, _("Unable to seek on %s\n"),disk_device);
break;
case unable_to_write:
- sprintf(error, "Unable to write %s\n", disk_device);
+ sprintf(error, _("Unable to write %s\n"), disk_device);
+ break;
+ case ioctl_error:
+ sprintf(error, _("BLKGETSIZE ioctl failed on %s\n"),
+ disk_device);
break;
case out_of_memory:
- message = "Unable to allocate any more memory\n";
+ message = _("Unable to allocate any more memory\n");
break;
- default: message = "Fatal error\n";
+ default: message = _("Fatal error\n");
}
fputc('\n', stderr);
@@ -317,104 +300,107 @@ void fatal(enum failure why)
void menu(void)
{
- if (sun_label)
- puts("Command action\n"
- " a toggle a read only flag\n" /* sun */
- " b edit bsd disklabel\n"
- " c toggle the mountable flag\n" /* sun */
- " d delete a partition\n"
- " l list known partition types\n"
- " m print this menu\n"
- " n add a new partition\n"
- " o create a new empty DOS partition table\n"
- " p print the partition table\n"
- " q quit without saving changes\n"
- " s create a new empty Sun disklabel\n" /* sun */
- " t change a partition's system id\n"
- " u change display/entry units\n"
- " v verify the partition table\n"
- " w write table to disk and exit\n"
- " x extra functionality (experts only)"
- );
- else if(sgi_label)
- puts("Command action\n"
- " a select bootable partition\n" /* sgi flavour */
- " b edit bootfile entry\n" /* sgi */
- " c select sgi swap partition\n" /* sgi flavour */
- " d delete a partition\n"
- " l list known partition types\n"
- " m print this menu\n"
- " n add a new partition\n"
- " o create a new empty DOS partition table\n"
- " p print the partition table\n"
- " q quit without saving changes\n"
- " t change a partition's system id\n"
- " u change display/entry units\n"
- " v verify the partition table\n"
- " w write table to disk and exit\n"
- );
- else if(aix_label)
- puts("Command action\n"
- " m print this menu\n"
- " o create a new empty DOS partition table\n"
- " q quit without saving changes\n"
- );
- else
- puts("Command action\n"
- " a toggle a bootable flag\n"
- " b edit bsd disklabel\n"
- " c toggle the dos compatibility flag\n"
- " d delete a partition\n"
- " l list known partition types\n"
- " m print this menu\n"
- " n add a new partition\n"
- " o create a new empty DOS partition table\n"
- " p print the partition table\n"
- " q quit without saving changes\n"
- " t change a partition's system id\n"
- " u change display/entry units\n"
- " v verify the partition table\n"
- " w write table to disk and exit\n"
- " x extra functionality (experts only)"
- );
+ if (sun_label) {
+ puts(_("Command action"));
+ puts(_(" a toggle a read only flag")); /* sun */
+ puts(_(" b edit bsd disklabel"));
+ puts(_(" c toggle the mountable flag")); /* sun */
+ puts(_(" d delete a partition"));
+ puts(_(" l list known partition types"));
+ puts(_(" m print this menu"));
+ puts(_(" n add a new partition"));
+ puts(_(" o create a new empty DOS partition table"));
+ puts(_(" p print the partition table"));
+ puts(_(" q quit without saving changes"));
+ puts(_(" s create a new empty Sun disklabel")); /* sun */
+ puts(_(" t change a partition's system id"));
+ puts(_(" u change display/entry units"));
+ puts(_(" v verify the partition table"));
+ puts(_(" w write table to disk and exit"));
+ puts(_(" x extra functionality (experts only)"));
+ }
+ else if(sgi_label) {
+ puts(_("Command action"));
+ puts(_(" a select bootable partition")); /* sgi flavour */
+ puts(_(" b edit bootfile entry")); /* sgi */
+ puts(_(" c select sgi swap partition")); /* sgi flavour */
+ puts(_(" d delete a partition"));
+ puts(_(" l list known partition types"));
+ puts(_(" m print this menu"));
+ puts(_(" n add a new partition"));
+ puts(_(" o create a new empty DOS partition table"));
+ puts(_(" p print the partition table"));
+ puts(_(" q quit without saving changes"));
+ puts(_(" s create a new empty Sun disklabel")); /* sun */
+ puts(_(" t change a partition's system id"));
+ puts(_(" u change display/entry units"));
+ puts(_(" v verify the partition table"));
+ puts(_(" w write table to disk and exit"));
+ }
+ else if(aix_label) {
+ puts(_("Command action"));
+ puts(_(" m print this menu"));
+ puts(_(" o create a new empty DOS partition table"));
+ puts(_(" q quit without saving changes"));
+ puts(_(" s create a new empty Sun disklabel")); /* sun */
+ }
+ else {
+ puts(_("Command action"));
+ puts(_(" a toggle a bootable flag"));
+ puts(_(" b edit bsd disklabel"));
+ puts(_(" c toggle the dos compatibility flag"));
+ puts(_(" d delete a partition"));
+ puts(_(" l list known partition types"));
+ puts(_(" m print this menu"));
+ puts(_(" n add a new partition"));
+ puts(_(" o create a new empty DOS partition table"));
+ puts(_(" p print the partition table"));
+ puts(_(" q quit without saving changes"));
+ puts(_(" s create a new empty Sun disklabel")); /* sun */
+ puts(_(" t change a partition's system id"));
+ puts(_(" u change display/entry units"));
+ puts(_(" v verify the partition table"));
+ puts(_(" w write table to disk and exit"));
+ puts(_(" x extra functionality (experts only)"));
+ }
}
void xmenu(void)
{
- if (sun_label)
- puts("Command action\n"
- " a change number of alternate cylinders\n" /* sun */
- " c change number of cylinders\n"
- " d print the raw data in the partition table\n"
- " e change number of extra sectors per cylinder\n" /*sun*/
- " h change number of heads\n"
- " i change interleave factor\n" /* sun */
- " o change rotation speed (rpm)\n" /* sun */
- " m print this menu\n"
- " p print the partition table\n"
- " q quit without saving changes\n"
- " r return to main menu\n"
- " s change number of sectors\n"
- " v verify the partition table\n"
- " w write table to disk and exit\n"
- " y change number of physical cylinders" /* sun */
- );
- else
- puts("Command action\n"
- " b move beginning of data in a partition\n" /* !sun */
- " c change number of cylinders\n"
- " d print the raw data in the partition table\n"
- " e list extended partitions\n" /* !sun */
- " g create an IRIX partition table\n" /* sgi */
- " h change number of heads\n"
- " m print this menu\n"
- " p print the partition table\n"
- " q quit without saving changes\n"
- " r return to main menu\n"
- " s change number of sectors\n"
- " v verify the partition table\n"
- " w write table to disk and exit"
- );
+ if (sun_label) {
+ puts(_("Command action"));
+ puts(_(" a change number of alternate cylinders")); /*sun*/
+ puts(_(" c change number of cylinders"));
+ puts(_(" d print the raw data in the partition table"));
+ puts(_(" e change number of extra sectors per cylinder"));/*sun*/
+ puts(_(" h change number of heads"));
+ puts(_(" i change interleave factor")); /*sun*/
+ puts(_(" o change rotation speed (rpm)")); /*sun*/
+ puts(_(" m print this menu"));
+ puts(_(" p print the partition table"));
+ puts(_(" q quit without saving changes"));
+ puts(_(" r return to main menu"));
+ puts(_(" s change number of sectors/track"));
+ puts(_(" v verify the partition table"));
+ puts(_(" w write table to disk and exit"));
+ puts(_(" y change number of physical cylinders")); /*sun*/
+ }
+ else {
+ puts(_("Command action"));
+ puts(_(" b move beginning of data in a partition")); /* !sun */
+ puts(_(" c change number of cylinders"));
+ puts(_(" d print the raw data in the partition table"));
+ puts(_(" e list extended partitions")); /* !sun */
+ puts(_(" g create an IRIX partition table")); /* sgi */
+ puts(_(" h change number of heads"));
+ puts(_(" m print this menu"));
+ puts(_(" p print the partition table"));
+ puts(_(" q quit without saving changes"));
+ puts(_(" r return to main menu"));
+ puts(_(" s change number of sectors/track"));
+ puts(_(" v verify the partition table"));
+ puts(_(" w write table to disk and exit"));
+ }
}
int
@@ -428,7 +414,7 @@ struct systypes *
get_sys_types(void) {
return (
sun_label ? sun_sys_types :
- sgi_label ? sgi_sys_types : sys_types);
+ sgi_label ? sgi_sys_types : i386_sys_types);
}
char *partition_type(unsigned char type)
@@ -437,8 +423,8 @@ char *partition_type(unsigned char type)
struct systypes *types = get_sys_types();
for (i=0; types[i].name; i++)
- if (types[i].index == type)
- return types[i].name;
+ if (types[i].type == type)
+ return _(types[i].name);
return NULL;
}
@@ -457,7 +443,7 @@ void list_types(struct systypes *sys)
do {
printf("%c%2x %-15.15s", i ? ' ' : '\n',
- sys[next].index, sys[next].name);
+ sys[next].type, _(sys[next].name));
next = last[i++] + done;
if (i > 3 || next >= last[i]) {
i = 0;
@@ -501,7 +487,7 @@ int test_c(char **m, char *mesg)
{
int val = 0;
if (!*m)
- fprintf(stderr, "You must set");
+ fprintf(stderr, _("You must set"));
else {
fprintf(stderr, " %s", *m);
val = 1;
@@ -515,16 +501,16 @@ int warn_geometry(void)
char *m = NULL;
int prev = 0;
if (!heads)
- prev = test_c(&m, "heads");
+ prev = test_c(&m, _("heads"));
if (!sectors)
- prev = test_c(&m, "sectors");
+ prev = test_c(&m, _("sectors"));
if (!cylinders)
- prev = test_c(&m, "cylinders");
+ prev = test_c(&m, _("cylinders"));
if (!m)
return 0;
fprintf(stderr,
- "%s%s.\nYou can do this from the extra functions menu.\n",
- prev ? " and " : " ", m);
+ _("%s%s.\nYou can do this from the extra functions menu.\n"),
+ prev ? _(" and ") : " ", m);
return 1;
}
@@ -532,10 +518,10 @@ void update_units(void)
{
int cyl_units = heads * sectors;
- if (unit_flag && cyl_units)
- display_factor = cyl_units;
+ if (display_in_cyl_units && cyl_units)
+ units_per_sector = cyl_units;
else
- display_factor = 1; /* in sectors */
+ units_per_sector = 1; /* in sectors */
}
void warn_cylinders(void)
@@ -558,11 +544,14 @@ void read_extended(struct partition *p)
ext_pointers[ext_index] = part_table[ext_index];
if (!get_start_sect(p))
- fprintf(stderr, "Bad offset in primary extended partition\n");
+ fprintf(stderr, _("Bad offset in primary extended partition\n"));
else while (IS_EXTENDED (p->sys_ind)) {
if (partitions >= MAXIMUM_PARTS) {
+ /* This is not a Linux restriction, but
+ this program uses arrays of size MAXIMUM_PARTS.
+ Do not try to `improve' this test. */
fprintf(stderr,
- "Warning: deleting partitions after %d\n",
+ _("Warning: deleting partitions after %d\n"),
partitions);
clear_partition(ext_pointers[partitions - 1]);
changed[partitions - 1] = 1;
@@ -583,16 +572,16 @@ void read_extended(struct partition *p)
for (i = 0; i < 4; i++, p++) {
if (IS_EXTENDED (p->sys_ind)) {
if (ext_pointers[partitions])
- fprintf(stderr, "Warning: extra link "
+ fprintf(stderr, _("Warning: extra link "
"pointer in partition table "
- "%d\n", partitions + 1);
+ "%d\n"), partitions + 1);
else
ext_pointers[partitions] = p;
} else if (p->sys_ind) {
if (part_table[partitions])
fprintf(stderr,
- "Warning: ignoring extra data "
- "in partition table %d\n",
+ _("Warning: ignoring extra data "
+ "in partition table %d\n"),
partitions + 1);
else
part_table[partitions] = p;
@@ -617,9 +606,9 @@ void create_doslabel(void)
int i;
fprintf(stderr,
- "Building a new DOS disklabel. Changes will remain in memory only,\n"
- "until you decide to write them. After that, of course, the previous\n"
- "content won't be recoverable.\n\n");
+ _("Building a new DOS disklabel. Changes will remain in memory only,\n"
+ "until you decide to write them. After that, of course, the previous\n"
+ "content won't be recoverable.\n\n"));
sun_nolabel(); /* otherwise always recognised as sun */
sgi_nolabel(); /* otherwise always recognised as sgi */
@@ -653,9 +642,20 @@ int get_boot(enum action what)
if ((fd = open(disk_device, O_RDONLY)) < 0)
fatal(unable_to_open);
else
- printf("You will not be able to write the partition table.\n");
+ printf(_("You will not be able to write the partition table.\n"));
}
+#if defined(BLKSSZGET) && defined(HAVE_blkpg_h)
+ /* For a short while BLKSSZGET gave a wrong sector size */
+ { int arg;
+ if (ioctl(fd, BLKSSZGET, &arg) == 0)
+ sector_size = arg;
+ if (sector_size != DEFAULT_SECTOR_SIZE)
+ printf(_("Note: sector size is %d (not %d)\n"),
+ sector_size, DEFAULT_SECTOR_SIZE);
+ }
+#endif
+
guess_device_type(fd);
if (sector_size != read(fd, buffer, sector_size))
@@ -673,10 +673,11 @@ int get_boot(enum action what)
if (dos_compatible_flag)
sector_offset = sectors;
} else {
- if (!ioctl(fd, BLKGETSIZE, &sectors)) {
+ long longsectors;
+ if (!ioctl(fd, BLKGETSIZE, &longsectors)) {
heads = 1;
cylinders = 1;
- sectors /= sec_fac;
+ sectors = longsectors / sec_fac;
} else {
heads = cylinders = sectors = 0;
}
@@ -698,8 +699,8 @@ got_table:
switch(what) {
case fdisk:
fprintf(stderr,
- "Device contains neither a valid DOS partition"
- " table, nor Sun or SGI disklabel\n");
+ _("Device contains neither a valid DOS partition"
+ " table, nor Sun or SGI disklabel\n"));
#ifdef __sparc__
create_sunlabel();
#else
@@ -714,7 +715,7 @@ got_table:
break;
}
- fprintf(stderr, "Internal error\n");
+ fprintf(stderr, _("Internal error\n"));
exit(1);
}
@@ -724,15 +725,15 @@ got_table:
for (i = 0; i < 4; i++)
if(IS_EXTENDED (part_table[i]->sys_ind)) {
if (partitions != 4)
- fprintf(stderr, "Ignoring extra extended "
- "partition %d\n", i + 1);
+ fprintf(stderr, _("Ignoring extra extended "
+ "partition %d\n"), i + 1);
else read_extended(part_table[ext_index = i]);
}
for (i = 3; i < partitions; i++)
if (!valid_part_table_flag(buffers[i])) {
fprintf(stderr,
- "Warning: invalid flag 0x%04x of partition "
- "table %d will be corrected by w(rite)\n",
+ _("Warning: invalid flag 0x%04x of partition "
+ "table %d will be corrected by w(rite)\n"),
part_table_flag(buffers[i]), i + 1);
changed[i] = 1;
}
@@ -744,9 +745,19 @@ got_table:
int
read_line(void)
{
+ static int got_eof = 0;
+
line_ptr = line_buffer;
- if (!fgets(line_buffer, LINE_LENGTH, stdin))
+ if (!fgets(line_buffer, LINE_LENGTH, stdin)) {
+ if (feof(stdin))
+ got_eof++; /* user typed ^D ? */
+ if (got_eof >= 3) {
+ fflush(stdout);
+ fprintf(stderr, _("\ngot EOF thrice - exiting..\n"));
+ exit(1);
+ }
return 0;
+ }
while (*line_ptr && !isgraph(*line_ptr))
line_ptr++;
return *line_ptr;
@@ -779,7 +790,7 @@ read_hex(struct systypes *sys)
while (1)
{
- read_char("Hex code (type L to list codes): ");
+ read_char(_("Hex code (type L to list codes): "));
if (tolower(*line_ptr) == 'l')
list_types(sys);
else if (isxdigit (*line_ptr))
@@ -818,7 +829,7 @@ read_int(uint low, uint dflt, uint high, uint base, char *mesg)
default_ok = 0;
if (default_ok)
- sprintf(ms, "%s (%d-%d, default %d): ", mesg, low, high, dflt);
+ sprintf(ms, _("%s (%d-%d, default %d): "), mesg, low, high, dflt);
else
sprintf(ms, "%s (%d-%d): ", mesg, low, high);
@@ -839,26 +850,26 @@ read_int(uint low, uint dflt, uint high, uint base, char *mesg)
switch (*line_ptr) {
case 'c':
case 'C':
- if (!unit_flag)
+ if (!display_in_cyl_units)
i *= heads * sectors;
break;
case 'k':
case 'K':
i *= 2;
i /= (sector_size / 512);
- i /= display_factor;
+ i /= units_per_sector;
break;
case 'm':
case 'M':
i *= 2048;
i /= (sector_size / 512);
- i /= display_factor;
+ i /= units_per_sector;
break;
case 'g':
case 'G':
i *= 2048000;
i /= (sector_size / 512);
- i /= display_factor;
+ i /= units_per_sector;
break;
default:
break;
@@ -872,18 +883,18 @@ read_int(uint low, uint dflt, uint high, uint base, char *mesg)
}
}
if (use_default)
- printf("Using default value %d\n", i = dflt);
+ printf(_("Using default value %d\n"), i = dflt);
if (i >= low && i <= high)
break;
else
- printf("Value out of range.\n");
+ printf(_("Value out of range.\n"));
}
return i;
}
int get_partition(int warn, int max)
{
- int i = read_int(1, 0, max, 0, "Partition number") - 1;
+ int i = read_int(1, 0, max, 0, _("Partition number")) - 1;
if (warn && (
(!sun_label && !sgi_label && !part_table[i]->sys_ind)
@@ -891,23 +902,24 @@ int get_partition(int warn, int max)
(!sunlabel->partitions[i].num_sectors ||
!sunlabel->infos[i].id))
|| (sgi_label && (!sgi_get_num_sectors(i)))
- )) fprintf(stderr, "Warning: partition %d has empty type\n", i+1);
+ )) fprintf(stderr, _("Warning: partition %d has empty type\n"), i+1);
return i;
}
-char *const str_units(void)
+char *const str_units(int n) /* n==1: use singular */
{
- return unit_flag ? "cylinder" : "sector";
+ if (n == 1)
+ return display_in_cyl_units ? _("cylinder") : _("sector");
+ else
+ return display_in_cyl_units ? _("cylinders") : _("sectors");
}
void change_units(void)
{
- if ((unit_flag = !unit_flag))
- display_factor = 1;
- else display_factor = heads * sectors;
+ display_in_cyl_units = !display_in_cyl_units;
update_units();
- printf("Changing display/entry units to %ss\n",
- str_units());
+ printf(_("Changing display/entry units to %s\n"),
+ str_units(PLURAL));
}
void toggle_active(int i)
@@ -916,7 +928,7 @@ void toggle_active(int i)
if (IS_EXTENDED (p->sys_ind) && !p->boot_ind)
fprintf(stderr,
- "WARNING: Partition %d is an extended partition\n",
+ _("WARNING: Partition %d is an extended partition\n"),
i + 1);
if (p->boot_ind)
p->boot_ind = 0;
@@ -927,14 +939,14 @@ void toggle_active(int i)
void toggle_dos(void)
{
dos_compatible_flag = ~dos_compatible_flag;
- printf("DOS Compatibility flag is ");
- if (dos_compatible_flag)
+ if (dos_compatible_flag) {
sector_offset = sectors;
+ printf(_("DOS Compatibility flag is set\n"));
+ }
else {
sector_offset = 1;
- printf("not ");
+ printf(_("DOS Compatibility flag is not set\n"));
}
- printf("set\n");
}
void delete_partition(int i)
@@ -969,6 +981,7 @@ void delete_partition(int i)
else if (!q->sys_ind && i > 4) {
free(buffers[--partitions]);
clear_partition(ext_pointers[--i]);
+ changed[i] = 1;
}
else if (i > 3) {
if (i > 4) {
@@ -1018,39 +1031,39 @@ void change_sysid(void)
origsys = sys = get_sysid(i);
if (!sys && !sgi_label)
- printf("Partition %d does not exist yet!\n", i + 1);
+ printf(_("Partition %d does not exist yet!\n"), i + 1);
else while (1) {
sys = read_hex (get_sys_types());
if (!sys && !sgi_label) {
- printf("Type 0 means free space to many systems\n"
+ printf(_("Type 0 means free space to many systems\n"
"(but not to Linux). Having partitions of\n"
"type 0 is probably unwise. You can delete\n"
- "a partition using the `d' command.\n");
+ "a partition using the `d' command.\n"));
/* break; */
}
if (!sun_label && !sgi_label) {
if (IS_EXTENDED (sys) != IS_EXTENDED (p->sys_ind)) {
- printf("You cannot change a partition into"
+ printf(_("You cannot change a partition into"
" an extended one or vice versa\n"
- "Delete it first.\n");
+ "Delete it first.\n"));
break;
}
}
if (sys < 256) {
if (sun_label && i == 2 && sys != WHOLE_DISK)
- printf("Consider leaving partition 3 "
+ printf(_("Consider leaving partition 3 "
"as Whole disk (5),\n"
"as SunOS/Solaris expects it and "
- "even Linux likes it.\n\n");
+ "even Linux likes it.\n\n"));
if (sgi_label && ((i == 10 && sys != ENTIRE_DISK)
|| (i == 8 && sys != 0)))
- printf("Consider leaving partition 9 "
+ printf(_("Consider leaving partition 9 "
"as volume header (0),\nand "
"partition 11 as entire volume (6)"
- "as IRIX expects it.\n\n");
+ "as IRIX expects it.\n\n"));
if (sys == origsys)
break;
@@ -1061,10 +1074,10 @@ void change_sysid(void)
sgi_change_sysid(i, sys);
} else
part_table[i]->sys_ind = sys;
- printf ("Changed system type of partition %d "
- "to %x (%s)\n", i + 1, sys,
+ printf (_("Changed system type of partition %d "
+ "to %x (%s)\n"), i + 1, sys,
(temp = partition_type(sys)) ? temp :
- "Unknown");
+ _("Unknown"));
changed[i] = 1;
break;
}
@@ -1114,45 +1127,45 @@ static void check_consistency(struct partition *p, int partition)
/* Same physical / logical beginning? */
if (cylinders <= 1024 && (pbc != lbc || pbh != lbh || pbs != lbs)) {
- printf("Partition %d has different physical/logical "
- "beginnings (non-Linux?):\n", partition + 1);
- printf(" phys=(%d, %d, %d) ", pbc, pbh, pbs);
- printf("logical=(%d, %d, %d)\n",lbc, lbh, lbs);
+ printf(_("Partition %d has different physical/logical "
+ "beginnings (non-Linux?):\n"), partition + 1);
+ printf(_(" phys=(%d, %d, %d) "), pbc, pbh, pbs);
+ printf(_("logical=(%d, %d, %d)\n"),lbc, lbh, lbs);
}
/* Same physical / logical ending? */
if (cylinders <= 1024 && (pec != lec || peh != leh || pes != les)) {
- printf("Partition %d has different physical/logical "
- "endings:\n", partition + 1);
- printf(" phys=(%d, %d, %d) ", pec, peh, pes);
- printf("logical=(%d, %d, %d)\n",lec, leh, les);
+ printf(_("Partition %d has different physical/logical "
+ "endings:\n"), partition + 1);
+ printf(_(" phys=(%d, %d, %d) "), pec, peh, pes);
+ printf(_("logical=(%d, %d, %d)\n"),lec, leh, les);
}
#if 0
/* Beginning on cylinder boundary? */
if (pbh != !pbc || pbs != 1) {
- printf("Partition %i does not start on cylinder "
- "boundary:\n", partition + 1);
- printf(" phys=(%d, %d, %d) ", pbc, pbh, pbs);
- printf("should be (%d, %d, 1)\n", pbc, !pbc);
+ printf(_("Partition %i does not start on cylinder "
+ "boundary:\n"), partition + 1);
+ printf(_(" phys=(%d, %d, %d) "), pbc, pbh, pbs);
+ printf(_("should be (%d, %d, 1)\n"), pbc, !pbc);
}
#endif
/* Ending on cylinder boundary? */
if (peh != (heads - 1) || pes != sectors) {
- printf("Partition %i does not end on cylinder boundary:\n",
+ printf(_("Partition %i does not end on cylinder boundary:\n"),
partition + 1);
- printf(" phys=(%d, %d, %d) ", pec, peh, pes);
- printf("should be (%d, %d, %d)\n",
+ printf(_(" phys=(%d, %d, %d) "), pec, peh, pes);
+ printf(_("should be (%d, %d, %d)\n"),
pec, heads - 1, sectors);
}
}
void list_disk_geometry(void)
{
- printf("\nDisk %s: %d heads, %d sectors, %d cylinders\nUnits = "
- "%ss of %d * %d bytes\n\n", disk_device, heads, sectors,
- cylinders, str_units(), display_factor, sector_size);
+ printf(_("\nDisk %s: %d heads, %d sectors, %d cylinders\nUnits = "
+ "%s of %d * %d bytes\n\n"), disk_device, heads, sectors,
+ cylinders, str_units(PLURAL), units_per_sector, sector_size);
}
void list_table(int xtra)
@@ -1183,8 +1196,12 @@ void list_table(int xtra)
if (w < 5)
w = 5;
- printf("%*s Boot Start End Blocks Id System\n",
- (digit_last ? w + 2 : w + 1), "Device");
+
+ /* FIXME! let's see how this shows up with other languagues
+ acme@conectiva.com.br */
+
+ printf(_("%*s Boot Start End Blocks Id System\n"),
+ (digit_last ? w + 2 : w + 1), _("Device"));
for (i = 0 ; i < partitions; i++) {
if ((p = part_table[i])->sys_ind) {
@@ -1209,7 +1226,7 @@ void list_table(int xtra)
/* odd flag on end */ (long) pblocks, podd ? '+' : ' ',
/* type id */ p->sys_ind,
/* type name */ (type = partition_type(p->sys_ind)) ?
- type : "Unknown");
+ type : _("Unknown"));
check_consistency(p, i);
}
}
@@ -1224,9 +1241,9 @@ void x_list_table(int extend)
q = ext_pointers;
else
q = part_table;
- printf("\nDisk %s: %d heads, %d sectors, %d cylinders\n\n",
+ printf(_("\nDisk %s: %d heads, %d sectors, %d cylinders\n\n"),
disk_device, heads, sectors, cylinders);
- printf("Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n");
+ printf(_("Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n"));
for (i = 0 ; i < partitions; i++)
if ((p = q[i]) != NULL) {
printf("%2d %02x%4d%4d%5d%4d%4d%5d%8d%8d %02x\n",
@@ -1265,21 +1282,21 @@ void check(int n, uint h, uint s, uint c, uint start)
real_c = cylinder(s, c);
total = (real_c * sectors + real_s) * heads + h;
if (!total)
- fprintf(stderr, "Warning: partition %d contains sector 0\n", n);
+ fprintf(stderr, _("Warning: partition %d contains sector 0\n"), n);
if (h >= heads)
fprintf(stderr,
- "Partition %d: head %d greater than maximum %d\n",
+ _("Partition %d: head %d greater than maximum %d\n"),
n, h + 1, heads);
if (real_s >= sectors)
- fprintf(stderr, "Partition %d: sector %d greater than "
- "maximum %d\n", n, s, sectors);
+ fprintf(stderr, _("Partition %d: sector %d greater than "
+ "maximum %d\n"), n, s, sectors);
if (real_c >= cylinders)
- fprintf(stderr, "Partitions %d: cylinder %d greater than "
- "maximum %d\n", n, real_c + 1, cylinders);
+ fprintf(stderr, _("Partitions %d: cylinder %d greater than "
+ "maximum %d\n"), n, real_c + 1, cylinders);
if (cylinders <= 1024 && start != total)
fprintf(stderr,
- "Partition %d: previous sectors %d disagrees with "
- "total %d\n", n, start, total);
+ _("Partition %d: previous sectors %d disagrees with "
+ "total %d\n"), n, start, total);
}
@@ -1308,16 +1325,16 @@ void verify(void)
if (p->sys_ind && !IS_EXTENDED (p->sys_ind)) {
check_consistency(p, i);
if (get_start_sect(p) + offsets[i] < first[i])
- printf("Warning: bad start-of-data in "
- "partition %d\n", i + 1);
+ printf(_("Warning: bad start-of-data in "
+ "partition %d\n"), i + 1);
check(i + 1, p->end_head, p->end_sector, p->end_cyl,
last[i]);
total += last[i] + 1 - first[i];
for (j = 0; j < i; j++)
if ((first[i] >= first[j] && first[i] <= last[j])
|| ((last[i] <= last[j] && last[i] >= first[j]))) {
- printf("Warning: partition %d overlaps "
- "partition %d.\n", j + 1, i + 1);
+ printf(_("Warning: partition %d overlaps "
+ "partition %d.\n"), j + 1, i + 1);
total += first[i] >= first[j] ?
first[i] : first[j];
total -= last[i] <= last[j] ?
@@ -1334,21 +1351,21 @@ void verify(void)
total++;
if (!p->sys_ind) {
if (i != 4 || i + 1 < partitions)
- printf("Warning: partition %d "
- "is empty\n", i + 1);
+ printf(_("Warning: partition %d "
+ "is empty\n"), i + 1);
}
else if (first[i] < extended_offset ||
last[i] > e_last)
- printf("Logical partition %d not entirely in "
- "partition %d\n", i + 1, ext_index + 1);
+ printf(_("Logical partition %d not entirely in "
+ "partition %d\n"), i + 1, ext_index + 1);
}
}
if (total > heads * sectors * cylinders)
- printf("Total allocated sectors %d greater than the maximum "
- "%d\n", total, heads * sectors * cylinders);
+ printf(_("Total allocated sectors %d greater than the maximum "
+ "%d\n"), total, heads * sectors * cylinders);
else if ((total = heads * sectors * cylinders - total) != 0)
- printf("%d unallocated sectors\n", total);
+ printf(_("%d unallocated sectors\n"), total);
}
void add_partition(int n, int sys)
@@ -1360,8 +1377,8 @@ void add_partition(int n, int sys)
first[partitions], last[partitions];
if (p->sys_ind) {
- printf("Partition %d is already defined. Delete "
- "it before re-adding it.\n", n + 1);
+ printf(_("Partition %d is already defined. Delete "
+ "it before re-adding it.\n"), n + 1);
return;
}
fill_bounds(first, last);
@@ -1377,11 +1394,11 @@ void add_partition(int n, int sys)
start = extended_offset + sector_offset;
limit = get_start_sect(q) + get_nr_sects(q) - 1;
}
- if (unit_flag)
+ if (display_in_cyl_units)
for (i = 0; i < partitions; i++)
- first[i] = (cround(first[i]) - 1) * display_factor;
+ first[i] = (cround(first[i]) - 1) * units_per_sector;
- sprintf(mesg, "First %s", str_units());
+ sprintf(mesg, _("First %s"), str_units(SINGULAR));
do {
temp = start;
for (i = 0; i < partitions; i++) {
@@ -1395,8 +1412,8 @@ void add_partition(int n, int sys)
}
if (start > limit)
break;
- if (start >= temp+display_factor && read) {
- printf("Sector %d is already allocated\n", temp);
+ if (start >= temp+units_per_sector && read) {
+ printf(_("Sector %d is already allocated\n"), temp);
temp = start;
read = 0;
}
@@ -1405,15 +1422,21 @@ void add_partition(int n, int sys)
i = start;
start = read_int(cround(i), cround(i), cround(limit),
0, mesg);
- if (unit_flag) {
- start = (start - 1) * display_factor;
+ if (display_in_cyl_units) {
+ start = (start - 1) * units_per_sector;
if (start < i) start = i;
}
read = 1;
}
} while (start != temp || !read);
- if (n > 4) /* NOT for fifth partition */
+ if (n > 4) { /* NOT for fifth partition */
offsets[n] = start - sector_offset;
+ if (offsets[n] == extended_offset) { /* must be corrected */
+ offsets[n]++;
+ if (sector_offset == 1)
+ start++;
+ }
+ }
for (i = 0; i < partitions; i++) {
if (start < offsets[i] && limit >= offsets[i])
@@ -1422,22 +1445,22 @@ void add_partition(int n, int sys)
limit = first[i] - 1;
}
if (start > limit) {
- printf("No free sectors available\n");
+ printf(_("No free sectors available\n"));
if (n > 4) {
free(buffers[n]);
partitions--;
}
return;
}
- if (cround(start) == cround(limit))
- stop = start;
- else {
- sprintf(mesg, "Last %s or +size or +sizeM or +sizeK",
- str_units());
+ if (cround(start) == cround(limit)) {
+ stop = limit;
+ } else {
+ sprintf(mesg, _("Last %s or +size or +sizeM or +sizeK"),
+ str_units(SINGULAR));
stop = read_int(cround(start), cround(limit), cround(limit),
cround(start), mesg);
- if (unit_flag) {
- stop = stop * display_factor - 1;
+ if (display_in_cyl_units) {
+ stop = stop * units_per_sector - 1;
if (stop >limit)
stop = limit;
}
@@ -1455,16 +1478,15 @@ void add_partition(int n, int sys)
ext_pointers[4] = part_table[4] + 1;
changed[4] = 1;
partitions = 5;
- }
- else {
+ } else {
if (n > 4)
set_partition(n - 1, ext_pointers[n - 1],
- start - sector_offset, stop, EXTENDED,
+ offsets[n], stop, EXTENDED,
extended_offset);
#if 0
if ((limit = get_nr_sects(p)) & 1)
- printf("Warning: partition %d has an odd "
- "number of sectors.\n", n + 1);
+ printf(_("Warning: partition %d has an odd "
+ "number of sectors.\n"), n + 1);
#endif
}
}
@@ -1500,7 +1522,7 @@ void new_partition(void)
}
if (partitions >= MAXIMUM_PARTS) {
- printf("The maximum number of partitions has been created\n");
+ printf(_("The maximum number of partitions has been created\n"));
return;
}
@@ -1510,13 +1532,13 @@ void new_partition(void)
if (extended_offset)
add_logical();
else
- printf("You must delete some partition and add "
- "an extended partition first\n");
+ printf(_("You must delete some partition and add "
+ "an extended partition first\n"));
} else {
char c, line[LINE_LENGTH];
- sprintf(line, "Command action\n %s\n p primary "
- "partition (1-4)\n", extended_offset ?
- "l logical (5 or over)" : "e extended");
+ sprintf(line, _("Command action\n %s\n p primary "
+ "partition (1-4)\n"), extended_offset ?
+ _("l logical (5 or over)") : _("e extended"));
while (1)
if ((c = tolower(read_char(line))) == 'p') {
add_partition(get_partition(0, 4),
@@ -1533,8 +1555,8 @@ void new_partition(void)
return;
}
else
- printf("Invalid partition number "
- "for type `%c'\n", c);
+ printf(_("Invalid partition number "
+ "for type `%c'\n"), c);
}
}
@@ -1565,9 +1587,9 @@ void write_table(void)
}
}
- printf("The partition table has been altered!\n\n");
+ printf(_("The partition table has been altered!\n\n"));
- printf("Calling ioctl() to re-read partition table.\n");
+ printf(_("Calling ioctl() to re-read partition table.\n"));
sync();
sleep(2);
if ((i = ioctl(fd, BLKRRPART)) != 0) {
@@ -1584,20 +1606,20 @@ void write_table(void)
close(fd);
- printf("Syncing disks.\n");
+ printf(_("Syncing disks.\n"));
sync();
sleep(4); /* for sync() */
if (i < 0)
- printf("Re-read table failed with error %d: %s.\nReboot your "
- "system to ensure the partition table is updated.\n",
+ printf(_("Re-read table failed with error %d: %s.\nReboot your "
+ "system to ensure the partition table is updated.\n"),
error, strerror(error));
if (!sun_label && !sgi_label)
printf(
- "\nWARNING: If you have created or modified any DOS 6.x\n"
+ _("\nWARNING: If you have created or modified any DOS 6.x\n"
"partitions, please see the fdisk manual page for additional\n"
- "information.\n");
+ "information.\n"));
exit(0);
}
@@ -1626,7 +1648,7 @@ void print_raw(void)
{
int i;
- printf("Device: %s\n", disk_device);
+ printf(_("Device: %s\n"), disk_device);
if (sun_label || sgi_label)
print_buffer(buffer);
else for (i = 3; i < partitions; i++)
@@ -1641,13 +1663,13 @@ void move_begin(int i)
if (warn_geometry())
return;
if (!p->sys_ind || !get_nr_sects(p) || IS_EXTENDED (p->sys_ind)) {
- printf("Partition %d has no data area\n", i + 1);
+ printf(_("Partition %d has no data area\n"), i + 1);
return;
}
first = get_start_sect(p) + offsets[i];
new = read_int(first, first,
get_start_sect(p) + get_nr_sects(p) + offsets[i] - 1,
- first, "New beginning of data") - offsets[i];
+ first, _("New beginning of data")) - offsets[i];
if (new != get_nr_sects(p)) {
first = get_nr_sects(p) + get_start_sect(p) - new;
@@ -1661,7 +1683,7 @@ void xselect(void)
{
while(1) {
putchar('\n');
- switch (tolower(read_char("Expert command (m for help): "))) {
+ switch (tolower(read_char(_("Expert command (m for help): ")))) {
case 'a':
if (sun_label)
sun_set_alt_cyl();
@@ -1672,7 +1694,7 @@ void xselect(void)
break;
case 'c':
cylinders = read_int(1, cylinders, 65535,
- 0, "Number of cylinders");
+ 0, _("Number of cylinders"));
if (sun_label)
sun_set_ncyl(cylinders);
warn_cylinders();
@@ -1693,7 +1715,7 @@ void xselect(void)
break;
case 'h':
heads = read_int(1, heads, 256, 0,
- "Number of heads");
+ _("Number of heads"));
update_units();
break;
case 'i':
@@ -1712,17 +1734,18 @@ void xselect(void)
break;
case 'q':
close(fd);
+ printf("\n");
exit(0);
case 'r':
return;
case 's':
sectors = read_int(1, sectors, 63, 0,
- "Number of sectors");
+ _("Number of sectors"));
if (dos_compatible_flag) {
sector_offset = sectors;
- fprintf(stderr, "Warning: setting "
+ fprintf(stderr, _("Warning: setting "
"sector offset for DOS "
- "compatiblity\n");
+ "compatiblity\n"));
}
update_units();
break;
@@ -1782,8 +1805,8 @@ void try(char *device, int user_specified)
list_disk_geometry();
if (btrydev(device) < 0)
fprintf(stderr,
- "Disk %s doesn't contain a valid "
- "partition table\n", device);
+ _("Disk %s doesn't contain a valid "
+ "partition table\n"), device);
close(fd);
} else {
close(fd);
@@ -1796,39 +1819,52 @@ void try(char *device, int user_specified)
and SCSI hard disks which may not be
installed on the system. */
if(errno == EACCES) {
- fprintf(stderr, "Cannot open %s\n", device);
+ fprintf(stderr, _("Cannot open %s\n"), device);
return;
}
}
}
}
+int
+dir_exists(char *dirname) {
+ struct stat statbuf;
+
+ return (stat(dirname, &statbuf) == 0 && S_ISDIR(statbuf.st_mode));
+}
+
void
dummy(int *kk) {}
int
main(int argc, char **argv)
{
- int i, j, s, c;
+ int j, c;
int optl = 0, opts = 0;
- char *part;
+ int user_set_sector_size = 0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
/*
* Calls:
* fdisk -v
- * fdisk -l [-b sectorsize] [-u] [device] ...
+ * fdisk -l [-b sectorsize] [-u] device ...
* fdisk -s [partition] ...
- * fdisk [-b sectorsize] [-u] [device]
+ * fdisk [-b sectorsize] [-u] device
*/
while ((c = getopt(argc, argv, "b:lsuv")) != EOF) {
switch (c) {
case 'b':
+ /* ugly: this sector size is really per device,
+ so cannot be combined with multiple disks */
sector_size = atoi(optarg);
if (sector_size != 512 && sector_size != 1024 &&
sector_size != 2048)
fatal(usage);
sector_offset = 2;
+ user_set_sector_size = 1;
break;
case 'l':
optl = 1;
@@ -1837,7 +1873,7 @@ main(int argc, char **argv)
opts = 1;
break;
case 'u':
- unit_flag = 0;
+ display_in_cyl_units = 0;
break;
case 'v':
printf("fdisk v" UTIL_LINUX_VERSION "\n");
@@ -1847,6 +1883,14 @@ main(int argc, char **argv)
}
}
+#if 0
+ printf(_("This kernel finds the sector size itself - -b option ignored\n"));
+#else
+ if (user_set_sector_size && argc-optind != 1)
+ printf(_("Warning: the -b (set sector size) option should"
+ " be used with one specified device\n"));
+#endif
+
if (optl) {
listing = 1;
nowarn = 1;
@@ -1859,39 +1903,16 @@ main(int argc, char **argv)
for(k=optind; k<argc; k++)
try(argv[k], 1);
} else {
- try("/dev/hda", 0);
- try("/dev/hdb", 0);
- try("/dev/hdc", 0); /* often a CDROM */
- try("/dev/hdd", 0);
- try("/dev/sda", 0);
- try("/dev/sdb", 0);
- try("/dev/sdc", 0);
- try("/dev/sdd", 0);
- try("/dev/sde", 0);
- try("/dev/sdf", 0);
- try("/dev/sdg", 0);
- try("/dev/sdh", 0);
- try("/dev/eda", 0); /* PS/2 ESDI drives */
- try("/dev/edb", 0);
- try("/dev/edc", 0);
- try("/dev/edd", 0);
- try("/dev/rd/c0d0", 0); /* DAC960 RAID disks */
- try("/dev/rd/c0d1", 0);
- try("/dev/rd/c0d2", 0);
- try("/dev/rd/c0d3", 0);
- try("/dev/rd/c0d4", 0);
- try("/dev/rd/c0d5", 0);
- try("/dev/rd/c0d6", 0);
- try("/dev/rd/c0d7", 0);
+ /* we no longer have default device names */
+ fatal(usage2);
}
exit(0);
}
if (opts) {
- /* Very silly assumptions here about device naming */
- /* All this junk will disappear again */
+ long size;
+
nowarn = 1;
- disk_device = (char *) malloc(16);
type_open = O_RDONLY;
opts = argc - optind;
@@ -1899,46 +1920,16 @@ main(int argc, char **argv)
fatal(usage);
for (j = optind; j < argc; j++) {
- part = argv[j];
- if (strncmp(part, "/dev/rd/", 8) == 0) {
- char *p = strrchr(part, 'p');
- if (p == NULL)
- fatal(usage);
- if (!(i = atoi(p + 1)))
- fatal(usage);
- i--; /* count from 0 */
- *p = '\0';
- strcpy(disk_device, part);
- } else {
- if (strlen(part) < 9)
- fatal(usage);
- if (!(i = atoi(part + 8)))
- fatal(usage);
- i--; /* count from 0 */
- strncpy(disk_device, part, 8);
- disk_device[8] = 0;
- }
+ disk_device = argv[j];
if ((fd = open(disk_device, type_open)) < 0)
fatal(unable_to_open);
+ if (ioctl(fd, BLKGETSIZE, &size))
+ fatal(ioctl_error);
close(fd);
- if (get_boot(require) < 0)
- exit(1);
- if (i >= partitions)
- exit(1);
-#if defined(sparc)
- if (!sun_label) {
- int id = sunlabel->infos[i].id;
-
- if (!(id > 1 && id != WHOLE_DISK))
- exit(1);
- s = get_num_sectors(sunlabel->partitions[i]);
- } else
-#endif
- s = get_nr_sects(part_table[i]);
if (opts == 1)
- printf("%d\n", s/2);
+ printf("%ld\n", size/2);
else
- printf("%s: %d\n", argv[j], s/2);
+ printf("%s: %ld\n", argv[j], size/2);
}
exit(0);
}
@@ -1947,17 +1938,14 @@ main(int argc, char **argv)
disk_device = argv[optind];
else if (argc-optind != 0)
fatal(usage);
- else {
- if ((fd = open(DEFAULT_DEVICE, O_RDWR)) < 0)
- disk_device = ALTERNATE_DEVICE;
- else close(fd);
- printf("Using %s as default device!\n", disk_device);
- }
+ else
+ fatal(usage2);
+
get_boot(fdisk);
while (1) {
putchar('\n');
- switch (tolower(read_char("Command (m for help): "))) {
+ switch (tolower(read_char(_("Command (m for help): ")))) {
case 'a':
if (sun_label)
toggle_sunflags(get_partition(1, partitions),
@@ -1971,11 +1959,11 @@ main(int argc, char **argv)
break;
case 'b':
if (sgi_label) {
- printf("\nThe current boot file is: %s\n",
+ printf(_("\nThe current boot file is: %s\n"),
sgi_get_bootfile());
- if (read_chars("Please enter the name of the "
- "new boot file: ") == '\n')
- printf("Boot file unchanged\n");
+ if (read_chars(_("Please enter the name of the "
+ "new boot file: ")) == '\n')
+ printf(_("Boot file unchanged\n"));
else
sgi_set_bootfile(line_ptr);
} else
@@ -2015,6 +2003,7 @@ main(int argc, char **argv)
break;
case 'q':
close(fd);
+ printf("\n");
exit(0);
case 's':
create_sunlabel();
@@ -2034,8 +2023,8 @@ main(int argc, char **argv)
case 'x':
if( sgi_label ) {
fprintf(stderr,
- "\n\tSorry, no experts menu for SGI "
- "partition tables available.\n\n");
+ _("\n\tSorry, no experts menu for SGI "
+ "partition tables available.\n\n"));
} else
xselect();
break;
diff --git a/fdisk/fdisk.h b/fdisk/fdisk.h
index 080515e5f..ace1b0cd9 100644
--- a/fdisk/fdisk.h
+++ b/fdisk/fdisk.h
@@ -21,7 +21,8 @@
#define SIZE(a) (sizeof(a)/sizeof((a)[0]))
-#define cround(n) (((n) + display_factor * unit_flag) / display_factor)
+#define cround(n) (display_in_cyl_units ? ((n)/units_per_sector)+1 : (n))
+#define scround(x) (((x)+units_per_sector-1)/units_per_sector)
#if defined(__GNUC__) || defined(HAS_LONG_LONG)
typedef long long ext2_loff_t;
@@ -46,23 +47,19 @@ struct partition {
unsigned char size4[4]; /* nr of sectors in partition */
};
-enum failure {usage, unable_to_open, unable_to_read, unable_to_seek,
+enum failure {usage, usage2, ioctl_error,
+ unable_to_open, unable_to_read, unable_to_seek,
unable_to_write, out_of_memory, no_partition, no_device};
enum action {fdisk, require, try_only, create_empty};
-struct systypes {
- unsigned char index;
- char *name;
-};
-
/* prototypes for fdisk.c */
extern char *disk_device,
*line_ptr;
extern int fd,
partitions;
-extern uint unit_flag,
- display_factor;
+extern uint display_in_cyl_units,
+ units_per_sector;
extern struct partition *part_table[];
extern void fatal(enum failure why);
extern int get_boot(enum action what);
@@ -72,7 +69,10 @@ extern int read_line (void);
extern char read_char(char *mesg);
extern int read_hex(struct systypes *sys);
uint read_int(uint low, uint dflt, uint high, uint base, char *mesg);
-extern char *const str_units(void);
+
+#define PLURAL 0
+#define SINGULAR 1
+extern char *const str_units(int);
extern unsigned int get_start_sect(struct partition *p);
extern unsigned int get_nr_sects(struct partition *p);
diff --git a/fdisk/fdiskaixlabel.c b/fdisk/fdiskaixlabel.c
index 848a6ece8..7540f9a6d 100644
--- a/fdisk/fdiskaixlabel.c
+++ b/fdisk/fdiskaixlabel.c
@@ -1,3 +1,8 @@
+/*
+ Changes:
+ Sat Mar 20 09:51:38 EST 1999 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ Internationalization
+*/
#include <stdio.h> /* stderr */
#include <stdlib.h> /* uint */
#include <string.h> /* strstr */
@@ -5,8 +10,10 @@
#include <endian.h>
+#include "common.h"
#include "fdisk.h"
#include "fdiskaixlabel.h"
+#include "nls.h"
static int other_endian = 0;
static short volumes=1;
@@ -18,8 +25,8 @@ static short volumes=1;
void
aix_info( void )
{
- printf(
- "\n\tThere is a valid AIX label on this disk.\n"
+ puts(
+ _("\n\tThere is a valid AIX label on this disk.\n"
"\tUnfortunately Linux cannot handle these\n"
"\tdisks at the moment. Nevertheless some\n"
"\tadvice:\n"
@@ -29,7 +36,7 @@ aix_info( void )
"\t erase the other disks as well, if unmirrored.)\n"
"\t3. Before deleting this physical volume be sure\n"
"\t to remove the disk logically from your AIX\n"
- "\t machine. (Otherwise you become an AIXpert).\n"
+ "\t machine. (Otherwise you become an AIXpert).")
);
}
diff --git a/fdisk/fdiskbsdlabel.c b/fdisk/fdiskbsdlabel.c
index 8edec2331..64a792734 100644
--- a/fdisk/fdiskbsdlabel.c
+++ b/fdisk/fdiskbsdlabel.c
@@ -33,6 +33,9 @@
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
+
+ Changes:
+ 19990319 - Arnaldo Carvalho de Melo <acme@conectiva.com.br> - i18n/nls
*/
#include <unistd.h>
@@ -43,12 +46,14 @@
#include <ctype.h>
#include <setjmp.h>
#include <errno.h>
+#include "nls.h"
#include <sys/ioctl.h>
#include <sys/param.h>
#include <linux/hdreg.h> /* for HDIO_GETGEO */
+#include "common.h"
#include "fdisk.h"
#define NETBSD_PARTITION 0xa5
#define DKTYPENAMES
@@ -89,7 +94,7 @@ int
btrydev (char * dev) {
if (xbsd_readlabel (NULL, &xbsd_dlabel) == 0)
return -1;
- printf("\nBSD label for device: %s\n", dev);
+ printf(_("\nBSD label for device: %s\n"), dev);
xbsd_print_disklabel (0);
return 0;
}
@@ -97,25 +102,24 @@ btrydev (char * dev) {
void
bmenu (void)
{
- puts ("Command action\n"
- " d delete a BSD partition\n"
- " e edit drive data\n"
- " i install bootstrap\n"
- " l list known filesystem types\n"
- " m print this menu\n"
- " n add a new BSD partition\n"
- " p print BSD partition table\n"
- " q quit without saving changes\n"
+ puts (_("Command action"));
+ puts (_(" d delete a BSD partition"));
+ puts (_(" e edit drive data"));
+ puts (_(" i install bootstrap"));
+ puts (_(" l list known filesystem types"));
+ puts (_(" m print this menu"));
+ puts (_(" n add a new BSD partition"));
+ puts (_(" p print BSD partition table"));
+ puts (_(" q quit without saving changes"));
#if defined (i386) || defined (sparc)
- " r return to main menu\n"
+ puts (_(" r return to main menu"));
#endif
- " s show complete disklabel\n"
- " t change a partition's filesystem id\n"
- " w write disklabel to disk\n"
+ puts (_(" s show complete disklabel"));
+ puts (_(" t change a partition's filesystem id"));
+ puts (_(" w write disklabel to disk"));
#if defined (i386) || defined (sparc)
- " x link BSD partition to non-BSD partition"
+ puts (_(" x link BSD partition to non-BSD partition"));
#endif
- );
}
int
@@ -139,11 +143,11 @@ bselect (void) {
xbsd_part_index = t;
ss = get_start_sect(xbsd_part);
if (ss == 0) {
- fprintf (stderr, "Partition %s%d has invalid starting sector 0.\n",
+ fprintf (stderr, _("Partition %s%d has invalid starting sector 0.\n"),
disk_device, t+1);
return;
}
- printf ("Reading disklabel of %s%d at sector %d.\n",
+ printf (_("Reading disklabel of %s%d at sector %d.\n"),
disk_device, t+1, ss + BSD_LABELSECTOR);
if (xbsd_readlabel (xbsd_part, &xbsd_dlabel) == 0)
if (xbsd_create_disklabel () == 0)
@@ -152,7 +156,7 @@ bselect (void) {
}
if (t == 4) {
- printf ("There is no *BSD partition on %s.\n", disk_device);
+ printf (_("There is no *BSD partition on %s.\n"), disk_device);
return;
}
@@ -167,7 +171,7 @@ bselect (void) {
while (1)
{
putchar ('\n');
- switch (tolower (read_char ("BSD disklabel command (m for help): ")))
+ switch (tolower (read_char (_("BSD disklabel command (m for help): "))))
{
case 'd':
xbsd_delete_part ();
@@ -245,18 +249,18 @@ xbsd_new_part (void)
end = xbsd_dlabel.d_secperunit;
#endif
- sprintf (mesg, "First %s", str_units());
+ sprintf (mesg, _("First %s"), str_units(SINGULAR));
begin = read_int (cround (begin), cround (begin), cround (end),
0, mesg);
- sprintf (mesg, "Last %s or +size or +sizeM or +sizeK", str_units());
+ sprintf (mesg, _("Last %s or +size or +sizeM or +sizeK"), str_units(SINGULAR));
end = read_int (cround (begin), cround (end), cround (end),
cround (begin), mesg);
- if (unit_flag)
+ if (display_in_cyl_units)
{
- begin = (begin - 1) * display_factor;
- end = end * display_factor - 1;
+ begin = (begin - 1) * units_per_sector;
+ end = end * units_per_sector - 1;
}
xbsd_dlabel.d_partitions[i].p_size = end - begin + 1;
xbsd_dlabel.d_partitions[i].p_offset = begin;
@@ -279,33 +283,33 @@ xbsd_print_disklabel (int show_all)
fprintf(f, "# %s:\n", disk_device);
#endif
if ((unsigned) lp->d_type < BSD_DKMAXTYPES)
- fprintf(f, "type: %s\n", xbsd_dktypenames[lp->d_type]);
+ fprintf(f, _("type: %s\n"), xbsd_dktypenames[lp->d_type]);
else
- fprintf(f, "type: %d\n", lp->d_type);
- fprintf(f, "disk: %.*s\n", (int) sizeof(lp->d_typename), lp->d_typename);
- fprintf(f, "label: %.*s\n", (int) sizeof(lp->d_packname), lp->d_packname);
- fprintf(f, "flags:");
+ fprintf(f, _("type: %d\n"), lp->d_type);
+ fprintf(f, _("disk: %.*s\n"), (int) sizeof(lp->d_typename), lp->d_typename);
+ fprintf(f, _("label: %.*s\n"), (int) sizeof(lp->d_packname), lp->d_packname);
+ fprintf(f, _("flags:"));
if (lp->d_flags & BSD_D_REMOVABLE)
- fprintf(f, " removable");
+ fprintf(f, _(" removable"));
if (lp->d_flags & BSD_D_ECC)
- fprintf(f, " ecc");
+ fprintf(f, _(" ecc"));
if (lp->d_flags & BSD_D_BADSECT)
- fprintf(f, " badsect");
+ fprintf(f, _(" badsect"));
fprintf(f, "\n");
/* On various machines the fields of *lp are short/int/long */
/* In order to avoid problems, we cast them all to long. */
- fprintf(f, "bytes/sector: %ld\n", (long) lp->d_secsize);
- fprintf(f, "sectors/track: %ld\n", (long) lp->d_nsectors);
- fprintf(f, "tracks/cylinder: %ld\n", (long) lp->d_ntracks);
- fprintf(f, "sectors/cylinder: %ld\n", (long) lp->d_secpercyl);
- fprintf(f, "cylinders: %ld\n", (long) lp->d_ncylinders);
- fprintf(f, "rpm: %d\n", lp->d_rpm);
- fprintf(f, "interleave: %d\n", lp->d_interleave);
- fprintf(f, "trackskew: %d\n", lp->d_trackskew);
- fprintf(f, "cylinderskew: %d\n", lp->d_cylskew);
- fprintf(f, "headswitch: %ld\t\t# milliseconds\n", (long) lp->d_headswitch);
- fprintf(f, "track-to-track seek: %ld\t# milliseconds\n", (long) lp->d_trkseek);
- fprintf(f, "drivedata: ");
+ fprintf(f, _("bytes/sector: %ld\n"), (long) lp->d_secsize);
+ fprintf(f, _("sectors/track: %ld\n"), (long) lp->d_nsectors);
+ fprintf(f, _("tracks/cylinder: %ld\n"), (long) lp->d_ntracks);
+ fprintf(f, _("sectors/cylinder: %ld\n"), (long) lp->d_secpercyl);
+ fprintf(f, _("cylinders: %ld\n"), (long) lp->d_ncylinders);
+ fprintf(f, _("rpm: %d\n"), lp->d_rpm);
+ fprintf(f, _("interleave: %d\n"), lp->d_interleave);
+ fprintf(f, _("trackskew: %d\n"), lp->d_trackskew);
+ fprintf(f, _("cylinderskew: %d\n"), lp->d_cylskew);
+ fprintf(f, _("headswitch: %ld\t\t# milliseconds\n"), (long) lp->d_headswitch);
+ fprintf(f, _("track-to-track seek: %ld\t# milliseconds\n"), (long) lp->d_trkseek);
+ fprintf(f, _("drivedata: "));
for (i = NDDATA - 1; i >= 0; i--)
if (lp->d_drivedata[i])
break;
@@ -314,8 +318,8 @@ xbsd_print_disklabel (int show_all)
for (j = 0; j <= i; j++)
fprintf(f, "%ld ", (long) lp->d_drivedata[j]);
}
- fprintf (f, "\n%d partitions:\n", lp->d_npartitions);
- fprintf (f, "# size offset fstype [fsize bsize cpg]\n");
+ fprintf (f, _("\n%d partitions:\n"), lp->d_npartitions);
+ fprintf (f, _("# size offset fstype [fsize bsize cpg]\n"));
pp = lp->d_partitions;
for (i = 0; i < lp->d_npartitions; i++, pp++) {
if (pp->p_size) {
@@ -371,10 +375,10 @@ static void
xbsd_write_disklabel (void)
{
#if defined (i386) || defined (sparc)
- printf ("Writing disklabel to %s%d.\n", disk_device, xbsd_part_index+1);
+ printf (_("Writing disklabel to %s%d.\n"), disk_device, xbsd_part_index+1);
xbsd_writelabel (xbsd_part, &xbsd_dlabel);
#elif defined (__alpha__)
- printf ("Writing disklabel to %s.\n", disk_device);
+ printf (_("Writing disklabel to %s.\n"), disk_device);
xbsd_writelabel (NULL, &xbsd_dlabel);
#endif
}
@@ -385,14 +389,14 @@ xbsd_create_disklabel (void)
char c;
#if defined (i386) || defined (sparc)
- fprintf (stderr, "%s%d contains no disklabel.\n",
+ fprintf (stderr, _("%s%d contains no disklabel.\n"),
disk_device, xbsd_part_index+1);
#elif defined (__alpha__)
- fprintf (stderr, "%s contains no disklabel.\n", disk_device);
+ fprintf (stderr, _("%s contains no disklabel.\n"), disk_device);
#endif
while (1)
- if ((c = tolower (read_char ("Do you want to create a disklabel? (y/n) "))) == 'y')
+ if ((c = tolower (read_char (_("Do you want to create a disklabel? (y/n) ")))) == 'y')
{
#if defined (i386) || defined (sparc)
if (xbsd_initlabel (xbsd_part, &xbsd_dlabel, xbsd_part_index) == 1)
@@ -431,28 +435,28 @@ xbsd_edit_disklabel (void)
d = &xbsd_dlabel;
#ifdef __alpha__
- d -> d_secsize = (u_long) edit_int ((u_long) d -> d_secsize ,"bytes/sector");
- d -> d_nsectors = (u_long) edit_int ((u_long) d -> d_nsectors ,"sectors/track");
- d -> d_ntracks = (u_long) edit_int ((u_long) d -> d_ntracks ,"tracks/cylinder");
- d -> d_ncylinders = (u_long) edit_int ((u_long) d -> d_ncylinders ,"cylinders");
+ d -> d_secsize = (u_long) edit_int ((u_long) d -> d_secsize ,_("bytes/sector"));
+ d -> d_nsectors = (u_long) edit_int ((u_long) d -> d_nsectors ,_("sectors/track"));
+ d -> d_ntracks = (u_long) edit_int ((u_long) d -> d_ntracks ,_("tracks/cylinder"));
+ d -> d_ncylinders = (u_long) edit_int ((u_long) d -> d_ncylinders ,_("cylinders"));
#endif
/* d -> d_secpercyl can be != d -> d_nsectors * d -> d_ntracks */
while (1)
{
d -> d_secpercyl = (u_long) edit_int ((u_long) d -> d_nsectors * d -> d_ntracks,
- "sectors/cylinder");
+ _("sectors/cylinder"));
if (d -> d_secpercyl <= d -> d_nsectors * d -> d_ntracks)
break;
- printf ("Must be <= sectors/track * tracks/cylinder (default).\n");
+ printf (_("Must be <= sectors/track * tracks/cylinder (default).\n"));
}
- d -> d_rpm = (u_short) edit_int ((u_short) d -> d_rpm ,"rpm");
- d -> d_interleave = (u_short) edit_int ((u_short) d -> d_interleave,"interleave");
- d -> d_trackskew = (u_short) edit_int ((u_short) d -> d_trackskew ,"trackskew");
- d -> d_cylskew = (u_short) edit_int ((u_short) d -> d_cylskew ,"cylinderskew");
- d -> d_headswitch = (u_long) edit_int ((u_long) d -> d_headswitch ,"headswitch");
- d -> d_trkseek = (u_long) edit_int ((u_long) d -> d_trkseek ,"track-to-track seek");
+ d -> d_rpm = (u_short) edit_int ((u_short) d -> d_rpm ,_("rpm"));
+ d -> d_interleave = (u_short) edit_int ((u_short) d -> d_interleave,_("interleave"));
+ d -> d_trackskew = (u_short) edit_int ((u_short) d -> d_trackskew ,_("trackskew"));
+ d -> d_cylskew = (u_short) edit_int ((u_short) d -> d_cylskew ,_("cylinderskew"));
+ d -> d_headswitch = (u_long) edit_int ((u_long) d -> d_headswitch ,_("headswitch"));
+ d -> d_trkseek = (u_long) edit_int ((u_long) d -> d_trkseek ,_("track-to-track seek"));
d -> d_secperunit = d -> d_secpercyl * d -> d_ncylinders;
}
@@ -493,7 +497,7 @@ xbsd_write_bootstrap (void)
else
dkbasename = "wd";
- printf ("Bootstrap: %sboot -> boot%s (%s): ", dkbasename, dkbasename, dkbasename);
+ printf (_("Bootstrap: %sboot -> boot%s (%s): "), dkbasename, dkbasename, dkbasename);
if (read_line ())
{
line_ptr[strlen (line_ptr)-1] = '\0';
@@ -519,7 +523,7 @@ xbsd_write_bootstrap (void)
for (p=d; p < e; p++)
if (*p)
{
- fprintf (stderr, "Bootstrap overlaps with disk label!\n");
+ fprintf (stderr, _("Bootstrap overlaps with disk label!\n"));
exit ( EXIT_FAILURE );
}
@@ -540,9 +544,9 @@ xbsd_write_bootstrap (void)
fatal (unable_to_write);
#if defined (i386) || defined (sparc)
- printf ("Bootstrap installed on %s%d.\n", disk_device, xbsd_part_index+1);
+ printf (_("Bootstrap installed on %s%d.\n"), disk_device, xbsd_part_index+1);
#elif defined (__alpha__)
- printf ("Bootstrap installed on %s.\n", disk_device);
+ printf (_("Bootstrap installed on %s.\n"), disk_device);
#endif
sync_disks ();
@@ -563,7 +567,7 @@ xbsd_get_part_index (int max)
char prompt[40];
char l;
- sprintf (prompt, "Partition (a-%c): ", 'a' + max - 1);
+ sprintf (prompt, _("Partition (a-%c): "), 'a' + max - 1);
do
l = tolower (read_char (prompt));
while (l < 'a' || l > 'a' + max - 1);
@@ -583,7 +587,7 @@ xbsd_check_new_partition (int *i)
if (t == BSD_MAXPARTITIONS)
{
- fprintf (stderr, "The maximum number of partitions has been created\n");
+ fprintf (stderr, _("The maximum number of partitions has been created\n"));
return 0;
}
}
@@ -594,7 +598,7 @@ xbsd_check_new_partition (int *i)
if (xbsd_dlabel.d_partitions[*i].p_size != 0)
{
- fprintf (stderr, "This partition already exists.\n");
+ fprintf (stderr, _("This partition already exists.\n"));
return 0;
}
return 1;
@@ -716,7 +720,7 @@ xbsd_readlabel (struct partition *p, struct xbsd_disklabel *d)
return 0;
if (d -> d_npartitions > BSD_MAXPARTITIONS)
- fprintf (stderr, "Warning: too many partitions (%d, maximum is %d).\n",
+ fprintf (stderr, _("Warning: too many partitions (%d, maximum is %d).\n"),
d -> d_npartitions, BSD_MAXPARTITIONS);
return 1;
}
@@ -762,7 +766,7 @@ xbsd_writelabel (struct partition *p, struct xbsd_disklabel *d)
static void
sync_disks (void)
{
- printf ("\nSyncing disks.\n");
+ printf (_("\nSyncing disks.\n"));
sync ();
sleep (4);
}
diff --git a/fdisk/fdisksgilabel.c b/fdisk/fdisksgilabel.c
index 42f7363e4..25ed31a3e 100644
--- a/fdisk/fdisksgilabel.c
+++ b/fdisk/fdisksgilabel.c
@@ -5,6 +5,9 @@
* Copyright (C) Andreas Neuper, Sep 1998.
* This file may be modified and redistributed under
* the terms of the GNU Public License.
+ *
+ * Sat Mar 20 EST 1999 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * Internationalization
*/
#include <stdio.h> /* stderr */
#include <stdlib.h> /* uint */
@@ -15,9 +18,11 @@
#include <assert.h> /* assert */
#include <endian.h>
+#include "nls.h"
#include <linux/major.h> /* FLOPPY_MAJOR */
#include <linux/hdreg.h> /* HDIO_GETGEO */
+#include "common.h"
#include "fdisk.h"
#include "fdisksgilabel.h"
@@ -47,23 +52,22 @@ int isinfreelist( int b ) \
/*
* end of free blocks section
*/
-
struct systypes sgi_sys_types[] = {
- {SGI_VOLHDR, "SGI volhdr"},
- {0x01, "SGI trkrepl"},
- {0x02, "SGI secrepl"},
- {SGI_SWAP, "SGI raw"},
- {0x04, "SGI bsd"},
- {0x05, "SGI sysv"},
- {ENTIRE_DISK, "SGI volume"},
- {SGI_EFS, "SGI efs"},
- {0x08, "SGI lvol"},
- {0x09, "SGI rlvol"},
- {0x0A, "SGI xfs"},
- {0x0B, "SGI xlvol"},
- {0x0C, "SGI rxlvol"},
- {LINUX_SWAP, "Linux swap"},
- {LINUX_NATIVE,"Linux native"},
+ {SGI_VOLHDR, N_("SGI volhdr")},
+ {0x01, N_("SGI trkrepl")},
+ {0x02, N_("SGI secrepl")},
+ {SGI_SWAP, N_("SGI raw")},
+ {0x04, N_("SGI bsd")},
+ {0x05, N_("SGI sysv")},
+ {ENTIRE_DISK, N_("SGI volume")},
+ {SGI_EFS, N_("SGI efs")},
+ {0x08, N_("SGI lvol")},
+ {0x09, N_("SGI rlvol")},
+ {0x0A, N_("SGI xfs")},
+ {0x0B, N_("SGI xlvol")},
+ {0x0C, N_("SGI rxlvol")},
+ {LINUX_SWAP, N_("Linux swap")},
+ {LINUX_NATIVE,N_("Linux native")},
{0, NULL }
};
@@ -136,8 +140,8 @@ int check_sgi_label()
{
if (sizeof(sgilabel) > 512) {
fprintf(stderr,
- "According to MIPS Computer Systems, Inc the "
- "Label must not contain more than 512 bytes\n");
+ _("According to MIPS Computer Systems, Inc the "
+ "Label must not contain more than 512 bytes\n"));
exit(1);
}
@@ -155,7 +159,7 @@ int check_sgi_label()
if( two_s_complement_32bit_sum( (unsigned int*)sgilabel,
sizeof(*sgilabel) ) )
{
- fprintf( stderr, "Detected sgi disklabel with wrong checksum.\n" );
+ fprintf( stderr, _("Detected sgi disklabel with wrong checksum.\n"));
} else
{
heads = sgi_get_ntrks();
@@ -179,27 +183,28 @@ sgi_list_table( int xtra )
if( xtra )
{
- printf( "\nDisk %s (SGI disk label): %d heads, %d sectors\n"
+ printf(_("\nDisk %s (SGI disk label): %d heads, %d sectors\n"
"%d cylinders, %d physical cylinders\n"
"%d extra sects/cyl, interleave %d:1\n"
"%s\n"
- "Units = %ss of %d * 512 bytes\n\n",
+ "Units = %s of %d * 512 bytes\n\n"),
disk_device, heads, sectors, cylinders,
SSWAP16(sgiparam.pcylcount),
SSWAP16(sgiparam.sparecyl),
SSWAP16(sgiparam.ilfact),
(char *)sgilabel,
- str_units(), display_factor);
+ str_units(PLURAL), units_per_sector);
} else
{
- printf( "\nDisk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n"
- "Units = %ss of %d * 512 bytes\n\n",
+ printf( _("\nDisk %s (SGI disk label): "
+ "%d heads, %d sectors, %d cylinders\n"
+ "Units = %s of %d * 512 bytes\n\n"),
disk_device, heads, sectors, cylinders,
- str_units(), display_factor );
+ str_units(PLURAL), units_per_sector );
}
- printf("----- partitions -----\n"
- "%*s Info Start End Sectors Id System\n",
- w + 1, "Device");
+ printf(_("----- partitions -----\n"
+ "%*s Info Start End Sectors Id System\n"),
+ w + 1, _("Device"));
for (i = 0 ; i < partitions; i++)
{
if( sgi_get_num_sectors(i) || debug )
@@ -216,12 +221,12 @@ sgi_list_table( int xtra )
/* no odd flag on end */ (long) len,
/* type id */ sgi_get_sysid(i),
/* type name */ (type = partition_type(sgi_get_sysid(i)))
- ? type : "Unknown");
+ ? type : _("Unknown"));
}
}
- printf( "----- bootinfo -----\nBootfile: %s\n"
- "----- directory entries -----\n",
- sgilabel->boot_file );
+ printf(_("----- bootinfo -----\nBootfile: %s\n"
+ "----- directory entries -----\n"),
+ sgilabel->boot_file );
for (i = 0 ; i < volumes; i++)
{
if (sgilabel->directory[i].vol_file_size)
@@ -229,7 +234,7 @@ sgi_list_table( int xtra )
__u32 start = SSWAP32(sgilabel->directory[i].vol_file_start);
__u32 len = SSWAP32(sgilabel->directory[i].vol_file_size);
char*name = sgilabel->directory[i].vol_file_name;
- printf("%2d: %-10s sector%5u size%8u\n",
+ printf(_("%2d: %-10s sector%5u size%8u\n"),
i, name, (unsigned int) start, (unsigned int) len);
}
}
@@ -290,25 +295,25 @@ sgi_check_bootfile( const char* aFile )
{
if( strlen( aFile ) < 3 ) /* "/a\n" is minimum */
{
- printf( "\nInvalid Bootfile!\n"
+ printf( _("\nInvalid Bootfile!\n"
"\tThe bootfile must be an absolute non-zero pathname,\n"
- "\te.g. \"/unix\" or \"/unix.save\".\n" );
+ "\te.g. \"/unix\" or \"/unix.save\".\n") );
return 0;
} else
if( strlen( aFile ) > 16 )
{
- printf( "\n\tName of Bootfile too long: 16 bytes maximum.\n" );
+ printf( _("\n\tName of Bootfile too long: 16 bytes maximum.\n") );
return 0;
} else
if( aFile[0] != '/' )
{
- printf( "\n\tBootfile must have a fully qualified pathname.\n" );
+ printf( _("\n\tBootfile must have a fully qualified pathname.\n") );
return 0;
}
if( strncmp( aFile, sgilabel->boot_file, 16 ) )
{
- printf( "\n\tBe aware, that the bootfile is not checked for existence.\n\t"
- "SGI's default is \"/unix\" and for backup \"/unix.save\".\n" );
+ printf( _("\n\tBe aware, that the bootfile is not checked for existence.\n\t"
+ "SGI's default is \"/unix\" and for backup \"/unix.save\".\n") );
/* filename is correct and did change */
return 1;
}
@@ -335,7 +340,7 @@ sgi_set_bootfile( const char* aFile )
sgilabel->boot_file[i] = 0;
i++;
}
- printf( "\n\tBootfile is changed to \"%s\".\n", sgilabel->boot_file );
+ printf( _("\n\tBootfile is changed to \"%s\".\n"), sgilabel->boot_file );
}
return;
}
@@ -385,7 +390,7 @@ sgi_write_table( void )
static
int
-compare_start( int*x, int*y )
+compare_start( int *x, int *y )
{
/*
* sort according to start sectors
@@ -423,7 +428,6 @@ verify_sgi( int verbose )
{
int Index[16]; /* list of valid partitions */
int sortcount = 0; /* number of used partitions, i.e. non-zero lengths */
- int compare_start();/* comparison function above */
int entire = 0, i = 0; /* local counters */
int start = 0;
int gap = 0; /* count unused blocks */
@@ -441,7 +445,7 @@ verify_sgi( int verbose )
if( entire++ == 1 )
{
if(verbose)
- printf("More than one entire disk entriy present.\n");
+ printf(_("More than one entire disk entry present.\n"));
}
}
}
@@ -449,27 +453,27 @@ verify_sgi( int verbose )
if( sortcount == 0 )
{
if(verbose)
- printf("No partitions defined\n");
+ printf(_("No partitions defined\n"));
return lastblock;
}
qsort( Index, sortcount, sizeof(Index[0]), (void*)compare_start );
if( sgi_get_sysid( Index[0] ) == ENTIRE_DISK )
{
if( ( Index[0] != 10 ) && verbose )
- printf( "IRIX likes when Partition 11 covers the entire disk.\n" );
+ printf( _("IRIX likes when Partition 11 covers the entire disk.\n") );
if( ( sgi_get_start_sector( Index[0] ) != 0 ) && verbose )
- printf( "The entire disk partition should start at block 0,\nnot "
- "at diskblock %d.\n", sgi_get_start_sector(Index[0] ) );
+ printf( _("The entire disk partition should start at block 0,\nnot "
+ "at diskblock %d.\n"), sgi_get_start_sector(Index[0] ) );
if(debug) /* I do not understand how some disks fulfil it */
if( ( sgi_get_num_sectors( Index[0] ) != lastblock ) && verbose )
- printf( "The entire disk partition is only %d diskblock large,\n"
- "but the disk is %d diskblocks long.\n",
+ printf( _("The entire disk partition is only %d diskblock large,\n"
+ "but the disk is %d diskblocks long.\n"),
sgi_get_num_sectors( Index[0] ), lastblock );
lastblock = sgi_get_num_sectors( Index[0] );
} else
{
if( verbose )
- printf( "One Partition (#11) should cover the entire disk.\n" );
+ printf( _("One Partition (#11) should cover the entire disk.\n") );
if(debug>2)
printf( "sysid=%d\tpartition=%d\n",
sgi_get_sysid( Index[0] ), Index[0]+1 );
@@ -481,14 +485,14 @@ verify_sgi( int verbose )
{
if(debug) /* I do not understand how some disks fulfil it */
if( verbose )
- printf( "Partition %d does not start on cylinder boundary.\n",
+ printf( _("Partition %d does not start on cylinder boundary.\n"),
Index[i]+1 );
}
if( sgi_get_num_sectors( Index[i] ) % cylsize != 0 )
{
if(debug) /* I do not understand how some disks fulfil it */
if( verbose )
- printf( "Partition %d does not end on cylinder boundary.\n",
+ printf( _("Partition %d does not end on cylinder boundary.\n"),
Index[i]+1 );
}
/* We cannot handle several "entire disk" entries. */
@@ -496,7 +500,7 @@ verify_sgi( int verbose )
if( start > sgi_get_start_sector( Index[i] ) )
{
if( verbose )
- printf( "The Partition %d and %d overlap by %d sectors.\n",
+ printf( _("The Partition %d and %d overlap by %d sectors.\n"),
Index[i-1]+1, Index[i]+1,
start - sgi_get_start_sector( Index[i] ) );
if( gap > 0 ) gap = -gap;
@@ -505,7 +509,7 @@ verify_sgi( int verbose )
if( start < sgi_get_start_sector( Index[i] ) )
{
if( verbose )
- printf( "Unused gap of %8d sectors - sectors %8d-%d\n",
+ printf( _("Unused gap of %8d sectors - sectors %8d-%d\n"),
sgi_get_start_sector( Index[i] ) - start,
start, sgi_get_start_sector( Index[i] )-1 );
gap += sgi_get_start_sector( Index[i] ) - start;
@@ -525,7 +529,7 @@ verify_sgi( int verbose )
if( ( start < lastblock ) )
{
if( verbose )
- printf( "Unused gap of %8d sectors - sectors %8d-%d\n",
+ printf( _("Unused gap of %8d sectors - sectors %8d-%d\n"),
lastblock - start, start, lastblock-1 );
gap += lastblock - start;
add2freelist( start, lastblock );
@@ -538,20 +542,20 @@ verify_sgi( int verbose )
{
if( !sgi_get_num_sectors( sgi_get_bootpartition() ) )
{
- printf( "\nThe boot partition does not exist.\n" );
+ printf( _("\nThe boot partition does not exist.\n") );
}
if( !sgi_get_num_sectors( sgi_get_swappartition() ) )
{
- printf( "\nThe swap partition does not exist.\n" );
+ printf( _("\nThe swap partition does not exist.\n") );
} else
if( ( sgi_get_sysid( sgi_get_swappartition() ) != SGI_SWAP )
&& ( sgi_get_sysid( sgi_get_swappartition() ) != LINUX_SWAP ) )
{
- printf( "\nThe swap partition has no swap type.\n" );
+ printf( _("\nThe swap partition has no swap type.\n") );
}
if( sgi_check_bootfile( "/unix" ) )
{
- printf( "\tYou have chosen an unusual boot file name.\n" );
+ printf( _("\tYou have chosen an unusual boot file name.\n") );
}
}
return gap;
@@ -562,18 +566,18 @@ sgi_change_sysid( int i, int sys )
{
if( sgi_get_num_sectors(i) == 0 ) /* caught already before, ... */
{
- printf("Sorry You may change the Tag of non-empty partitions.\n");
+ printf(_("Sorry You may change the Tag of non-empty partitions.\n"));
return;
}
if( ((sys != ENTIRE_DISK ) && (sys != SGI_VOLHDR))
&& (sgi_get_start_sector(i)<1) )
{
read_chars(
- "It is highly recommended that the partition at offset 0\n"
+ _("It is highly recommended that the partition at offset 0\n"
"is of type \"SGI volhdr\", the IRIX system will rely on it to\n"
"retrieve from its directory standalone tools like sash and fx.\n"
"Only the \"SGI volume\" entire disk section may violate this.\n"
- "Type YES if you are sure about tagging this partition differently.\n" );
+ "Type YES if you are sure about tagging this partition differently.\n"));
if (strcmp (line_ptr, "YES\n"))
return;
}
@@ -614,9 +618,7 @@ sgi_set_partition( int i, uint start, uint length, int sys )
SSWAP32( start );
changed[i] = 1;
if( sgi_gaps(0) < 0 ) /* rebuild freelist */
- {
- printf( "Do You know, You got a partition overlap on the disk?\n" );
- }
+ printf(_("Do You know, You got a partition overlap on the disk?\n"));
return;
}
@@ -679,38 +681,36 @@ sgi_add_partition( int n, int sys )
}
if( sgi_get_num_sectors(n) )
{
- printf( "Partition %d is already defined. Delete "
- "it before re-adding it.\n", n + 1);
+ printf(_("Partition %d is already defined. Delete "
+ "it before re-adding it.\n"), n + 1);
return;
}
if( (sgi_entire() == -1)
&& (sys != SGI_VOLUME) )
{
- printf( "Attempting to generate entire disk entry automatically.\n" );
+ printf(_("Attempting to generate entire disk entry automatically.\n"));
sgi_set_entire();
sgi_set_volhdr();
}
if( (sgi_gaps() == 0)
&& (sys != SGI_VOLUME) )
{
- printf( "The entire disk is already covered with partitions.\n" );
+ printf(_("The entire disk is already covered with partitions.\n"));
return;
}
if( sgi_gaps() < 0 )
{
- printf( "You got a partition overlap on the disk. Fix it first!\n" );
+ printf(_("You got a partition overlap on the disk. Fix it first!\n"));
return;
}
- sprintf(mesg, "First %s", str_units());
- for(;;)
- {
- if(sys == SGI_VOLUME)
- {
+ sprintf(mesg, _("First %s"), str_units(SINGULAR));
+ for(;;) {
+ if(sys == SGI_VOLUME) {
last = sgi_get_lastblock();
first = read_int(0, 0, last-1, 0, mesg);
if( first != 0 ) {
- printf( "It is highly recommended that eleventh partition\n"
- "covers the entire disk and is of type `SGI volume'\n");
+ printf(_("It is highly recommended that eleventh partition\n"
+ "covers the entire disk and is of type `SGI volume'\n"));
}
} else {
first = freelist[0].first;
@@ -718,30 +718,28 @@ sgi_add_partition( int n, int sys )
first = read_int(scround(first), scround(first), scround(last)-1,
0, mesg);
}
- if (unit_flag)
- first *= display_factor;
+ if (display_in_cyl_units)
+ first *= units_per_sector;
else
first = first; /* align to cylinder if you know how ... */
if( !last )
last = isinfreelist(first);
if( last == 0 ) {
- printf( "You will get a partition overlap on the disk. "
- "Fix it first!\n" );
+ printf(_("You will get a partition overlap on the disk. "
+ "Fix it first!\n"));
} else
break;
}
- sprintf(mesg, " Last %s", str_units());
+ sprintf(mesg, _(" Last %s"), str_units(SINGULAR));
last = read_int(scround(first), scround(last)-1, scround(last)-1,
scround(first), mesg)+1;
- if (unit_flag)
- last *= display_factor;
+ if (display_in_cyl_units)
+ last *= units_per_sector;
else
last = last; /* align to cylinder if You know how ... */
if( (sys == SGI_VOLUME) && ( first != 0 || last != sgi_get_lastblock() ) )
- {
- printf( "It is highly recommended that eleventh partition\n"
- "covers the entire disk and is of type `SGI volume'\n");
- }
+ printf(_("It is highly recommended that eleventh partition\n"
+ "covers the entire disk and is of type `SGI volume'\n"));
sgi_set_partition( n, first, last-first, sys );
return;
}
@@ -755,9 +753,9 @@ create_sgilabel( void )
int sysid; } old[4];
int i=0;
fprintf( stderr,
- "Building a new SGI disklabel. Changes will remain in memory only,\n"
+ _("Building a new SGI disklabel. Changes will remain in memory only,\n"
"until you decide to write them. After that, of course, the previous\n"
- "content will be unrecoverable lost.\n\n");
+ "content will be unrecoverable lost.\n\n"));
#if BYTE_ORDER == LITTLE_ENDIAN
other_endian = 1;
#else
@@ -783,9 +781,9 @@ create_sgilabel( void )
old[i].sysid = part_table[i]->sys_ind;
old[i].start = get_start_sect( part_table[i] );
old[i].nsect = get_nr_sects( part_table[i] );
- printf( "Trying to keep parameters of partition %d.\n", i );
+ printf( _("Trying to keep parameters of partition %d.\n"), i );
if( debug )
- printf( "ID=%02x\tSTART=%d\tLENGTH=%d\n",
+ printf( _("ID=%02x\tSTART=%d\tLENGTH=%d\n"),
old[i].sysid, old[i].start, old[i].nsect );
}
}
diff --git a/fdisk/fdisksgilabel.h b/fdisk/fdisksgilabel.h
index 6eb7293f9..fa35f8f3e 100644
--- a/fdisk/fdisksgilabel.h
+++ b/fdisk/fdisksgilabel.h
@@ -91,7 +91,6 @@ typedef struct {
: (__u16)(x))
#define SSWAP32(x) (other_endian ? __swap32(x) \
: (__u32)(x))
-#define scround(x) ((x+(display_factor-1)*unit_flag)/display_factor)
/* fdisk.c */
#define sgilabel ((sgi_partition *)buffer)
diff --git a/fdisk/fdisksunlabel.c b/fdisk/fdisksunlabel.c
index 708377379..d484e7932 100644
--- a/fdisk/fdisksunlabel.c
+++ b/fdisk/fdisksunlabel.c
@@ -5,6 +5,9 @@
* Jakub Jelinek (jj@sunsite.mff.cuni.cz), July 1996
*
* Merged with fdisk for other architectures, aeb, June 1998.
+ *
+ * Sat Mar 20 EST 1999 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * Internationalization
*/
#include <stdio.h> /* stderr */
@@ -13,14 +16,19 @@
#include <unistd.h> /* write */
#include <sys/ioctl.h> /* ioctl */
#include <sys/stat.h> /* stat */
+#include "nls.h"
#include <endian.h>
-#if 1
+#include "../defines.h" /* for HAVE_scsi_h */
+#ifdef HAVE_scsi_h
+#define u_char unsigned char
#include <scsi/scsi.h> /* SCSI_IOCTL_GET_IDLUN */
+#undef u_char
#endif
#include <linux/major.h> /* FLOPPY_MAJOR */
#include <linux/hdreg.h> /* HDIO_GETGEO */
+#include "common.h"
#include "fdisk.h"
#include "fdisksunlabel.h"
@@ -32,17 +40,17 @@ static int floppy = 0;
#define LINUX_NATIVE 0x83
struct systypes sun_sys_types[] = {
- {0, "Empty"},
- {1, "Boot"},
- {2, "SunOS root"},
- {SUNOS_SWAP, "SunOS swap"},
- {4, "SunOS usr"},
- {WHOLE_DISK, "Whole disk"},
- {6, "SunOS stand"},
- {7, "SunOS var"},
- {8, "SunOS home"},
- {LINUX_SWAP, "Linux swap"},
- {LINUX_NATIVE, "Linux native"},
+ {0, N_("Empty")},
+ {1, N_("Boot")},
+ {2, N_("SunOS root")},
+ {SUNOS_SWAP, N_("SunOS swap")},
+ {4, N_("SunOS usr")},
+ {WHOLE_DISK, N_("Whole disk")},
+ {6, N_("SunOS stand")},
+ {7, N_("SunOS var")},
+ {8, N_("SunOS home")},
+ {LINUX_SWAP, N_("Linux swap")},
+ {LINUX_NATIVE, N_("Linux native")},
{ 0, NULL }
};
@@ -111,10 +119,10 @@ int check_sun_label(void)
ush = ((unsigned short *) (sunlabel + 1)) - 1;
for (csum = 0; ush >= (unsigned short *)sunlabel;) csum ^= *ush--;
if (csum) {
- fprintf(stderr, "Detected sun disklabel with wrong checksum.\n"
+ fprintf(stderr,_("Detected sun disklabel with wrong checksum.\n"
"Probably you'll have to set all the values,\n"
"e.g. heads, sectors, cylinders and partitions\n"
- "or force a fresh label (s command in main menu)\n");
+ "or force a fresh label (s command in main menu)\n"));
} else {
heads = SSWAP16(sunlabel->ntrks);
cylinders = SSWAP16(sunlabel->ncyl);
@@ -204,7 +212,7 @@ sun_autoconfigure_scsi() {
continue;
if (!strstr(model, sun_drives[i].model))
continue;
- printf("Autoconfigure found a %s%s%s\n",sun_drives[i].vendor,(*sun_drives[i].vendor) ? " " : "",sun_drives[i].model);
+ printf(_("Autoconfigure found a %s%s%s\n"),sun_drives[i].vendor,(*sun_drives[i].vendor) ? " " : "",sun_drives[i].model);
p = sun_drives + i;
break;
}
@@ -230,9 +238,10 @@ void create_sunlabel(void)
unsigned char c;
struct sun_predefined_drives *p = NULL;
- fprintf(stderr, "Building a new sun disklabel. Changes will remain in memory only,\n"
- "until you decide to write them. After that, of course, the previous\n"
- "content won't be recoverable.\n\n");
+ fprintf(stderr,
+ _("Building a new sun disklabel. Changes will remain in memory only,\n"
+ "until you decide to write them. After that, of course, the previous\n"
+ "content won't be recoverable.\n\n"));
#if BYTE_ORDER == LITTLE_ENDIAN
other_endian = 1;
#else
@@ -241,9 +250,9 @@ void create_sunlabel(void)
memset(buffer, 0, SECTOR_SIZE);
sunlabel->magic = SSWAP16(SUN_LABEL_MAGIC);
if (!floppy) {
- puts("Drive type\n"
+ puts(_("Drive type\n"
" ? auto configure\n"
- " 0 custom (with hardware detected defaults)");
+ " 0 custom (with hardware detected defaults)"));
for (i = 0; i < SIZE(sun_drives); i++) {
printf(" %c %s%s%s\n",
i + 'a', sun_drives[i].vendor,
@@ -251,7 +260,7 @@ void create_sunlabel(void)
sun_drives[i].model);
}
for (;;) {
- c = read_char("Select type (? for auto, 0 for custom): ");
+ c = read_char(_("Select type (? for auto, 0 for custom): "));
if (c >= 'a' && c < 'a' + SIZE(sun_drives)) {
p = sun_drives + c - 'a';
break;
@@ -263,7 +272,7 @@ void create_sunlabel(void)
} else if (c == '?' && scsi_disk) {
p = sun_autoconfigure_scsi();
if (!p)
- printf("Autoconfigure failed.\n");
+ printf(_("Autoconfigure failed.\n"));
else
break;
}
@@ -290,26 +299,26 @@ void create_sunlabel(void)
sunlabel->ilfact = SSWAP16(1);
sunlabel->sparecyl = 0;
} else {
- heads = read_int(1,heads,1024,0,"Heads");
- sectors = read_int(1,sectors,1024,0,"Sectors/track");
+ heads = read_int(1,heads,1024,0,_("Heads"));
+ sectors = read_int(1,sectors,1024,0,_("Sectors/track"));
if (cylinders)
- cylinders = read_int(1,cylinders-2,65535,0,"Cylinders");
+ cylinders = read_int(1,cylinders-2,65535,0,_("Cylinders"));
else
- cylinders = read_int(1,0,65535,0,"Cylinders");
+ cylinders = read_int(1,0,65535,0,_("Cylinders"));
sunlabel->nacyl =
SSWAP16(read_int(0,2,65535,0,
- "Alternate cylinders"));
+ _("Alternate cylinders")));
sunlabel->pcylcount =
SSWAP16(read_int(0,cylinders+SSWAP16(sunlabel->nacyl),
- 65535,0,"Physical cylinders"));
+ 65535,0,_("Physical cylinders")));
sunlabel->rspeed =
SSWAP16(read_int(1,5400,100000,0,
- "Rotation speed (rpm)"));
+ _("Rotation speed (rpm)")));
sunlabel->ilfact =
- SSWAP16(read_int(1,1,32,0,"Interleave factor"));
+ SSWAP16(read_int(1,1,32,0,_("Interleave factor")));
sunlabel->sparecyl =
SSWAP16(read_int(0,0,sectors,0,
- "Extra sectors per cylinder"));
+ _("Extra sectors per cylinder")));
}
} else {
sunlabel->sparecyl = SSWAP16(p->sparecyl);
@@ -322,10 +331,10 @@ void create_sunlabel(void)
cylinders = p->ncyl;
heads = p->ntrks;
sectors = p->nsect;
- puts("You may change all the disk params from the x menu");
+ puts(_("You may change all the disk params from the x menu"));
}
sprintf(buffer, "%s%s%s cyl %d alt %d hd %d sec %d",
- p ? p->vendor : "", (p && *p->vendor) ? " " : "", p ? p->model : (floppy ? "3,5\" floppy" : "Linux custom"),
+ p ? p->vendor : "", (p && *p->vendor) ? " " : "", p ? p->model : (floppy ? _("3,5\" floppy") : _("Linux custom")),
cylinders, SSWAP16(sunlabel->nacyl), heads, sectors);
sunlabel->ntrks = SSWAP16(heads);
sunlabel->nsect = SSWAP16(sectors);
@@ -406,7 +415,7 @@ void verify_sun(void)
for (k = 0; k < 7; k++) {
for (i = 0; i < 8; i++) {
if (k && (lens[i] % (heads * sectors))) {
- printf("Partition %d doesn't end on cylinder boundary\n", i+1);
+ printf(_("Partition %d doesn't end on cylinder boundary\n"), i+1);
}
if (lens[i]) {
for (j = 0; j < i; j++)
@@ -426,8 +435,8 @@ void verify_sun(void)
endo = starts[i]+lens[i];
if (starts[j]+lens[j] < endo)
endo = starts[j]+lens[j];
- printf("Partition %d overlaps with others in "
- "sectors %d-%d\n", i+1, starto, endo);
+ printf(_("Partition %d overlaps with others in "
+ "sectors %d-%d\n"), i+1, starto, endo);
}
}
}
@@ -443,18 +452,18 @@ void verify_sun(void)
qsort(array,SIZE(array),sizeof(array[0]),
(int (*)(const void *,const void *)) verify_sun_cmp);
if (array[0] == -1) {
- printf("No partitions defined\n");
+ printf(_("No partitions defined\n"));
return;
}
stop = cylinders * heads * sectors;
if (starts[array[0]])
- printf("Unused gap - sectors 0-%d\n",starts[array[0]]);
+ printf(_("Unused gap - sectors 0-%d\n"),starts[array[0]]);
for (i = 0; i < 7 && array[i+1] != -1; i++) {
- printf("Unused gap - sectors %d-%d\n",starts[array[i]]+lens[array[i]],starts[array[i+1]]);
+ printf(_("Unused gap - sectors %d-%d\n"),starts[array[i]]+lens[array[i]],starts[array[i+1]]);
}
start = starts[array[i]]+lens[array[i]];
if (start < stop)
- printf("Unused gap - sectors %d-%d\n",start,stop);
+ printf(_("Unused gap - sectors %d-%d\n"),start,stop);
}
void add_sun_partition(int n, int sys)
@@ -467,8 +476,8 @@ void add_sun_partition(int n, int sys)
int i, first, last;
if (sunlabel->partitions[n].num_sectors && sunlabel->infos[n].id) {
- printf("Partition %d is already defined. Delete "
- "it before re-adding it.\n", n + 1);
+ printf(_("Partition %d is already defined. Delete "
+ "it before re-adding it.\n"), n + 1);
return;
}
@@ -477,20 +486,20 @@ void add_sun_partition(int n, int sys)
if (n == 2)
whole_disk = 1;
else {
- printf("Other partitions already cover the whole disk.\nDelete "
- "some/shrink them before retry.\n");
+ printf(_("Other partitions already cover the whole disk.\nDelete "
+ "some/shrink them before retry.\n"));
return;
}
}
- sprintf(mesg, "First %s", str_units());
+ sprintf(mesg, _("First %s"), str_units(SINGULAR));
for (;;) {
if (whole_disk)
first = read_int(0, 0, 0, 0, mesg);
else
first = read_int(scround(start), scround(stop)+1,
scround(stop), 0, mesg);
- if (unit_flag)
- first *= display_factor;
+ if (display_in_cyl_units)
+ first *= units_per_sector;
else
/* Starting sector has to be properly aligned */
first = (first + heads * sectors - 1) / (heads * sectors);
@@ -507,7 +516,7 @@ and is of type `Whole disk'\n");
whole_disk = 1;
break;
}
- printf("Sector %d is already allocated\n", first);
+ printf(_("Sector %d is already allocated\n"), first);
} else
break;
}
@@ -517,7 +526,7 @@ and is of type `Whole disk'\n");
if (starts[i] > first && starts[i] < stop)
stop = starts[i];
}
- sprintf(mesg, "Last %s or +size or +sizeM or +sizeK", str_units());
+ sprintf(mesg, _("Last %s or +size or +sizeM or +sizeK"), str_units(SINGULAR));
if (whole_disk)
last = read_int(scround(stop2), scround(stop2), scround(stop2),
0, mesg);
@@ -527,16 +536,19 @@ and is of type `Whole disk'\n");
else
last = read_int(scround(first), scround(stop), scround(stop),
scround(first), mesg);
- if (unit_flag)
- last *= display_factor;
+ if (display_in_cyl_units)
+ last *= units_per_sector;
if (n == 2 && !first) {
if (last >= stop2) {
whole_disk = 1;
last = stop2;
} else if (last > stop) {
- printf ("You haven't covered whole disk with 3rd partition, but your value\n"
- "%d %s coveres some other partition. Your entry have been changed\n"
- "to %d %s\n", scround(last), str_units(), scround(stop), str_units());
+ printf (
+ _("You haven't covered the whole disk with the 3rd partition, but your value\n"
+ "%d %s covers some other partition. Your entry has been changed\n"
+ "to %d %s\n"),
+ scround(last), str_units(SINGULAR),
+ scround(stop), str_units(SINGULAR));
last = stop;
}
} else if (!whole_disk && last > stop)
@@ -552,10 +564,10 @@ sun_delete_partition(int i) {
!sunlabel->partitions[i].start_cylinder &&
SSWAP32(sunlabel->partitions[i].num_sectors)
== heads * sectors * cylinders)
- printf("If you want to maintain SunOS/Solaris compatibility, "
+ printf(_("If you want to maintain SunOS/Solaris compatibility, "
"consider leaving this\n"
"partition as Whole disk (5), starting at 0, with %u "
- "sectors\n",
+ "sectors\n"),
(uint) SSWAP32(sunlabel->partitions[i].num_sectors));
sunlabel->infos[i].id = 0;
sunlabel->partitions[i].num_sectors = 0;
@@ -565,11 +577,11 @@ void
sun_change_sysid(int i, int sys) {
if (sys == LINUX_SWAP && !sunlabel->partitions[i].start_cylinder) {
read_chars(
- "It is highly recommended that the partition at offset 0\n"
+ _("It is highly recommended that the partition at offset 0\n"
"is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n"
"there may destroy your partition table and bootblock.\n"
"Type YES if you're very sure you would like that partition\n"
- "tagged with 82 (Linux swap): ");
+ "tagged with 82 (Linux swap): "));
if (strcmp (line_ptr, "YES\n"))
return;
}
@@ -595,26 +607,28 @@ sun_list_table(int xtra) {
w = strlen(disk_device);
if (xtra)
- printf("\nDisk %s (Sun disk label): %d heads, %d sectors, %d rpm\n"
- "%d cylinders, %d alternate cylinders, %d physical cylinders\n"
- "%d extra sects/cyl, interleave %d:1\n"
- "%s\n"
- "Units = %ss of %d * 512 bytes\n\n",
+ printf(
+ _("\nDisk %s (Sun disk label): %d heads, %d sectors, %d rpm\n"
+ "%d cylinders, %d alternate cylinders, %d physical cylinders\n"
+ "%d extra sects/cyl, interleave %d:1\n"
+ "%s\n"
+ "Units = %s of %d * 512 bytes\n\n"),
disk_device, heads, sectors, SSWAP16(sunlabel->rspeed),
cylinders, SSWAP16(sunlabel->nacyl),
SSWAP16(sunlabel->pcylcount),
SSWAP16(sunlabel->sparecyl),
SSWAP16(sunlabel->ilfact),
(char *)sunlabel,
- str_units(), display_factor);
+ str_units(PLURAL), units_per_sector);
else
- printf("\nDisk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n"
- "Units = %ss of %d * 512 bytes\n\n",
+ printf(
+ _("\nDisk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n"
+ "Units = %s of %d * 512 bytes\n\n"),
disk_device, heads, sectors, cylinders,
- str_units(), display_factor);
+ str_units(PLURAL), units_per_sector);
- printf("%*s Flag Start End Blocks Id System\n",
- w + 1, "Device");
+ printf(_("%*s Flag Start End Blocks Id System\n"),
+ w + 1, _("Device"));
for (i = 0 ; i < partitions; i++) {
if (sunlabel->partitions[i].num_sectors) {
__u32 start = SSWAP32(sunlabel->partitions[i].start_cylinder) * heads * sectors;
@@ -629,7 +643,7 @@ sun_list_table(int xtra) {
/* odd flag on end */ (long) len / 2, len & 1 ? '+' : ' ',
/* type id */ sunlabel->infos[i].id,
/* type name */ (type = partition_type(sunlabel->infos[i].id))
- ? type : "Unknown");
+ ? type : _("Unknown"));
}
}
}
@@ -638,7 +652,7 @@ void
sun_set_alt_cyl(void) {
sunlabel->nacyl =
SSWAP16(read_int(0,SSWAP16(sunlabel->nacyl), 65535, 0,
- "Number of alternate cylinders"));
+ _("Number of alternate cylinders")));
}
void
@@ -650,28 +664,28 @@ void
sun_set_xcyl(void) {
sunlabel->sparecyl =
SSWAP16(read_int(0, SSWAP16(sunlabel->sparecyl), sectors, 0,
- "Extra sectors per cylinder"));
+ _("Extra sectors per cylinder")));
}
void
sun_set_ilfact(void) {
sunlabel->ilfact =
SSWAP16(read_int(1, SSWAP16(sunlabel->ilfact), 32, 0,
- "Interleave factor"));
+ _("Interleave factor")));
}
void
sun_set_rspeed(void) {
sunlabel->rspeed =
SSWAP16(read_int(1, SSWAP16(sunlabel->rspeed), 100000, 0,
- "Rotation speed (rpm)"));
+ _("Rotation speed (rpm)")));
}
void
sun_set_pcylcount(void) {
sunlabel->pcylcount =
SSWAP16(read_int(0, SSWAP16(sunlabel->pcylcount), 65535, 0,
- "Number of physical cylinders"));
+ _("Number of physical cylinders")));
}
void
diff --git a/fdisk/fdisksunlabel.h b/fdisk/fdisksunlabel.h
index d9d3706d3..1a75713c8 100644
--- a/fdisk/fdisksunlabel.h
+++ b/fdisk/fdisksunlabel.h
@@ -36,8 +36,6 @@ typedef struct {
#define SSWAP32(x) (other_endian ? __swap32(x) \
: (__u32)(x))
-#define scround(x) ((x+(display_factor-1)*unit_flag)/display_factor)
-
/* fdisk.c */
extern char changed[MAXIMUM_PARTS];
extern char buffer[MAX_SECTOR_SIZE];
diff --git a/fdisk/i386_sys_types.c b/fdisk/i386_sys_types.c
new file mode 100644
index 000000000..f3624724e
--- /dev/null
+++ b/fdisk/i386_sys_types.c
@@ -0,0 +1,86 @@
+/* DOS partition types */
+#include "common.h"
+#include "nls.h"
+
+struct systypes i386_sys_types[] = {
+ {0x00, N_("Empty")},
+ {0x01, N_("FAT12")},
+ {0x02, N_("XENIX root")},
+ {0x03, N_("XENIX usr")},
+ {0x04, N_("FAT16 <32M")},
+ {0x05, N_("Extended")}, /* DOS 3.3+ extended partition */
+ {0x06, N_("FAT16")}, /* DOS 16-bit >=32M */
+ {0x07, N_("HPFS/NTFS")}, /* OS/2 IFS, eg, HPFS or NTFS or QNX */
+ {0x08, N_("AIX")}, /* AIX boot (AIX -- PS/2 port) or SplitDrive */
+ {0x09, N_("AIX bootable")}, /* AIX data or Coherent */
+ {0x0a, N_("OS/2 Boot Manager")},/* OS/2 Boot Manager */
+ {0x0b, N_("Win95 FAT32")},
+ {0x0c, N_("Win95 FAT32 (LBA)")},/* LBA really is `Extended Int 13h' */
+ {0x0e, N_("Win95 FAT16 (LBA)")},
+ {0x0f, N_("Win95 Ext'd (LBA)")},
+ {0x10, N_("OPUS")},
+ {0x11, N_("Hidden FAT12")},
+ {0x12, N_("Compaq diagnostics")},
+ {0x14, N_("Hidden FAT16 <32M")},
+ {0x16, N_("Hidden FAT16")},
+ {0x17, N_("Hidden HPFS/NTFS")},
+ {0x18, N_("AST Windows swapfile")},
+ {0x1b, N_("Hidden Win95 FAT32")},
+ {0x1c, N_("Hidden Win95 FAT32 (LBA)")},
+ {0x1e, N_("Hidden Win95 FAT16 (LBA)")},
+ {0x24, N_("NEC DOS")},
+ {0x3c, N_("PartitionMagic recovery")},
+ {0x40, N_("Venix 80286")},
+ {0x41, N_("PPC PReP Boot")},
+ {0x42, N_("SFS")},
+ {0x4d, N_("QNX4.x")},
+ {0x4e, N_("QNX4.x 2nd part")},
+ {0x4f, N_("QNX4.x 3rd part")},
+ {0x50, N_("OnTrack DM")},
+ {0x51, N_("OnTrack DM6 Aux1")}, /* (or Novell) */
+ {0x52, N_("CP/M")}, /* CP/M or Microport SysV/AT */
+ {0x53, N_("OnTrack DM6 Aux3")},
+ {0x54, N_("OnTrackDM6")},
+ {0x55, N_("EZ-Drive")},
+ {0x56, N_("Golden Bow")},
+ {0x5c, N_("Priam Edisk")},
+ {0x61, N_("SpeedStor")},
+ {0x63, N_("GNU HURD or SysV")}, /* GNU HURD or Mach or Sys V/386 (such as ISC UNIX) */
+ {0x64, N_("Novell Netware 286")},
+ {0x65, N_("Novell Netware 386")},
+ {0x70, N_("DiskSecure Multi-Boot")},
+ {0x75, N_("PC/IX")},
+ {0x80, N_("Old Minix")}, /* Minix 1.4a and earlier */
+ {0x81, N_("Minix / old Linux")},/* Minix 1.4b and later */
+ {0x82, N_("Linux swap")}, /* also Solaris */
+ {0x83, N_("Linux")},
+ {0x84, N_("OS/2 hidden C: drive")},
+ {0x85, N_("Linux extended")},
+ {0x86, N_("NTFS volume set")},
+ {0x87, N_("NTFS volume set")},
+ {0x93, N_("Amoeba")},
+ {0x94, N_("Amoeba BBT")}, /* (bad block table) */
+ {0xa0, N_("IBM Thinkpad hibernation")},
+ {0xa5, N_("BSD/386")},
+ {0xa6, N_("OpenBSD")},
+ {0xa7, N_("NeXTSTEP")},
+ {0xb7, N_("BSDI fs")},
+ {0xb8, N_("BSDI swap")},
+ {0xc1, N_("DRDOS/sec (FAT-12)")},
+ {0xc4, N_("DRDOS/sec (FAT-16 < 32M)")},
+ {0xc6, N_("DRDOS/sec (FAT-16)")},
+ {0xc7, N_("Syrinx")},
+ {0xdb, N_("CP/M / CTOS / ...")},/* CP/M or Concurrent CP/M or Concurrent DOS or CTOS */
+ {0xe1, N_("DOS access")}, /* DOS access or SpeedStor 12-bit FAT extended partition */
+ {0xe3, N_("DOS R/O")}, /* DOS R/O or SpeedStor */
+ {0xe4, N_("SpeedStor")}, /* SpeedStor 16-bit FAT extended partition < 1024 cyl. */
+ {0xeb, N_("BeOS fs")},
+ {0xf1, N_("SpeedStor")},
+ {0xf4, N_("SpeedStor")}, /* SpeedStor large partition */
+ {0xf2, N_("DOS secondary")}, /* DOS 3.3+ secondary */
+ {0xfd, N_("Linux raid autodetect")},/* New (2.2.x) raid partition with autodetect
+ using persistent superblock */
+ {0xfe, N_("LANstep")}, /* SpeedStor >1024 cyl. or LANstep */
+ {0xff, N_("BBT")}, /* Xenix Bad Block Table */
+ { 0, 0 }
+};
diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c
index c3f470f89..d25543dd3 100644
--- a/fdisk/sfdisk.c
+++ b/fdisk/sfdisk.c
@@ -25,6 +25,9 @@
* Well, a good user interface is still lacking. On the other hand,
* many configurations cannot be handled by any other fdisk.
* I changed the name to sfdisk to prevent confusion. - aeb, 970501
+ *
+ * Changes:
+ * 19990319 - Arnaldo Carvalho de Melo <acme@conectiva.com.br> - i18n
*/
#define PROGNAME "sfdisk"
@@ -45,6 +48,9 @@
#include <linux/unistd.h> /* _syscall */
#include <linux/hdreg.h> /* HDIO_GETGEO */
#include <linux/fs.h> /* BLKGETSIZE */
+#include <locale.h>
+#include "nls.h"
+#include "common.h"
#define SIZE(a) (sizeof(a)/sizeof(a[0]))
@@ -139,12 +145,12 @@ sseek(char *dev, unsigned int fd, unsigned long s) {
if ((out = lseek(fd, in, SEEK_SET)) != in) {
#endif
perror("llseek");
- error("seek error on %s - cannot seek to %lu\n", dev, s);
+ error(_("seek error on %s - cannot seek to %lu\n"), dev, s);
return 0;
}
if (in != out) {
- error("seek error: wanted 0x%08x%08x, got 0x%08x%08x\n",
+ error(_("seek error: wanted 0x%08x%08x, got 0x%08x%08x\n"),
(uint)(in>>32), (uint)(in & 0xffffffff),
(uint)(out>>32), (uint)(out & 0xffffffff));
return 0;
@@ -190,11 +196,11 @@ get_sector(char *dev, int fd, unsigned long sno) {
return 0;
if (!(s = (struct sector *) malloc(sizeof(struct sector))))
- fatal("out of memory - giving up\n");
+ fatal(_("out of memory - giving up\n"));
if (read(fd, s->data, sizeof(s->data)) != sizeof(s->data)) {
perror("read");
- error("read error on %s - cannot read sector %lu\n", dev, sno);
+ error(_("read error on %s - cannot read sector %lu\n"), dev, sno);
free(s);
return 0;
}
@@ -210,7 +216,7 @@ get_sector(char *dev, int fd, unsigned long sno) {
int
msdos_signature (struct sector *s) {
if (*(unsigned short *) (s->data + 0x1fe) != 0xaa55) {
- error("ERROR: sector %lu does not have an msdos signature\n",
+ error(_("ERROR: sector %lu does not have an msdos signature\n"),
s->sectornumber);
return 0;
}
@@ -227,7 +233,7 @@ write_sectors(char *dev, int fd) {
return 0;
if (write(fd, s->data, sizeof(s->data)) != sizeof(s->data)) {
perror("write");
- error("write error on %s - cannot write sector %lu\n",
+ error(_("write error on %s - cannot write sector %lu\n"),
dev, s->sectornumber);
return 0;
}
@@ -265,7 +271,7 @@ save_sectors(char *dev, int fdin) {
fdout = open(save_sector_file, O_WRONLY | O_CREAT, 0444);
if (fdout < 0) {
perror(save_sector_file);
- error("cannot open partition sector save file (%s)\n",
+ error(_("cannot open partition sector save file (%s)\n"),
save_sector_file);
return 0;
}
@@ -277,13 +283,13 @@ save_sectors(char *dev, int fdin) {
return 0;
if (read(fdin, ss+4, 512) != 512) {
perror("read");
- error("read error on %s - cannot read sector %lu\n",
+ error(_("read error on %s - cannot read sector %lu\n"),
dev, s->sectornumber);
return 0;
}
if (write(fdout, ss, sizeof(ss)) != sizeof(ss)) {
perror("write");
- error("write error on %s\n", save_sector_file);
+ error(_("write error on %s\n"), save_sector_file);
return 0;
}
}
@@ -301,35 +307,35 @@ restore_sectors(char *dev) {
if (stat(restore_sector_file, &statbuf) < 0) {
perror(restore_sector_file);
- error("cannot stat partition restore file (%s)\n",
+ error(_("cannot stat partition restore file (%s)\n"),
restore_sector_file);
return 0;
}
if (statbuf.st_size % 516) {
- error("partition restore file has wrong size - not restoring\n");
+ error(_("partition restore file has wrong size - not restoring\n"));
return 0;
}
if (!(ss = (char *) malloc(statbuf.st_size))) {
- error("out of memory?\n");
+ error(_("out of memory?\n"));
return 0;
}
fdin = open(restore_sector_file, O_RDONLY);
if (fdin < 0) {
perror(restore_sector_file);
- error("cannot open partition restore file (%s)\n",
+ error(_("cannot open partition restore file (%s)\n"),
restore_sector_file);
return 0;
}
if (read(fdin, ss, statbuf.st_size) != statbuf.st_size) {
perror("read");
- error("error reading %s\n", restore_sector_file);
+ error(_("error reading %s\n"), restore_sector_file);
return 0;
}
fdout = open(dev, O_WRONLY);
if (fdout < 0) {
perror(dev);
- error("cannot open device %s for writing\n", dev);
+ error(_("cannot open device %s for writing\n"), dev);
return 0;
}
@@ -341,7 +347,7 @@ restore_sectors(char *dev) {
return 0;
if (write(fdout, ss+4, 512) != 512) {
perror(dev);
- error("error writing sector %lu on %s\n", sno, dev);
+ error(_("error writing sector %lu on %s\n"), sno, dev);
return 0;
}
ss += 516;
@@ -367,61 +373,70 @@ restore_sectors(char *dev) {
* };
*/
-unsigned long cylindersize;
-unsigned long heads, sectors, cylinders;
-unsigned long specified_heads, specified_sectors, specified_cylinders;
+/*
+ * We consider several geometries for a disk:
+ * B - the BIOS geometry, gotten from the kernel via HDIO_GETGEO
+ * F - the fdisk geometry
+ * U - the user-specified geometry
+ *
+ * 0 means unspecified / unknown
+ */
+struct geometry {
+ unsigned long cylindersize;
+ unsigned long heads, sectors, cylinders;
+} B, F, U;
void
get_cylindersize(char *dev, int fd, int silent) {
struct hd_geometry g;
int ioctl_ok = 0;
- heads = sectors = cylinders = 0;
+ B.heads = B.sectors = B.cylinders = 0;
if (!ioctl(fd, HDIO_GETGEO, &g)) {
ioctl_ok = 1;
- heads = g.heads;
- sectors = g.sectors;
- cylinders = g.cylinders;
+ B.heads = g.heads;
+ B.sectors = g.sectors;
+ B.cylinders = g.cylinders;
}
- if (specified_heads)
- heads = specified_heads;
- if (specified_sectors)
- sectors = specified_sectors;
- if (specified_cylinders)
- cylinders = specified_cylinders;
+ if (U.heads)
+ B.heads = U.heads;
+ if (U.sectors)
+ B.sectors = U.sectors;
+ if (U.cylinders)
+ B.cylinders = U.cylinders;
- cylindersize = heads * sectors;
+ B.cylindersize = B.heads * B.sectors;
if (ioctl_ok) {
if (g.start && !force) {
warn(
- "Warning: start=%d - this looks like a partition rather than\n"
+ _("Warning: start=%d - this looks like a partition rather than\n"
"the entire disk. Using fdisk on it is probably meaningless.\n"
- "[Use the --force option if you really want this]\n", g.start);
+ "[Use the --force option if you really want this]\n"), g.start);
exit(1);
}
- if (heads != g.heads)
- warn("Warning: HDIO_GETGEO says that there are %d heads\n",
+ if (B.heads != g.heads)
+ warn(_("Warning: HDIO_GETGEO says that there are %d heads\n"),
g.heads);
- if (sectors != g.sectors)
- warn("Warning: HDIO_GETGEO says that there are %d sectors\n",
+ if (B.sectors != g.sectors)
+ warn(_("Warning: HDIO_GETGEO says that there are %d sectors\n"),
g.sectors);
- if (cylinders != g.cylinders)
- warn("Warning: HDIO_GETGEO says that there are %d cylinders\n",
+ if (B.cylinders != g.cylinders)
+ warn(_("Warning: HDIO_GETGEO says that there are %d cylinders\n"),
g.cylinders);
} else if (!silent)
- if (!heads || !sectors || !cylinders)
- printf("Disk %s: cannot get geometry\n", dev);
- if (sectors > 63)
- warn("Warning: unlikely number of sectors (%d) - usually at most 63\n"
- "This will give problems with all software that uses C/H/S addressing.\n",
- sectors);
+ if (!B.heads || !B.sectors || !B.cylinders)
+ printf(_("Disk %s: cannot get geometry\n"), dev);
+ if (B.sectors > 63)
+ warn(_("Warning: unlikely number of sectors (%d) - usually at most 63\n"
+ "This will give problems with all software that uses C/H/S addressing.\n"),
+ B.sectors);
if (!silent)
- printf("\nDisk %s: %lu heads, %lu sectors, %lu cylinders\n",
- dev, heads, sectors, cylinders);
+ printf(_("\nDisk %s: %lu cylinders, %lu heads, %lu sectors/track\n"),
+ dev, B.cylinders, B.heads, B.sectors);
}
typedef struct { unsigned char h,s,c; } chs; /* has some c bits in s */
@@ -431,19 +446,19 @@ typedef struct { unsigned long h,s,c; } longchs;
longchs zero_longchs;
chs
-longchs_to_chs (longchs aa) {
+longchs_to_chs (longchs aa, struct geometry G) {
chs a;
if (aa.h < 256 && aa.s < 64 && aa.c < 1024) {
a.h = aa.h;
a.s = aa.s | ((aa.c >> 2) & 0xc0);
a.c = (aa.c & 0xff);
- } else if (heads && sectors) {
- a.h = heads - 1;
- a.s = sectors | 0xc0;
+ } else if (G.heads && G.sectors) {
+ a.h = G.heads - 1;
+ a.s = G.sectors | 0xc0;
a.c = 0xff;
} else
- a = zero_chs;
+ a = zero_chs;
return a;
}
@@ -459,13 +474,13 @@ chs_to_longchs (chs a) {
}
longchs
-ulong_to_longchs (unsigned long sno) {
+ulong_to_longchs (unsigned long sno, struct geometry G) {
longchs aa;
- if (heads && sectors && cylindersize) {
- aa.s = 1 + sno % sectors;
- aa.h = (sno / sectors) % heads;
- aa.c = sno / cylindersize;
+ if (G.heads && G.sectors && G.cylindersize) {
+ aa.s = 1 + sno % G.sectors;
+ aa.h = (sno / G.sectors) % G.heads;
+ aa.c = sno / G.cylindersize;
return aa;
} else {
return zero_longchs;
@@ -473,18 +488,18 @@ ulong_to_longchs (unsigned long sno) {
}
unsigned long
-longchs_to_ulong (longchs aa) {
- return (aa.c*cylindersize + aa.h*sectors + aa.s - 1);
+longchs_to_ulong (longchs aa, struct geometry G) {
+ return (aa.c*G.cylindersize + aa.h*G.sectors + aa.s - 1);
}
chs
-ulong_to_chs (unsigned long sno) {
- return longchs_to_chs(ulong_to_longchs(sno));
+ulong_to_chs (unsigned long sno, struct geometry G) {
+ return longchs_to_chs(ulong_to_longchs(sno, G), G);
}
unsigned long
-chs_to_ulong (chs a) {
- return longchs_to_ulong(chs_to_longchs(a));
+chs_to_ulong (chs a, struct geometry G) {
+ return longchs_to_ulong(chs_to_longchs(a), G);
}
int
@@ -499,19 +514,19 @@ chs_ok (chs a, char *v, char *w) {
if (is_equal_chs(a, zero_chs))
return 1;
- if (heads && aa.h >= heads) {
- warn("%s of partition %s has impossible value for head: "
- "%d (should be in 0-%d)\n", w, v, aa.h, heads-1);
+ if (B.heads && aa.h >= B.heads) {
+ warn(_("%s of partition %s has impossible value for head: "
+ "%d (should be in 0-%d)\n"), w, v, aa.h, B.heads-1);
ret = 0;
}
- if (sectors && (aa.s == 0 || aa.s > sectors)) {
- warn("%s of partition %s has impossible value for sector: "
- "%d (should be in 1-%d)\n", w, v, aa.s, sectors);
+ if (B.sectors && (aa.s == 0 || aa.s > B.sectors)) {
+ warn(_("%s of partition %s has impossible value for sector: "
+ "%d (should be in 1-%d)\n"), w, v, aa.s, B.sectors);
ret = 0;
}
- if (cylinders && aa.c >= cylinders) {
- warn("%s of partition %s has impossible value for cylinders: "
- "%d (should be in 0-%d)\n", w, v, aa.c, cylinders-1);
+ if (B.cylinders && aa.c >= B.cylinders) {
+ warn(_("%s of partition %s has impossible value for cylinders: "
+ "%d (should be in 0-%d)\n"), w, v, aa.c, B.cylinders-1);
ret = 0;
}
return ret;
@@ -533,109 +548,25 @@ chs_ok (chs a, char *v, char *w) {
#define LINUX_EXTENDED 0x85
#define BSD_PARTITION 0xa5
-/*
- * List of system Id's, adapted from fdisk 2.0d and <linux/genhd.h>
- * and SFS and several other sources.
- */
-struct systypes {
- unsigned char type;
- char *name;
-} sys_types[] = {
- {0, "Empty"},
- {1, "DOS 12-bit FAT"}, /* Primary DOS with 12-bit FAT */
- {2, "XENIX /"}, /* XENIX / filesystem */
- {3, "XENIX /usr"}, /* XENIX /usr filesystem */
- {4, "DOS 16-bit FAT <32M"}, /* Primary DOS with 16-bit FAT */
- {5, "DOS Extended"}, /* DOS 3.3+ extended partition */
- {6, "DOS 16-bit FAT >=32M"},
- {7, "HPFS / NTFS"},
- {8, "AIX boot or SplitDrive"},
- {9, "AIX data or Coherent"},
- {0x0a, "OS/2 Boot Manager"},
- {0x0b, "Win95 FAT32"},
- {0x0c, "Win95 FAT32 (LBA)"},
- {0x0e, "Win95 FAT16 (LBA)"},
- {0x0f, "Win95 Extended (LBA)"},
- {0x10, "OPUS"},
- {0x11, "Hidden DOS FAT12"},
- {0x12, "Compaq diagnostics"},
- {0x14, "Hidden DOS FAT16"},
- {0x16, "Hidden DOS FAT16 (big)"},
- {0x17, "Hidden HPFS/NTFS"},
- {0x18, "AST Windows swapfile"},
- {0x24, "NEC DOS"},
- {0x3c, "PartitionMagic recovery"},
- {0x40, "Venix 80286"},
- {0x41, "Linux/MINIX (sharing disk with DRDOS)"},
- {0x42, "SFS or Linux swap (sharing disk with DRDOS)"},
- {0x43, "Linux native (sharing disk with DRDOS)"},
- {0x50, "DM (disk manager)"},
- {0x51, "DM6 Aux1 (or Novell)"},
- {0x52, "CP/M or Microport SysV/AT"},
- {0x53, "DM6 Aux3"},
- {0x54, "DM6"},
- {0x55, "EZ-Drive (disk manager)"},
- {0x56, "Golden Bow (disk manager)"},
- {0x5c, "Priam Edisk (disk manager)"},
- {0x61, "SpeedStor"},
- {0x63, "GNU HURD or Mach or Sys V/386 (such as ISC UNIX)"},
- {0x64, "Novell Netware 286"},
- {0x65, "Novell Netware 386"},
- {0x70, "DiskSecure Multi-Boot"},
- {0x75, "PC/IX"},
- {0x77, "QNX4.x"},
- {0x78, "QNX4.x 2nd part"},
- {0x79, "QNX4.x 3rd part"},
- {0x80, "MINIX until 1.4a"},
- {0x81, "MINIX / old Linux"},
- {0x82, "Linux swap"},
- {0x83, "Linux native"},
- {0x84, "OS/2 hidden C: drive"},
- {0x85, "Linux extended"},
- {0x86, "NTFS volume set"},
- {0x87, "NTFS volume set"},
- {0x93, "Amoeba"},
- {0x94, "Amoeba BBT"}, /* (bad block table) */
- {0xa0, "IBM Thinkpad hibernation"}, /* according to dan@fch.wimsey.bc.ca */
- {0xa5, "BSD/386"}, /* 386BSD */
- {0xa6, "OpenBSD"},
- {0xa7, "NeXTSTEP 486"},
- {0xb7, "BSDI fs"},
- {0xb8, "BSDI swap"},
- {0xc1, "DRDOS/sec (FAT-12)"},
- {0xc4, "DRDOS/sec (FAT-16, < 32M)"},
- {0xc6, "DRDOS/sec (FAT-16, >= 32M)"},
- {0xc7, "Syrinx"},
- {0xdb, "CP/M or Concurrent CP/M or Concurrent DOS or CTOS"},
- {0xe1, "DOS access or SpeedStor 12-bit FAT extended partition"},
- {0xe3, "DOS R/O or SpeedStor"},
- {0xe4, "SpeedStor 16-bit FAT extended partition < 1024 cyl."},
- {0xeb, "BeOS fs"},
- {0xf1, "SpeedStor"},
- {0xf2, "DOS 3.3+ secondary"},
- {0xf4, "SpeedStor large partition"},
- {0xfe, "SpeedStor >1024 cyl. or LANstep"},
- {0xff, "Xenix Bad Block Table"}
-};
-
+/* List of partition types now in i386_sys_types.c */
const char *
sysname(unsigned char type) {
struct systypes *s;
- for (s = sys_types; s - sys_types < SIZE(sys_types); s++)
+ for (s = i386_sys_types; s->name; s++)
if (s->type == type)
- return s->name;
- return "Unknown";
+ return _(s->name);
+ return _("Unknown");
}
void
list_types(void) {
struct systypes *s;
- printf("Id Name\n\n");
- for (s = sys_types; s - sys_types < SIZE(sys_types); s++)
- printf("%2x %s\n", s->type, s->name);
+ printf(_("Id Name\n\n"));
+ for (s = i386_sys_types; s->name; s++)
+ printf("%2x %s\n", s->type, _(s->name));
}
int
@@ -767,7 +698,8 @@ add_sector_and_offset(struct disk_desc *z) {
}
/* tell the kernel to reread the partition tables */
-int reread_ioctl(int fd) {
+int
+reread_ioctl(int fd) {
if(ioctl(fd, BLKRRPART)) {
perror("BLKRRPART");
return -1;
@@ -775,21 +707,28 @@ int reread_ioctl(int fd) {
return 0;
}
+int
+is_blockdev(int fd) {
+ struct stat statbuf;
+
+ return(fstat(fd, &statbuf) == 0 && S_ISBLK(statbuf.st_mode));
+}
+
/* reread after writing */
void
reread_disk_partition(char *dev, int fd) {
- printf("Re-reading the partition table ...\n");
+ printf(_("Re-reading the partition table ...\n"));
fflush(stdout);
sync();
sleep(3); /* superfluous since 1.3.20 */
- if(reread_ioctl(fd))
- printf("The command to re-read the partition table failed\n"
- "Reboot your system now, before using mkfs\n");
+ if(reread_ioctl(fd) && is_blockdev(fd))
+ printf(_("The command to re-read the partition table failed\n"
+ "Reboot your system now, before using mkfs\n"));
if (close(fd)) {
perror(dev);
- printf("Error closing %s\n", dev);
+ printf(_("Error closing %s\n"), dev);
}
printf("\n");
}
@@ -827,7 +766,7 @@ asc_to_index(char *pnam, struct disk_desc *z) {
pno = linux_to_index(pnum, z);
}
if (!(pno >= 0 && pno < z->partno))
- fatal("%s: no such partition\n", pnam);
+ fatal(_("%s: no such partition\n"), pnam);
return pno;
}
@@ -850,7 +789,7 @@ void
set_format(char c) {
switch(c) {
default:
- printf("unrecognized format - using sectors\n");
+ printf(_("unrecognized format - using sectors\n"));
case 'S': specified_format = F_SECTOR; break;
case 'B': specified_format = F_BLOCK; break;
case 'C': specified_format = F_CYLINDER; break;
@@ -860,14 +799,15 @@ set_format(char c) {
unsigned long
unitsize(int format) {
- default_format = (cylindersize ? F_CYLINDER : F_MEGABYTE);
+ default_format = (B.cylindersize ? F_CYLINDER : F_MEGABYTE);
if (!format && !(format = specified_format))
format = default_format;
switch(format) {
default:
case F_CYLINDER:
- if(cylindersize) return cylindersize;
+ if(B.cylindersize)
+ return B.cylindersize;
case F_SECTOR:
return 1;
case F_BLOCK:
@@ -879,51 +819,51 @@ unitsize(int format) {
unsigned long
get_disksize(int format) {
- unsigned long cs = cylinders;
+ unsigned long cs = B.cylinders;
if (cs && leave_last)
cs--;
- return (cs * cylindersize) / unitsize(format);
+ return (cs * B.cylindersize) / unitsize(format);
}
void
-out_partition_header(char *dev, int format) {
+out_partition_header(char *dev, int format, struct geometry G) {
if (dump) {
- printf("# partition table of %s\n", dev);
- printf("unit: sectors\n\n");
+ printf(_("# partition table of %s\n"), dev);
+ printf(_("unit: sectors\n\n"));
return;
}
- default_format = (cylindersize ? F_CYLINDER : F_MEGABYTE);
+ default_format = (G.cylindersize ? F_CYLINDER : F_MEGABYTE);
if (!format && !(format = specified_format))
format = default_format;
switch(format) {
default:
- printf("unimplemented format - using %s\n",
- cylindersize ? "cylinders" : "sectors");
+ printf(_("unimplemented format - using %s\n"),
+ G.cylindersize ? _("cylinders") : _("sectors"));
case F_CYLINDER:
- if (cylindersize) {
- printf("Units = cylinders of %lu bytes, blocks of 1024 bytes"
- ", counting from %d\n\n",
- cylindersize<<9, increment);
- printf(" Device Boot Start End #cyls #blocks Id System\n");
+ if (G.cylindersize) {
+ printf(_("Units = cylinders of %lu bytes, blocks of 1024 bytes"
+ ", counting from %d\n\n"),
+ G.cylindersize<<9, increment);
+ printf(_(" Device Boot Start End #cyls #blocks Id System\n"));
break;
}
/* fall through */
case F_SECTOR:
- printf("Units = sectors of 512 bytes, counting from %d\n\n",
+ printf(_("Units = sectors of 512 bytes, counting from %d\n\n"),
increment);
- printf(" Device Boot Start End #sectors Id System\n");
+ printf(_(" Device Boot Start End #sectors Id System\n"));
break;
case F_BLOCK:
- printf("Units = blocks of 1024 bytes, counting from %d\n\n",
+ printf(_("Units = blocks of 1024 bytes, counting from %d\n\n"),
increment);
- printf(" Device Boot Start End #blocks Id System\n");
+ printf(_(" Device Boot Start End #blocks Id System\n"));
break;
case F_MEGABYTE:
- printf("Units = megabytes of 1048576 bytes, blocks of 1024 bytes"
- ", counting from %d\n\n", increment);
- printf(" Device Boot Start End MB #blocks Id System\n");
+ printf(_("Units = megabytes of 1048576 bytes, blocks of 1024 bytes"
+ ", counting from %d\n\n"), increment);
+ printf(_(" Device Boot Start End MB #blocks Id System\n"));
break;
}
}
@@ -955,8 +895,19 @@ out_roundup_size(int width, unsigned long n, unsigned long unit) {
putchar(' ');
}
+int
+get_fdisk_geometry(struct part_desc *p) {
+ chs b = p->p.end_chs;
+ longchs bb = chs_to_longchs(b);
+ F.heads = bb.h+1;
+ F.sectors = bb.s;
+ F.cylindersize = F.heads*F.sectors;
+ return (F.sectors != B.sectors || F.heads != B.heads);
+}
+
void
-out_partition(char *dev, int format, struct part_desc *p, struct disk_desc *z) {
+out_partition(char *dev, int format, struct part_desc *p,
+ struct disk_desc *z, struct geometry G) {
unsigned long start, end, size;
int pno, lpno;
@@ -978,12 +929,12 @@ out_partition(char *dev, int format, struct part_desc *p, struct disk_desc *z) {
size = p->size;
if (dump) {
- printf(" start=%9lu", start);
- printf(", size=%8lu", size);
+ printf(_(" start=%9lu"), start);
+ printf(_(", size=%8lu"), size);
if (p->ptype == DOS_TYPE) {
- printf(", Id=%2x", p->p.sys_type);
+ printf(_(", Id=%2x"), p->p.sys_type);
if (p->p.bootable == 0x80)
- printf(", bootable");
+ printf(_(", bootable"));
}
printf("\n");
return;
@@ -998,10 +949,10 @@ out_partition(char *dev, int format, struct part_desc *p, struct disk_desc *z) {
switch(format) {
case F_CYLINDER:
- if (cylindersize) {
- out_rounddown(6, start, cylindersize, increment);
- out_roundup(6, end, cylindersize, increment);
- out_roundup_size(6, size, cylindersize);
+ if (G.cylindersize) {
+ out_rounddown(6, start, G.cylindersize, increment);
+ out_roundup(6, end, G.cylindersize, increment);
+ out_roundup_size(6, size, G.cylindersize);
out_rounddown(8, size, 2, 0);
break;
}
@@ -1039,22 +990,22 @@ out_partition(char *dev, int format, struct part_desc *p, struct disk_desc *z) {
if (!quiet && p->ptype == DOS_TYPE) {
chs a, b;
longchs aa, bb;
- a = (size ? ulong_to_chs(start) : zero_chs);
+ a = (size ? ulong_to_chs(start,G) : zero_chs);
b = p->p.begin_chs;
aa = chs_to_longchs(a);
bb = chs_to_longchs(b);
if(a.s && !is_equal_chs(a, b))
- printf("\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n",
+ printf(_("\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
aa.c, aa.h, aa.s, bb.c, bb.h, bb.s);
- a = (size ? ulong_to_chs(end) : zero_chs);
+ a = (size ? ulong_to_chs(end,G) : zero_chs);
b = p->p.end_chs;
aa = chs_to_longchs(a);
bb = chs_to_longchs(b);
if(a.s && !is_equal_chs(a, b))
- printf("\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n",
+ printf(_("\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
aa.c, aa.h, aa.s, bb.c, bb.h, bb.s);
- if(cylinders && cylinders < 1024 && bb.c > cylinders)
- printf("partition ends on cylinder %ld, beyond the end of the disk\n",
+ if(G.cylinders && G.cylinders < 1024 && bb.c > G.cylinders)
+ printf(_("partition ends on cylinder %ld, beyond the end of the disk\n"),
bb.c);
}
}
@@ -1064,11 +1015,16 @@ out_partitions(char *dev, struct disk_desc *z) {
int pno, format = 0;
if (z->partno == 0)
- printf("No partitions found\n");
+ printf(_("No partitions found\n"));
else {
- out_partition_header(dev, format);
+ if (get_fdisk_geometry(&(z->partitions[0])))
+ printf(_("Warning: The first partition looks like it was made\n"
+ " for C/H/S=*/%ld/%ld (instead of %ld/%ld/%ld).\n"
+ "For this listing I'll assume that geometry.\n"),
+ F.heads, F.sectors, B.cylinders, B.heads, B.sectors);
+ out_partition_header(dev, format, F);
for(pno=0; pno < z->partno; pno++) {
- out_partition(dev, format, &(z->partitions[pno]), z);
+ out_partition(dev, format, &(z->partitions[pno]), z, F);
if(show_extended && pno%4==3)
printf("\n");
}
@@ -1109,9 +1065,9 @@ partitions_ok(struct disk_desc *z) {
/* Have at least 4 partitions been defined? */
if (partno < 4) {
if (!partno)
- fatal("no partition table present.\n");
+ fatal(_("no partition table present.\n"));
else
- fatal("strange, only %d partitions defined.\n", partno);
+ fatal(_("strange, only %d partitions defined.\n"), partno);
return 0;
}
@@ -1120,13 +1076,13 @@ partitions_ok(struct disk_desc *z) {
for (p = partitions; p - partitions < partno; p++)
if (p->size == 0) {
if(p->p.sys_type != EMPTY_PARTITION)
- warn("Warning: partition %s has size 0 but is not marked Empty\n",
+ warn(_("Warning: partition %s has size 0 but is not marked Empty\n"),
PNO(p));
else if(p->p.bootable != 0)
- warn("Warning: partition %s has size 0 and is bootable\n",
+ warn(_("Warning: partition %s has size 0 and is bootable\n"),
PNO(p));
else if(p->p.start_sect != 0)
- warn("Warning: partition %s has size 0 and nonzero start\n",
+ warn(_("Warning: partition %s has size 0 and nonzero start\n"),
PNO(p));
/* all this is probably harmless, no error return */
}
@@ -1137,8 +1093,8 @@ partitions_ok(struct disk_desc *z) {
if (p->size && !is_extended(p->p.sys_type)) {
q = p->ep;
if (p->start < q->start || p->start + p->size > q->start + q->size) {
- warn("Warning: partition %s ", PNO(p));
- warn("is not contained in partition %s\n", PNO(q));
+ warn(_("Warning: partition %s "), PNO(p));
+ warn(_("is not contained in partition %s\n"), PNO(q));
return 0;
}
}
@@ -1149,8 +1105,8 @@ partitions_ok(struct disk_desc *z) {
for (q = p+1; q < partitions+partno; q++)
if (q->size && !is_extended(q->p.sys_type))
if(!((p->start > q-> start) ? disj(q,p) : disj(p,q))) {
- warn("Warning: partitions %s ", PNO(p));
- warn("and %s overlap\n", PNO(q));
+ warn(_("Warning: partitions %s "), PNO(p));
+ warn(_("and %s overlap\n"), PNO(q));
return 0;
}
@@ -1161,9 +1117,9 @@ partitions_ok(struct disk_desc *z) {
for (q = partitions; q < partitions+partno; q++)
if (is_extended(q->p.sys_type))
if (p->start <= q->start && p->start + p->size > q->start) {
- warn("Warning: partition %s contains part of ", PNO(p));
- warn("the partition table (sector %lu),\n", q->start);
- warn("and will destroy it when filled\n");
+ warn(_("Warning: partition %s contains part of "), PNO(p));
+ warn(_("the partition table (sector %lu),\n"), q->start);
+ warn(_("and will destroy it when filled\n"));
return 0;
}
@@ -1172,11 +1128,11 @@ partitions_ok(struct disk_desc *z) {
for (p = partitions; p < partitions+partno; p++)
if (p->size) {
if(p->start == 0) {
- warn("Warning: partition %s starts at sector 0\n", PNO(p));
+ warn(_("Warning: partition %s starts at sector 0\n"), PNO(p));
return 0;
}
if (p->size && p->start + p->size > ds) {
- warn("Warning: partition %s extends past end of disk\n", PNO(p));
+ warn(_("Warning: partition %s extends past end of disk\n"), PNO(p));
return 0;
}
}
@@ -1190,8 +1146,8 @@ partitions_ok(struct disk_desc *z) {
if (p->p.sys_type == EXTENDED_PARTITION)
ect++;
if (ect > 1 && !Linux) {
- warn("Among the primary partitions, at most one can be extended\n");
- warn(" (although this is not a problem under Linux)\n");
+ warn(_("Among the primary partitions, at most one can be extended\n"));
+ warn(_(" (although this is not a problem under Linux)\n"));
return 0;
}
}
@@ -1202,20 +1158,20 @@ partitions_ok(struct disk_desc *z) {
* The first partition starts after MBR.
* Logical partitions start slightly after the containing extended partn.
*/
- if (cylindersize) {
+ if (B.cylindersize) {
for(p = partitions; p < partitions+partno; p++)
if (p->size) {
- if(p->start % cylindersize != 0
- && (!p->ep || p->start / cylindersize != p->ep->start / cylindersize)
- && (p->p.start_sect >= cylindersize)) {
- warn("Warning: partition %s does not start "
- "at a cylinder boundary\n", PNO(p));
+ if(p->start % B.cylindersize != 0
+ && (!p->ep || p->start / B.cylindersize != p->ep->start / B.cylindersize)
+ && (p->p.start_sect >= B.cylindersize)) {
+ warn(_("Warning: partition %s does not start "
+ "at a cylinder boundary\n"), PNO(p));
if (!Linux)
return 0;
}
- if((p->start + p->size) % cylindersize) {
- warn("Warning: partition %s does not end "
- "at a cylinder boundary\n", PNO(p));
+ if((p->start + p->size) % B.cylindersize) {
+ warn(_("Warning: partition %s does not end "
+ "at a cylinder boundary\n"), PNO(p));
if (!Linux)
return 0;
}
@@ -1232,22 +1188,22 @@ partitions_ok(struct disk_desc *z) {
if (pno == -1)
pno = p - partitions;
else if (p - partitions < 4) {
- warn("Warning: more than one primary partition is marked "
+ warn(_("Warning: more than one primary partition is marked "
"bootable (active)\n"
"This does not matter for LILO, but the DOS MBR will "
- "not boot this disk.\n");
+ "not boot this disk.\n"));
break;
}
if (p - partitions >= 4) {
- warn("Warning: usually one can boot from primary partitions "
- "only\n" "LILO disregards the `bootable' flag.\n");
+ warn(_("Warning: usually one can boot from primary partitions "
+ "only\nLILO disregards the `bootable' flag.\n"));
break;
}
}
if (pno == -1 || pno >= 4)
- warn("Warning: no primary partition is marked bootable (active)\n"
+ warn(_("Warning: no primary partition is marked bootable (active)\n"
"This does not matter for LILO, but the DOS MBR will "
- "not boot this disk.\n");
+ "not boot this disk.\n"));
}
/* Is chs as we expect? */
@@ -1255,26 +1211,26 @@ partitions_ok(struct disk_desc *z) {
if(p->ptype == DOS_TYPE) {
chs a, b;
longchs aa, bb;
- a = p->size ? ulong_to_chs(p->start) : zero_chs;
+ a = p->size ? ulong_to_chs(p->start,B) : zero_chs;
b = p->p.begin_chs;
aa = chs_to_longchs(a);
bb = chs_to_longchs(b);
if (!chs_ok(b, PNO(p), "start"))
return 0;
if(a.s && !is_equal_chs(a, b))
- warn("partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n",
+ warn(_("partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
PNO(p), aa.c, aa.h, aa.s, bb.c, bb.h, bb.s);
- a = p->size ? ulong_to_chs(p->start + p->size - 1) : zero_chs;
+ a = p->size ? ulong_to_chs(p->start + p->size - 1, B) : zero_chs;
b = p->p.end_chs;
aa = chs_to_longchs(a);
bb = chs_to_longchs(b);
if (!chs_ok(b, PNO(p), "end"))
return 0;
if(a.s && !is_equal_chs(a, b))
- warn("partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n",
+ warn(_("partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
PNO(p), aa.c, aa.h, aa.s, bb.c, bb.h, bb.s);
- if(cylinders && cylinders < 1024 && bb.c > cylinders)
- warn("partition %s ends on cylinder %ld, beyond the end of the disk\n",
+ if(B.cylinders && B.cylinders < 1024 && bb.c > B.cylinders)
+ warn(_("partition %s ends on cylinder %ld, beyond the end of the disk\n"),
PNO(p), bb.c);
}
@@ -1307,7 +1263,7 @@ extended_partition(char *dev, int fd, struct part_desc *ep, struct disk_desc *z)
cp = s->data + 0x1be;
if (pno+4 >= SIZE(z->partitions)) {
- printf("too many partitions - ignoring those past nr (%d)\n",
+ printf(_("too many partitions - ignoring those past nr (%d)\n"),
pno-1);
break;
}
@@ -1320,9 +1276,11 @@ extended_partition(char *dev, int fd, struct part_desc *ep, struct disk_desc *z)
partitions[pno].ep = ep;
copy_to_part(cp,&p);
if (is_extended(p.sys_type)) {
+ partitions[pno].start = start + p.start_sect;
if (next)
- printf("tree of partitions?\n");
- partitions[pno].start = next = start + p.start_sect;
+ printf(_("tree of partitions?\n"));
+ else
+ next = partitions[pno].start; /* follow `upper' branch */
moretodo = 1;
} else {
partitions[pno].start = here + p.start_sect;
@@ -1382,8 +1340,8 @@ bsd_partition(char *dev, int fd, struct part_desc *ep, struct disk_desc *z) {
bp = bp0 = &l->d_partitions[0];
while (bp - bp0 <= BSD_MAXPARTITIONS) {
if (pno+1 >= SIZE(z->partitions)) {
- printf("too many partitions - ignoring those "
- "past nr (%d)\n", pno-1);
+ printf(_("too many partitions - ignoring those "
+ "past nr (%d)\n"), pno-1);
break;
}
if (bp->p_fstype != BSD_FS_UNUSED) {
@@ -1424,14 +1382,14 @@ msdos_partition(char *dev, int fd, unsigned long start, struct disk_desc *z) {
|| pt.sys_type == EZD_PARTITION
|| pt.sys_type == DM6_AUX1PARTITION
|| pt.sys_type == DM6_AUX3PARTITION) {
- printf("detected Disk Manager - unable to handle that\n");
+ printf(_("detected Disk Manager - unable to handle that\n"));
return 0;
}
{ unsigned int sig = *(unsigned short *)(s->data + 2);
if (sig <= 0x1ae
&& *(unsigned short *)(s->data + sig) == 0x55aa
&& (1 & *(unsigned char *)(s->data + sig + 2))) {
- printf("DM6 signature found - giving up\n");
+ printf(_("DM6 signature found - giving up\n"));
return 0;
}
}
@@ -1451,14 +1409,14 @@ msdos_partition(char *dev, int fd, unsigned long start, struct disk_desc *z) {
for (i=0; i<4; i++) {
if (is_extended(partitions[i].p.sys_type)) {
if (!partitions[i].size) {
- printf("strange..., an extended partition of size 0?\n");
+ printf(_("strange..., an extended partition of size 0?\n"));
continue;
}
extended_partition(dev, fd, &partitions[i], z);
}
if (is_bsd(partitions[i].p.sys_type)) {
if (!partitions[i].size) {
- printf("strange..., a BSD partition of size 0?\n");
+ printf(_("strange..., a BSD partition of size 0?\n"));
continue;
}
bsd_partition(dev, fd, &partitions[i], z);
@@ -1490,7 +1448,7 @@ get_partitions(char *dev, int fd, struct disk_desc *z) {
&& !osf_partition(dev, fd, 0, z)
&& !sun_partition(dev, fd, 0, z)
&& !amiga_partition(dev, fd, 0, z)) {
- printf(" %s: unrecognized partition\n", dev);
+ printf(_(" %s: unrecognized partition\n"), dev);
return;
}
}
@@ -1502,7 +1460,7 @@ write_partitions(char *dev, int fd, struct disk_desc *z) {
int pno = z->partno;
if (no_write) {
- printf("-n flag was given: Nothing changed\n");
+ printf(_("-n flag was given: Nothing changed\n"));
exit(0);
}
@@ -1515,12 +1473,12 @@ write_partitions(char *dev, int fd, struct disk_desc *z) {
}
if (save_sector_file) {
if (!save_sectors(dev, fd)) {
- fatal("Failed saving the old sectors - aborting\n");
+ fatal(_("Failed saving the old sectors - aborting\n"));
return 0;
}
}
if (!write_sectors(dev, fd)) {
- error("Failed writing the partition on %s\n", dev);
+ error(_("Failed writing the partition on %s\n"), dev);
return 0;
}
return 1;
@@ -1597,7 +1555,7 @@ read_stdin(unsigned char **fields, unsigned char *line, int fieldssize, int line
return RD_EOF;
}
if (!(lp = index(lp, '\n')))
- fatal("long or incomplete input line - quitting\n");
+ fatal(_("long or incomplete input line - quitting\n"));
*lp = 0;
/* remove comments, if any */
@@ -1633,20 +1591,20 @@ read_stdin(unsigned char **fields, unsigned char *line, int fieldssize, int line
while(isalnum(*ip)) /* 0x07FF */
ip++;
} else
- fatal("input error: `=' expected after %s field\n",
+ fatal(_("input error: `=' expected after %s field\n"),
d->fldname);
if (fno <= d->fldno)
fno = d->fldno + 1;
if(*ip == 0)
return fno;
if(*ip != ',' && *ip != ';')
- fatal("input error: unexpected character %c after %s field\n",
+ fatal(_("input error: unexpected character %c after %s field\n"),
*ip, d->fldname);
*ip = 0;
goto nxtfld;
}
}
- fatal("unrecognized input: %s\n", ip);
+ fatal(_("unrecognized input: %s\n"), ip);
}
/* split line into fields */
@@ -1678,11 +1636,11 @@ get_ul(char *u, unsigned long *up, unsigned long def, int base) {
errno = 0;
*up = strtoul(u, &nu, base);
if (errno == ERANGE) {
- printf("number too big\n");
+ printf(_("number too big\n"));
return -1;
}
if (*nu) {
- printf("trailing junk after number\n");
+ printf(_("trailing junk after number\n"));
return -1;
}
} else
@@ -1783,7 +1741,7 @@ max_length(int pno, int is_extended, struct part_desc *ep, int format,
int
compute_start_sect(struct part_desc *p, struct part_desc *ep) {
unsigned long base;
- int inc = (DOS && sectors) ? sectors : 1;
+ int inc = (DOS && B.sectors) ? B.sectors : 1;
int delta;
if (ep && p->start + p->size >= ep->start + 1)
@@ -1798,7 +1756,7 @@ compute_start_sect(struct part_desc *p, struct part_desc *ep) {
if (is_extended(p->p.sys_type) && boxes == ONESECTOR)
p->size = inc;
else if ((int)(p->size) <= 0) {
- warn("no room for partition descriptor\n");
+ warn(_("no room for partition descriptor\n"));
return 0;
}
}
@@ -1812,8 +1770,8 @@ compute_start_sect(struct part_desc *p, struct part_desc *ep) {
p->p.end_chs = zero_chs;
} else {
p->p.start_sect = p->start - base;
- p->p.begin_chs = ulong_to_chs(p->start);
- p->p.end_chs = ulong_to_chs(p->start + p->size - 1);
+ p->p.begin_chs = ulong_to_chs(p->start,B);
+ p->p.end_chs = ulong_to_chs(p->start + p->size - 1,B);
}
p->p.nr_sects = p->size;
return 1;
@@ -1823,7 +1781,7 @@ compute_start_sect(struct part_desc *p, struct part_desc *ep) {
int
build_surrounding_extended(struct part_desc *p, struct part_desc *ep,
struct disk_desc *z) {
- int inc = (DOS && sectors) ? sectors : 1;
+ int inc = (DOS && B.sectors) ? B.sectors : 1;
int format = F_SECTOR;
struct part_desc *p0 = &(z->partitions[0]), *eep = ep->ep;
@@ -1831,7 +1789,7 @@ build_surrounding_extended(struct part_desc *p, struct part_desc *ep,
ep->start = first_free(ep-p0, 1, eep, format, p->start, z);
ep->size = max_length(ep-p0, 1, eep, format, ep->start, z);
if (ep->start > p->start || ep->start + ep->size < p->start + p->size) {
- warn("cannot build surrounding extended partition\n");
+ warn(_("cannot build surrounding extended partition\n"));
return 0;
}
} else {
@@ -1882,7 +1840,7 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
if (fno == RD_EOF) {
return -1;
} else if (fno > 10 && *(fields[10]) != 0) {
- printf("too many input fields\n");
+ printf(_("too many input fields\n"));
return 0;
}
@@ -1893,7 +1851,7 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
/* use specified format, but round to cylinders if F_MEGABYTE specified */
format = 0;
- if (cylindersize && specified_format == F_MEGABYTE)
+ if (B.cylindersize && specified_format == F_MEGABYTE)
format = F_CYLINDER;
orig = (one_only ? &(oldp.partitions[pno]) : 0);
@@ -1916,7 +1874,7 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
}
if (ml == 0 && pno >= 4) {
/* no free blocks left - don't read any further */
- warn("No room for more\n");
+ warn(_("No room for more\n"));
return -1;
}
}
@@ -1935,7 +1893,7 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
else if (get_ul(fields[2], &ul, LINUX_NATIVE, 16))
return 0;
if (ul > 255) {
- warn("Illegal type\n");
+ warn(_("Illegal type\n"));
return 0;
}
p.p.sys_type = ul;
@@ -1967,12 +1925,12 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
p.size -= (p.size % unitsize(format));
}
if (p.size > ml1) {
- warn("Warning: exceeds max allowable size (%lu)\n", ml1 / unitsize(0));
+ warn(_("Warning: exceeds max allowable size (%lu)\n"), ml1 / unitsize(0));
if (!force)
return 0;
}
if (p.size == 0 && pno >= 4 && (fno < 2 || !*(fields[1]))) {
- warn("Warning: empty partition\n");
+ warn(_("Warning: empty partition\n"));
if (!force)
return 0;
}
@@ -1986,7 +1944,7 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
}
if (p.start < ff1 && p.size > 0) {
- warn("Warning: bad partition start (earliest %lu)\n",
+ warn(_("Warning: bad partition start (earliest %lu)\n"),
(ff1 + unitsize(0) - 1) / unitsize(0));
if (!force)
return 0;
@@ -1999,7 +1957,7 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
else if (!strcmp(fields[3], "*") || !strcmp(fields[3], "+"))
ul = 0x80;
else {
- warn("unrecognized bootable flag - choose - or *\n");
+ warn(_("unrecognized bootable flag - choose - or *\n"));
return 0;
}
p.p.bootable = ul;
@@ -2016,31 +1974,31 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
if (fno < 5) {
bb = aa;
} else if (fno < 7) {
- warn("partial c,h,s specification?\n");
+ warn(_("partial c,h,s specification?\n"));
return 0;
} else if(get_ul(fields[4], &bb.c, aa.c, 0) ||
get_ul(fields[5], &bb.h, aa.h, 0) ||
get_ul(fields[6], &bb.s, aa.s, 0))
return 0;
- p.p.begin_chs = longchs_to_chs(bb);
+ p.p.begin_chs = longchs_to_chs(bb,B);
}
{ longchs aa = chs_to_longchs(p.p.end_chs), bb;
if (fno < 8) {
bb = aa;
} else if (fno < 10) {
- warn("partial c,h,s specification?\n");
+ warn(_("partial c,h,s specification?\n"));
return 0;
} else if(get_ul(fields[7], &bb.c, aa.c, 0) ||
get_ul(fields[8], &bb.h, aa.h, 0) ||
get_ul(fields[9], &bb.s, aa.s, 0))
return 0;
- p.p.end_chs = longchs_to_chs(bb);
+ p.p.end_chs = longchs_to_chs(bb, B);
}
if (pno > 3 && p.size && show_extended && p.p.sys_type != EMPTY_PARTITION
&& (is_extended(p.p.sys_type) != (pct == 1))) {
- warn("Extended partition not where expected\n");
+ warn(_("Extended partition not where expected\n"));
if (!force)
return 0;
}
@@ -2050,7 +2008,7 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
z->partno += 4; /* reqd for out_partition() */
if (interactive)
- out_partition(dev, 0, &(z->partitions[pno]), z);
+ out_partition(dev, 0, &(z->partitions[pno]), z, B);
return 1;
}
@@ -2072,7 +2030,7 @@ read_partition(char *dev, int interactive, int pno, struct part_desc *ep,
while (!(i = read_line(pno, ep, dev, interactive, z)))
if (!interactive)
- fatal("bad input\n");
+ fatal(_("bad input\n"));
if (i < 0) {
p->ep = ep;
return 0;
@@ -2094,7 +2052,7 @@ read_partition_chain(char *dev, int interactive, struct part_desc *ep,
while (1) {
base = z->partno;
if (base+4 > SIZE(z->partitions)) {
- printf("too many partitions\n");
+ printf(_("too many partitions\n"));
break;
}
for (i=0; i<4; i++)
@@ -2127,11 +2085,9 @@ read_input(char *dev, int interactive, struct disk_desc *z) {
z->partno = 0;
if (interactive)
- warn("
-Input in the following format; absent fields get a default value.
-<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
-Usually you only need to specify <start> and <size> (and perhaps <type>).
-");
+ warn(_("Input in the following format; absent fields get a default value.\n"
+ "<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+ "Usually you only need to specify <start> and <size> (and perhaps <type>).\n"));
eof = 0;
for (i=0; i<4; i++)
@@ -2149,54 +2105,51 @@ Usually you only need to specify <start> and <size> (and perhaps <type>).
*/
static void version(void) {
- printf(PROGNAME " version " VERSION " (aeb@cwi.nl, " DATE ")\n");
+ printf("%s %s %s (aeb@cwi.nl, %s)\n", PROGNAME, _("version"), VERSION, DATE);
}
static void
usage(void) {
version();
- printf("Usage:
- " PROGNAME " [options] device ...
-device: something like /dev/hda or /dev/sda
-useful options:
- -s [or --show-size]: list size of a partition
- -c [or --id]: print or change partition Id
- -l [or --list]: list partitions of each device
- -d [or --dump]: idem, but in a format suitable for later input
- -i [or --increment]: number cylinders etc. from 1 instead of from 0
- -uS, -uB, -uC, -uM: accept/report in units of sectors/blocks/cylinders/MB
- -T [or --list-types]:list the known partition types
- -D [or --DOS]: for DOS-compatibility: waste a little space
- -R [or --re-read]: make kernel reread partition table
- -N# : change only the partition with number #
- -n : do not actually write to disk
- -O file : save the sectors that will be overwritten to file
- -I file : restore these sectors again
- -v [or --version]: print version
- -? [or --help]: print this message
-dangerous options:
- -g [or --show-geometry]: print the kernel's idea of the geometry
- -x [or --show-extended]: also list extended partitions on output
- or expect descriptors for them on input
- -L [or --Linux]: do not complain about things irrelevant for Linux
- -q [or --quiet]: suppress warning messages
- You can override the detected geometry using:
- -C# [or --cylinders #]:set the number of cylinders to use
- -H# [or --heads #]: set the number of heads to use
- -S# [or --sectors #]: set the number of sectors to use
- You can disable all consistency checking with:
- -f [or --force]: do what I say, even if it is stupid
-");
+ printf(_("Usage: %s [options] device ...\n"), PROGNAME);
+ puts (_("device: something like /dev/hda or /dev/sda"));
+ puts (_("useful options:"));
+ puts (_(" -s [or --show-size]: list size of a partition"));
+ puts (_(" -c [or --id]: print or change partition Id"));
+ puts (_(" -l [or --list]: list partitions of each device"));
+ puts (_(" -d [or --dump]: idem, but in a format suitable for later input"));
+ puts (_(" -i [or --increment]: number cylinders etc. from 1 instead of from 0"));
+ puts (_(" -uS, -uB, -uC, -uM: accept/report in units of sectors/blocks/cylinders/MB"));
+ puts (_(" -T [or --list-types]:list the known partition types"));
+ puts (_(" -D [or --DOS]: for DOS-compatibility: waste a little space"));
+ puts (_(" -R [or --re-read]: make kernel reread partition table"));
+ puts (_(" -N# : change only the partition with number #"));
+ puts (_(" -n : do not actually write to disk"));
+ puts (_(" -O file : save the sectors that will be overwritten to file"));
+ puts (_(" -I file : restore these sectors again"));
+ puts (_(" -v [or --version]: print version"));
+ puts (_(" -? [or --help]: print this message"));
+ puts (_("dangerous options:"));
+ puts (_(" -g [or --show-geometry]: print the kernel's idea of the geometry"));
+ puts (_(" -x [or --show-extended]: also list extended partitions on output\n"
+ " or expect descriptors for them on input"));
+ puts (_(" -L [or --Linux]: do not complain about things irrelevant for Linux"));
+ puts (_(" -q [or --quiet]: suppress warning messages"));
+ puts (_(" You can override the detected geometry using:"));
+ puts (_(" -C# [or --cylinders #]:set the number of cylinders to use"));
+ puts (_(" -H# [or --heads #]: set the number of heads to use"));
+ puts (_(" -S# [or --sectors #]: set the number of sectors to use"));
+ puts (_("You can disable all consistency checking with:"));
+ puts (_(" -f [or --force]: do what I say, even if it is stupid"));
exit(1);
}
static void
activate_usage(char *progn) {
- printf("Usage:
- %s device list active partitions on device
- %s device n1 n2 ... activate partitions n1 ..., inactivate the rest
- %s device activate partition n, inactivate the other ones
-", progn, progn, PROGNAME " -An");
+ puts (_("Usage:"));
+ printf(_("%s device list active partitions on device\n"), progn);
+ printf(_("%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"), progn);
+ printf(_("%s -An device activate partition n, inactivate the other ones\n"), PROGNAME);
exit(1);
}
@@ -2310,8 +2263,12 @@ main(int argc, char **argv) {
char *activatearg = 0;
char *unhidearg = 0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
if (argc < 1)
- fatal("no command?\n");
+ fatal(_("no command?\n"));
if ((progn = rindex(argv[0], '/')) == NULL)
progn = argv[0];
else
@@ -2358,11 +2315,11 @@ main(int argc, char **argv) {
activatearg = optarg;
activate = 1; break;
case 'C':
- specified_cylinders = atoi(optarg); break;
+ U.cylinders = atoi(optarg); break;
case 'D':
DOS = 1; break;
case 'H':
- specified_heads = atoi(optarg); break;
+ U.heads = atoi(optarg); break;
case 'L':
Linux = 1; break;
case 'N':
@@ -2374,7 +2331,7 @@ main(int argc, char **argv) {
case 'R':
opt_reread = 1; break;
case 'S':
- specified_sectors = atoi(optarg); break;
+ U.sectors = atoi(optarg); break;
case 'T':
list_types();
exit(0);
@@ -2434,7 +2391,7 @@ main(int argc, char **argv) {
}
if (opt_size)
- printf("total: %d blocks\n", total_size);
+ printf(_("total: %d blocks\n"), total_size);
exit(exit_status);
}
@@ -2471,18 +2428,18 @@ main(int argc, char **argv) {
}
if (do_id) {
if ((do_id & PRINT_ID) != 0 && optind != argc-2)
- fatal("usage: sfdisk --print-id device partition-number\n");
+ fatal(_("usage: sfdisk --print-id device partition-number\n"));
else if ((do_id & CHANGE_ID) != 0 && optind != argc-3)
- fatal("usage: sfdisk --change-id device partition-number Id\n");
+ fatal(_("usage: sfdisk --change-id device partition-number Id\n"));
else if (optind != argc-3 && optind != argc-2)
- fatal("usage: sfdisk --id device partition-number [Id]\n");
+ fatal(_("usage: sfdisk --id device partition-number [Id]\n"));
do_change_id(argv[optind], argv[optind+1],
(optind == argc-2) ? 0 : argv[optind+2]);
exit(exit_status);
}
if (optind != argc-1)
- fatal("can specify only one device (except with -l or -s)\n");
+ fatal(_("can specify only one device (except with -l or -s)\n"));
dev = argv[optind];
if (opt_reread)
@@ -2507,7 +2464,7 @@ my_open (char *dev, int rw, int silent) {
fd = open(dev, mode);
if (fd < 0 && !silent) {
perror(dev);
- fatal("cannot open %s %s\n", dev, rw ? "read-write" : "for reading");
+ fatal(_("cannot open %s %s\n"), dev, rw ? _("read-write") : _("for reading"));
}
return fd;
}
@@ -2532,7 +2489,7 @@ do_list (char *dev, int silent) {
if (verify) {
if (partitions_ok(z))
- warn("%s: OK\n", dev);
+ warn(_("%s: OK\n"), dev);
else
exit_status = 1;
}
@@ -2549,16 +2506,17 @@ do_geom (char *dev, int silent) {
/* get_cylindersize(dev, fd, silent); */
if (!ioctl(fd, HDIO_GETGEO, &g))
- printf("%s: %d cylinders, %d heads, %d sectors/track\n",
+ printf(_("%s: %d cylinders, %d heads, %d sectors/track\n"),
dev, g.cylinders, g.heads, g.sectors);
else
- printf("%s: unknown geometry\n", dev);
+ printf(_("%s: unknown geometry\n"), dev);
}
/* for compatibility with earlier fdisk: provide option -s */
void
do_size (char *dev, int silent) {
- int fd, size;
+ int fd;
+ long size;
fd = my_open(dev, 0, silent);
if (fd < 0)
@@ -2567,7 +2525,7 @@ do_size (char *dev, int silent) {
if(ioctl(fd, BLKGETSIZE, &size)) {
if(!silent) {
perror(dev);
- fatal("BLKGETSIZE ioctl failed for %s\n", dev);
+ fatal(_("BLKGETSIZE ioctl failed for %s\n"), dev);
}
return;
}
@@ -2579,9 +2537,9 @@ do_size (char *dev, int silent) {
return;
if (silent)
- printf("%s: %9d\n", dev, size);
+ printf("%s: %9ld\n", dev, size);
else
- printf("%d\n", size);
+ printf("%ld\n", size);
total_size += size;
}
@@ -2644,7 +2602,7 @@ do_activate (char **av, int ac, char *arg) {
else
printf("%s#%d\n", dev, pno);
if (z->partitions[pno].p.bootable != 0x80)
- warn("bad active byte: 0x%x instead of 0x80\n",
+ warn(_("bad active byte: 0x%x instead of 0x80\n"),
z->partitions[pno].p.bootable);
}
}
@@ -2661,7 +2619,7 @@ do_activate (char **av, int ac, char *arg) {
/* then write to disk */
if(write_partitions(dev, fd, z))
- warn("Done\n\n");
+ warn(_("Done\n\n"));
else
exit_status = 1;
}
@@ -2670,8 +2628,8 @@ do_activate (char **av, int ac, char *arg) {
if (z->partitions[pno].p.bootable)
i++;
if (i != 1)
- warn("You have %d active primary partitions. This does not matter for LILO,\n"
- "but the DOS MBR will only boot a disk with 1 active partition.\n", i);
+ warn(_("You have %d active primary partitions. This does not matter for LILO,\n"
+ "but the DOS MBR will only boot a disk with 1 active partition.\n"), i);
}
void
@@ -2684,7 +2642,7 @@ set_unhidden (struct disk_desc *z, char *pnam) {
if (id == 0x11 || id == 0x14 || id == 0x16 || id == 0x17)
id -= 0x10;
else
- fatal("partition %s has id %x and is not hidden\n", pnam, id);
+ fatal(_("partition %s has id %x and is not hidden\n"), pnam, id);
z->partitions[pno].p.sys_type = id;
}
@@ -2714,7 +2672,7 @@ do_unhide (char **av, int ac, char *arg) {
/* then write to disk */
if(write_partitions(dev, fd, z))
- warn("Done\n\n");
+ warn(_("Done\n\n"));
else
exit_status = 1;
}
@@ -2740,11 +2698,11 @@ void do_change_id(char *dev, char *pnam, char *id) {
}
i = strtoul(id, NULL, 16);
if (i > 255)
- fatal("Bad Id %x\n", i);
+ fatal(_("Bad Id %x\n"), i);
z->partitions[pno].p.sys_type = i;
if(write_partitions(dev, fd, z))
- warn("Done\n\n");
+ warn(_("Done\n\n"));
else
exit_status = 1;
}
@@ -2755,7 +2713,7 @@ do_reread(char *dev) {
fd = my_open(dev, 0, 0);
if(reread_ioctl(fd))
- printf("This disk is currently in use.\n");
+ printf(_("This disk is currently in use.\n"));
}
/*
@@ -2772,26 +2730,26 @@ do_fdisk(char *dev){
if (stat(dev, &statbuf) < 0) {
perror(dev);
- fatal("Fatal error: cannot find %s\n", dev);
+ fatal(_("Fatal error: cannot find %s\n"), dev);
}
if (!S_ISBLK(statbuf.st_mode)) {
- warn("Warning: %s is not a block device\n", dev);
+ warn(_("Warning: %s is not a block device\n"), dev);
+ no_reread = 1;
}
fd = my_open(dev, !no_write, 0);
if(!no_write && !no_reread) {
- warn("Checking that no-one is using this disk right now ...\n");
+ warn(_("Checking that no-one is using this disk right now ...\n"));
if(reread_ioctl(fd)) {
- printf("
-This disk is currently in use - repartitioning is probably a bad idea.
-Umount all file systems, and swapoff all swap partitions on this disk.
-Use the --no-reread flag to suppress this check.\n");
+ printf(_("\nThis disk is currently in use - repartitioning is probably a bad idea."
+ "Umount all file systems, and swapoff all swap partitions on this disk."
+ "Use the --no-reread flag to suppress this check.\n"));
if (!force) {
- printf("Use the --force flag to overrule all checks.\n");
+ printf(_("Use the --force flag to overrule all checks.\n"));
exit(1);
}
} else
- warn("OK");
+ warn(_("OK"));
}
z = &oldp;
@@ -2800,11 +2758,11 @@ Use the --no-reread flag to suppress this check.\n");
get_cylindersize(dev, fd, 0);
get_partitions(dev, fd, z);
- printf("Old situation:\n");
+ printf(_("Old situation:\n"));
out_partitions(dev, z);
if (one_only && (one_only_pno = linux_to_index(one_only, z)) < 0)
- fatal("Partition %d does not exist, cannot change it\n", one_only);
+ fatal(_("Partition %d does not exist, cannot change it\n"), one_only);
z = &newp;
@@ -2812,35 +2770,35 @@ Use the --no-reread flag to suppress this check.\n");
read_input(dev, interactive, z);
- printf("New situation:\n");
+ printf(_("New situation:\n"));
out_partitions(dev, z);
if (!partitions_ok(z) && !force) {
if(!interactive)
- fatal("I don't like these partitions - nothing changed.\n"
- "(If you really want this, use the --force option.)\n");
+ fatal(_("I don't like these partitions - nothing changed.\n"
+ "(If you really want this, use the --force option.)\n"));
else
- printf("I don't like this - probably you should answer No\n");
+ printf(_("I don't like this - probably you should answer No\n"));
}
ask:
if (interactive) {
if (no_write)
- printf("Are you satisfied with this? [ynq] ");
+ printf(_("Are you satisfied with this? [ynq] "));
else
- printf("Do you want to write this to disk? [ynq] ");
+ printf(_("Do you want to write this to disk? [ynq] "));
answer = c = getchar();
while (c != '\n' && c != EOF)
c = getchar();
if (c == EOF)
- printf("\nsfdisk: premature end of input\n");
+ printf(_("\nsfdisk: premature end of input\n"));
if (c == EOF || answer == 'q' || answer == 'Q') {
- fatal("Quitting - nothing changed\n");
+ fatal(_("Quitting - nothing changed\n"));
} else if (answer == 'n' || answer == 'N') {
continue;
} else if (answer == 'y' || answer == 'Y') {
break;
} else {
- printf("Please answer one of y,n,q\n");
+ printf(_("Please answer one of y,n,q\n"));
goto ask;
}
} else
@@ -2848,15 +2806,15 @@ Use the --no-reread flag to suppress this check.\n");
}
if(write_partitions(dev, fd, z))
- printf("Successfully wrote the new partition table\n\n");
+ printf(_("Successfully wrote the new partition table\n\n"));
else
exit_status = 1;
reread_disk_partition(dev, fd);
- warn("If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
+ warn(_("If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
"to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
- "(See fdisk(8).)\n");
+ "(See fdisk(8).)\n"));
sync(); /* superstition */
sleep(3);
diff --git a/games/Makefile b/games/Makefile
index 58a8f8f6b..23297857a 100644
--- a/games/Makefile
+++ b/games/Makefile
@@ -4,7 +4,7 @@
# Copyright 1992, 1993, 1994, 1995 Rickard E. Faith (faith@cs.unc.edu)
# May be distributed under the GPL
#
-
+include ../make_include
include ../MCONFIG
# Where to put man pages?
diff --git a/games/banner.c b/games/banner.c
index 400076e63..a429c8421 100644
--- a/games/banner.c
+++ b/games/banner.c
@@ -29,9 +29,12 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
*/
-/*
+/*
* banner - prints large signs
* banner [-w#] [-d] [-t] message ...
*/
@@ -41,6 +44,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "nls.h"
#define MAXMSG 1024
#define DWIDTH 132
@@ -1019,11 +1023,12 @@ main(argc, argv)
char **argv;
{
int ch;
-
-#ifdef __linux__
extern char *__progname;
__progname = argv[0];
-#endif
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
while ((ch = getopt(argc, argv, "w:td")) != EOF)
switch(ch) {
@@ -1040,7 +1045,7 @@ main(argc, argv)
break;
case '?':
default:
- fprintf(stderr, "usage: banner [-w width]\n");
+ fprintf(stderr, _("usage: banner [-w width]\n"));
exit(1);
}
argc -= optind;
@@ -1060,7 +1065,7 @@ main(argc, argv)
}
nchars = strlen(message);
} else {
- fprintf(stderr,"Message: ");
+ fprintf(stderr,_("Message: "));
(void)fgets(message, sizeof(message), stdin);
nchars = strlen(message);
message[nchars--] = '\0'; /* get rid of newline */
@@ -1094,7 +1099,7 @@ main(argc, argv)
for (i = 0; i < nchars; i++)
if ((u_char) message[i] >= NCHARS ||
asc_ptr[(u_char) message[i]] == 0) {
- warnx("The character '%c' is not in my character set",
+ warnx(_("The character '%c' is not in my character set"),
message[i]);
j++;
}
@@ -1102,7 +1107,7 @@ main(argc, argv)
exit(1);
if (trace)
- printf("Message '%s' is OK\n",message);
+ printf(_("Message '%s' is OK\n"),message);
/* Now have message. Print it one character at a time. */
for (i = 0; i < nchars; i++) {
diff --git a/getopt-1.0.3a/COPYING b/getopt-1.0.3b/COPYING
index a43ea2126..a43ea2126 100644
--- a/getopt-1.0.3a/COPYING
+++ b/getopt-1.0.3b/COPYING
diff --git a/getopt-1.0.3a/Changelog b/getopt-1.0.3b/Changelog
index 24a4c3235..24a4c3235 100644
--- a/getopt-1.0.3a/Changelog
+++ b/getopt-1.0.3b/Changelog
diff --git a/getopt-1.0.3a/Makefile b/getopt-1.0.3b/Makefile
index 0d4a5ad06..92e99e9de 100644
--- a/getopt-1.0.3a/Makefile
+++ b/getopt-1.0.3b/Makefile
@@ -1,5 +1,6 @@
.SUFFIXES:
+include ../make_include
include ../MCONFIG
GETOPTDIR=$(USRLIBDIR)/getopt
diff --git a/getopt-1.0.3a/README b/getopt-1.0.3b/README
index 1d795f5e4..1d795f5e4 100644
--- a/getopt-1.0.3a/README
+++ b/getopt-1.0.3b/README
diff --git a/getopt-1.0.3a/TODO b/getopt-1.0.3b/TODO
index 70f2ea9cb..70f2ea9cb 100644
--- a/getopt-1.0.3a/TODO
+++ b/getopt-1.0.3b/TODO
diff --git a/getopt-1.0.3a/getopt.1 b/getopt-1.0.3b/getopt.1
index c3aaa0195..c3aaa0195 100644
--- a/getopt-1.0.3a/getopt.1
+++ b/getopt-1.0.3b/getopt.1
diff --git a/getopt-1.0.3a/getopt.c b/getopt-1.0.3b/getopt.c
index de643f1a7..345c1b977 100644
--- a/getopt-1.0.3a/getopt.c
+++ b/getopt-1.0.3b/getopt.c
@@ -28,6 +28,10 @@
* Version 1.0.2: Thu Jun 11 1998 (not present)
* Fixed gcc-2.8.1 warnings
* Fixed --version/-V option (not present)
+ * Version 1.0.3
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <stdio.h>
@@ -35,6 +39,7 @@
#include <string.h>
#include <unistd.h>
#include <ctype.h>
+#include "../lib/nls.h"
#if LIBCGETOPT
#include <getopt.h>
@@ -77,7 +82,7 @@ void *our_malloc(size_t size)
{
void *ret=malloc(size);
if (! ret) {
- fputs("getopt: Out of memory!",stderr);
+ fprintf(stderr,_("%s: Out of memory!\n"),"getopt");
exit(3);
}
return(ret);
@@ -87,7 +92,7 @@ void *our_realloc(void *ptr, size_t size)
{
void *ret=realloc(ptr,size);
if (! ret && size) {
- fputs("getopt: Out of memory!",stderr);
+ fprintf(stderr,_("%s: Out of memory!\n"), "getopt");
exit(3);
}
return(ret);
@@ -221,7 +226,7 @@ void parse_error(const char *message)
{
if (message)
fprintf(stderr,"getopt: %s\n",message);
- fputs("Try `getopt --help' for more information.\n",stderr);
+ fputs(_("Try `getopt --help' for more information.\n"),stderr);
exit(2);
}
@@ -287,8 +292,8 @@ void add_long_options(char *options)
arg_opt=required_argument;
}
if (strlen(tokptr) == 0)
- parse_error("empty long option after "
- "-l or --long argument");
+ parse_error(_("empty long option after "
+ "-l or --long argument"));
}
add_longopt(tokptr,arg_opt);
}
@@ -307,25 +312,25 @@ void set_shell(const char *new_shell)
else if (!strcmp(new_shell,"csh"))
shell=TCSH;
else
- parse_error("unknown shell after -s or --shell argument");
+ parse_error(_("unknown shell after -s or --shell argument"));
}
void print_help(void)
{
- fputs("Usage: getopt optstring parameters\n",stderr);
- fputs(" getopt [options] [--] optstring parameters\n",stderr);
- fputs(" getopt [options] -o|--options optstring [options] [--]\n",stderr);
- fputs(" parameters\n",stderr);
- fputs(" -a, --alternative Allow long options starting with single -\n",stderr);
- fputs(" -h, --help This small usage guide\n",stderr);
- fputs(" -l, --longoptions=longopts Long options to be recognized\n",stderr);
- fputs(" -n, --name=progname The name under which errors are reported\n",stderr);
- fputs(" -o, --options=optstring Short options to be recognized\n",stderr);
- fputs(" -q, --quiet Disable error reporting by getopt(3)\n",stderr);
- fputs(" -Q, --quiet-output No normal output\n",stderr);
- fputs(" -s, --shell=shell Set shell quoting conventions\n",stderr);
- fputs(" -T, --test Test for getopt(1) version\n",stderr);
- fputs(" -V, --version Output version information\n",stderr);
+ fputs(_("Usage: getopt optstring parameters\n"),stderr);
+ fputs(_(" getopt [options] [--] optstring parameters\n"),stderr);
+ fputs(_(" getopt [options] -o|--options optstring [options] [--]\n"),stderr);
+ fputs(_(" parameters\n"),stderr);
+ fputs(_(" -a, --alternative Allow long options starting with single -\n"),stderr);
+ fputs(_(" -h, --help This small usage guide\n"),stderr);
+ fputs(_(" -l, --longoptions=longopts Long options to be recognized\n"),stderr);
+ fputs(_(" -n, --name=progname The name under which errors are reported\n"),stderr);
+ fputs(_(" -o, --options=optstring Short options to be recognized\n"),stderr);
+ fputs(_(" -q, --quiet Disable error reporting by getopt(3)\n"),stderr);
+ fputs(_(" -Q, --quiet-output No normal output\n"),stderr);
+ fputs(_(" -s, --shell=shell Set shell quoting conventions\n"),stderr);
+ fputs(_(" -T, --test Test for getopt(1) version\n"),stderr);
+ fputs(_(" -V, --version Output version information\n"),stderr);
exit(2);
}
@@ -361,6 +366,10 @@ int main(int argc, char *argv[])
int opt;
int compatible=0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
init_longopt();
if (getenv("GETOPT_COMPATIBLE"))
@@ -375,7 +384,7 @@ int main(int argc, char *argv[])
exit(0);
}
else
- parse_error("missing optstring argument");
+ parse_error(_("missing optstring argument"));
}
if (argv[1][0] != '-' || compatible) {
@@ -421,19 +430,19 @@ int main(int argc, char *argv[])
case 'T':
exit(4);
case 'V':
- printf("getopt (enhanced) 1.0.3\n");
+ printf(_("getopt (enhanced) 1.0.3\n"));
exit(0);
case '?':
case ':':
parse_error(NULL);
default:
- parse_error("internal error, contact the author.");
+ parse_error(_("internal error, contact the author."));
}
if (!optstr)
{
if (optind >= argc)
- parse_error("missing optstring argument");
+ parse_error(_("missing optstring argument"));
else {
optstr=our_malloc(strlen(argv[optind])+1);
strcpy(optstr,argv[optind]);
diff --git a/getopt-1.0.3a/gnu/getopt.c b/getopt-1.0.3b/gnu/getopt.c
index 59b51cd67..59b51cd67 100644
--- a/getopt-1.0.3a/gnu/getopt.c
+++ b/getopt-1.0.3b/gnu/getopt.c
diff --git a/getopt-1.0.3a/gnu/getopt.h b/getopt-1.0.3b/gnu/getopt.h
index d6ceb0eee..d6ceb0eee 100644
--- a/getopt-1.0.3a/gnu/getopt.h
+++ b/getopt-1.0.3b/gnu/getopt.h
diff --git a/getopt-1.0.3a/gnu/getopt1.c b/getopt-1.0.3b/gnu/getopt1.c
index 4aa8de6f6..4aa8de6f6 100644
--- a/getopt-1.0.3a/gnu/getopt1.c
+++ b/getopt-1.0.3b/gnu/getopt1.c
diff --git a/getopt-1.0.3a/parse.bash b/getopt-1.0.3b/parse.bash
index 864fc0add..864fc0add 100644
--- a/getopt-1.0.3a/parse.bash
+++ b/getopt-1.0.3b/parse.bash
diff --git a/getopt-1.0.3a/parse.tcsh b/getopt-1.0.3b/parse.tcsh
index 2266d0e64..2266d0e64 100644
--- a/getopt-1.0.3a/parse.tcsh
+++ b/getopt-1.0.3b/parse.tcsh
diff --git a/getopt-1.0.3a/test.bash b/getopt-1.0.3b/test.bash
index 149e1f9b0..149e1f9b0 100644
--- a/getopt-1.0.3a/test.bash
+++ b/getopt-1.0.3b/test.bash
diff --git a/getopt-1.0.3a/test.tcsh b/getopt-1.0.3b/test.tcsh
index d661e767d..d661e767d 100644
--- a/getopt-1.0.3a/test.tcsh
+++ b/getopt-1.0.3b/test.tcsh
diff --git a/getpoe.sh b/getpoe.sh
deleted file mode 100644
index 6c808946b..000000000
--- a/getpoe.sh
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/bash -x
-adm=/tmp/admutil
-poe=/tmp/poeigl
-tmp=/tmp/$$
-diffs=poe.diffs
-
-if [ -e $diffs ]; then rm $diffs; fi
-if [ ! -d $tmp ]; then mkdir $tmp; fi
-
-function cmpandcp () {
- dir=$1;
- i=$2;
- name=${i#$poe/};
- name=${name#$adm/};
- target=$dir/$name;
- diff -u $target.c $i.c >> $diffs;
- mv $target.c $tmp/$name.c;
- mv $i.c $target.c;
- for k in man 1 8; do
- if [ -e $i.$k ]; then
- for j in 1 8; do
- if [ -e $target.$j ]; then
- diff -u $target.$j $i.$k >> $diffs;
- mv $target.$j $tmp/$name.$j;
- mv $i.$k $target.$j;
- fi
- done
- fi
- done
-}
-
-
-# login-utils
-for i in $poe/agetty $adm/last $poe/login $adm/newgrp $adm/passwd \
- $adm/shutdown $poe/simpleinit; do
- cmpandcp login-utils $i;
-done
-
-# misc-utils
-cmpandcp misc-utils $poe/hostid;
-cmpandcp misc-utils $poe/domainname;
-
-# sys-utils
-cmpandcp sys-utils $adm/ctrlaltdel;
-
-# READMEs
-diff -u $adm/README login-utils/README.admutil >> $diffs
-mv $adm/README login-utils/README.admutil
-
-diff -u $poe/README login-utils/README.poeigl >> $diffs
-mv $poe/README login-utils/README.poeigl
-
-diff -u $poe/README.getty login-utils >> $diffs
-mv $poe/README.getty login-utils
-
-exit
diff --git a/kbd/Makefile b/kbd/Makefile
new file mode 100644
index 000000000..30bfb0e80
--- /dev/null
+++ b/kbd/Makefile
@@ -0,0 +1,25 @@
+# Makefile -- Makefile for util-linux Linux utilities
+#
+include ../make_include
+include ../MCONFIG
+
+# Where to put man pages?
+
+MAN8= kbdrate.8
+
+# Where to put binaries?
+# See the "install" rule for the links. . .
+
+SBIN= kbdrate
+
+all: $(SBIN)
+
+kbdrate: kbdrate.o
+
+install: all
+ $(INSTALLDIR) $(SBINDIR) $(MAN8DIR)
+ $(INSTALLBIN) $(SBIN) $(SBINDIR)
+ $(INSTALLMAN) $(MAN8) $(MAN8DIR)
+
+clean:
+ -rm -f *.o *~ core $(SBIN)
diff --git a/kbd/README b/kbd/README
new file mode 100644
index 000000000..97ca5bdee
--- /dev/null
+++ b/kbd/README
@@ -0,0 +1,2 @@
+This stuff belongs in the kbd package and will disappear here.
+It is left for a while - version in kbd* and here will be identical.
diff --git a/kbd/README.clear b/kbd/README.clear
new file mode 100644
index 000000000..7684132de
--- /dev/null
+++ b/kbd/README.clear
@@ -0,0 +1,7 @@
+RedHat and SuSE take the program clear from ncurses.
+ A 20KB program equivalent to "tput clear".
+
+Slackware uses the script.
+
+So, both versions will behave identically, and
+Slackware saves 20 KB.
diff --git a/kbd/README.reset b/kbd/README.reset
new file mode 100644
index 000000000..8060d265d
--- /dev/null
+++ b/kbd/README.reset
@@ -0,0 +1,20 @@
+RedHat and SuSE take the program reset from ncurses,
+ where reset is a name for the program tset.
+ It is approximately equivalent to
+ stty sane; tputs rs1; tputs rs2; tputs rf
+ with `tputs rf' replaced by `tputs if' when there is an
+ init_file but no reset_file. In the comments it wonders
+ whether also sending rs3, rmacs, rmul, rmm might be a good idea.
+
+Slackware uses the small script given here.
+ The part `echo -e \\033c' is the canonical reset of the kernel
+ console status, and is equivalent to `tputs rs1' for a linux
+ terminal.
+
+So, both versions are approximately the same.
+
+
+[A disadvantage of `echo -e \\033c' might be that it is potentially
+wrong on a non-vt100, non-xterm, non-linux terminal.
+An advantage is that there are terminfo entries for xterm around
+that only use rs1=^O as reset, and then \Ec is much better.]
diff --git a/kbd/clear b/kbd/clear
new file mode 100755
index 000000000..73d1ebe1c
--- /dev/null
+++ b/kbd/clear
@@ -0,0 +1,2 @@
+#! /bin/sh
+tput clear
diff --git a/kbd/clear.1 b/kbd/clear.1
new file mode 100644
index 000000000..9d2082304
--- /dev/null
+++ b/kbd/clear.1
@@ -0,0 +1,31 @@
+.\" Copyright 1992 Rickard E. Faith (faith@cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.TH CLEAR 1 "10 October 1993" "Linux 0.99" "Linux Programmer's Manual"
+.SH NAME
+clear \- clear terminal screen
+.SH SYNOPSIS
+.BR clear
+.SH DESCRIPTION
+.B clear
+calls
+.BR tput (1)
+with the
+.I clear
+argument. This causes
+.B tput
+to attempt to clear the screen checking the data in
+.I /etc/termcap
+(for the GNU or BSD
+.BR tput )
+or in the terminfo database
+(for the
+.B ncurses
+.BR tput )
+and sending the appropriate sequence to the terminal. This command can be
+redirected to clear the screen of some other terminal.
+.SH "SEE ALSO"
+.BR reset (1),
+.BR stty (1),
+.BR tput (1)
+.SH AUTHOR
+Rik Faith (faith@cs.unc.edu)
diff --git a/kbd/kbdrate.8 b/kbd/kbdrate.8
new file mode 100644
index 000000000..66715de05
--- /dev/null
+++ b/kbd/kbdrate.8
@@ -0,0 +1,68 @@
+.\" Copyright 1992, 1994 Rickard E. Faith (faith@cs.unc.edu)
+.\" May be distributed under the GNU General Public License
+.\" Updated Wed Jun 22 21:09:43 1994, faith@cs.unc.edu
+.\"
+.TH KBDRATE 8 "22 June 1994" "Linux 1.1.19" "Linux Programmer's Manual"
+.SH NAME
+kbdrate \- reset the keyboard repeat rate and delay time
+.SH SYNOPSIS
+.B "kbdrate [ \-s ] [ \-r"
+rate
+.B "] [ \-d"
+delay
+.B ]
+.SH DESCRIPTION
+.B kbdrate
+is used to change the keyboard repeat rate and delay time. The delay
+is the amount of time that a key must be depressed before it will start to
+repeat.
+
+Using
+.B kbdrate
+without any options will reset the repeat rate to 10.9 characters per second (cps)
+and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems.
+These are the IBM defaults. On SPARC-based systems it will reset the repeat rate
+to 5 cps and the delay to 200 ms.
+
+.SH OPTIONS
+.TP
+.B \-s
+Silent. No messages are printed.
+.TP
+.BI \-r " rate"
+Change the keyboard repeat rate to
+.I rate
+cps. For Intel-based systems, the allowable range is from 2.0 to 30.0 cps.
+Only certain, specific values are possible, and the program will select the
+nearest possible value to the one specified. The possible values are given,
+in characters per second, as follows: 2.0, 2.1, 2.3, 2.5, 2.7, 3.0, 3.3, 3.7,
+4.0, 4.3, 4.6, 5.0, 5.5, 6.0, 6.7, 7.5, 8.0, 8.6, 9.2, 10.0, 10.9, 12.0, 13.3,
+15.0, 16.0, 17.1, 18.5, 20.0, 21.8, 24.0, 26.7, 30.0.
+For SPARC-based systems, the allowable range is from 0 (no repeat) to 50 cps.
+.TP
+.BI \-d " delay"
+Change the delay to
+.I delay
+milliseconds.
+For Intel-based systems, the allowable range is from 250 to 1000 ms,
+in 250 ms steps. For SPARC systems, possible values are between 10 ms and 1440 ms,
+in 10 ms steps.
+.SH BUGS
+Not all keyboards support all rates.
+.PP
+Not all keyboards have the rates mapped in the same way.
+.PP
+Setting the repeat rate on the Gateway AnyKey keyboard does not work. If
+someone with a Gateway figures out how to program the keyboard, please send
+mail to util-linux@math.uio.no.
+.PP
+All this is very architecture dependent.
+Nowadays
+.B kbdrate
+first tries the KDKBDREP and KIOCSRATE ioctls.
+(The former usually works on an m68k machine, the latter for SPARC.)
+When these ioctls fail an ioport interface as on i386 is assumed.
+.SH FILES
+.I /etc/rc.local
+.br
+.I /dev/port
diff --git a/sys-utils/kbdrate.c b/kbd/kbdrate.c
index 504429452..5388a6ef0 100644
--- a/sys-utils/kbdrate.c
+++ b/kbd/kbdrate.c
@@ -15,10 +15,10 @@ will start to repeat.
Usage examples:
-kbdrate set rate to IBM default (10.9 cps, 250mS delay)
-kbdrate -r 30.0 set rate to 30 cps and delay to 250mS
-kbdrate -r 20.0 -s set rate to 20 cps (delay 250mS) -- don't print message
-kbdrate -r 0 -d 0 set rate to 2.0 cps and delay to 250 mS
+kbdrate set rate to IBM default (10.9 cps, 250ms delay)
+kbdrate -r 30.0 set rate to 30 cps and delay to 250ms
+kbdrate -r 20.0 -s set rate to 20 cps (delay 250ms) -- don't print message
+kbdrate -r 0 -d 0 set rate to 2.0 cps and delay to 250 ms
I find it useful to put kbdrate in my /etc/rc file so that the keyboard
rate is set to something that I find comfortable at boot time. This sure
@@ -57,6 +57,15 @@ beats rebuilding the kernel!
kbdrate now first tries if the KDKBDREP ioctl is available. If it
is, it is used, else the old method is applied.
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
+ 1999-03-17
+ Linux/SPARC modifications by Jeffrey Connell <ankh@canuck.gen.nz>:
+ It seems that the KDKBDREP ioctl is not available on this platform.
+ However, Linux/SPARC has its own ioctl for this, with yet another
+ different measurement system. Thus, try for KIOCSRATE, too.
+
*/
#include <stdio.h>
@@ -65,14 +74,18 @@ beats rebuilding the kernel!
#include <errno.h>
#include <sys/file.h>
#include <sys/ioctl.h>
-#include <linux/version.h>
-#if LINUX_VERSION_CODE >= 131072
-/* kd.h is not available with all linux versions. 131072 is equivalent
- to linux 2.0.0 */
+
+#include "../defines.h"
+#ifdef HAVE_kd_h
#include <linux/kd.h>
#endif
+#ifdef __sparc__
+#include <asm/param.h>
+#include <asm/kbio.h>
+#endif
-#define VERSION "1.3"
+#include "nls.h"
+#include "../version.h"
static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
133, 120, 109, 100, 92, 86, 80, 75, 67,
@@ -83,15 +96,98 @@ static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
static int valid_delays[] = { 250, 500, 750, 1000 };
#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
+int
+KDKBDREP_ioctl_ok(double rate, int delay, int silent) {
#ifdef KDKBDREP
-static int ioctl_possible = 0;
-struct kbd_repeat kbdrep_s;
-#endif
+ /* This ioctl is defined in <linux/kd.h> but is not
+ implemented anywhere - must be in some m68k patches. */
+ struct kbd_repeat kbdrep_s;
+
+ /* don't change, just test */
+ kbdrep_s.rate = -1;
+ kbdrep_s.delay = -1;
+ if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
+ if (errno == EINVAL)
+ return 0;
+ perror( "ioctl(KDKBDREP)" );
+ exit( 1 );
+ }
+
+ /* do the change */
+ if (rate == 0) /* switch repeat off */
+ kbdrep_s.rate = 0;
+ else
+ kbdrep_s.rate = 1000.0 / rate; /* convert cps to msec */
+ if (kbdrep_s.rate < 1)
+ kbdrep_s.rate = 1;
+ kbdrep_s.delay = delay;
+ if (kbdrep_s.delay < 1)
+ kbdrep_s.delay = 1;
+
+ if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
+ perror( "ioctl(KDKBDREP)" );
+ exit( 1 );
+ }
+
+ /* report */
+ if (kbdrep_s.rate == 0)
+ rate = 0;
+ else
+ rate = 1000.0 / (double) kbdrep_s.rate;
+
+ if (!silent)
+ printf( _("Typematic Rate set to %.1f cps (delay = %d ms)\n"),
+ rate, kbdrep_s.delay );
+
+ return 1; /* success! */
+
+#else /* no KDKBDREP */
+ return 0;
+#endif /* KDKBDREP */
+}
+
+int
+KIOCSRATE_ioctl_ok(double rate, int delay, int silent) {
+#ifdef KIOCSRATE
+ struct kbd_rate kbdrate_s;
+ int fd;
+
+ fd = open("/dev/kbd", O_RDONLY);
+ if (fd == -1) {
+ perror( "open(/dev/kbd)" );
+ exit( 1 );
+ }
+
+ kbdrate_s.rate = (int) (rate + 0.5); /* must be integer, so round up */
+ kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */
+ if (kbdrate_s.rate > 50)
+ kbdrate_s.rate = 50;
+
+ if (ioctl( fd, KIOCSRATE, &kbdrate_s )) {
+ perror( "ioctl(KIOCSRATE)" );
+ exit( 1 );
+ }
+ close( fd );
+
+ if (!silent)
+ printf( "Typematic Rate set to %d cps (delay = %d ms)\n",
+ kbdrate_s.rate, kbdrate_s.delay * 1000 / HZ );
+
+ return 1;
+#else /* no KIOCSRATE */
+ return 0;
+#endif /* KIOCSRATE */
+}
int main( int argc, char **argv )
{
+#ifdef __sparc__
+ double rate = 5.0; /* Default rate */
+ int delay = 200; /* Default delay */
+#else
double rate = 10.9; /* Default rate */
int delay = 250; /* Default delay */
+#endif
int value = 0x7f; /* Maximum delay with slowest rate */
/* DO NOT CHANGE this value */
int silent = 0;
@@ -101,7 +197,12 @@ int main( int argc, char **argv )
int i;
extern char *optarg;
- while ( (c = getopt( argc, argv, "r:d:sv" )) != EOF )
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+
+ while ( (c = getopt( argc, argv, "r:d:sv" )) != EOF ) {
switch (c) {
case 'r':
rate = atof( optarg );
@@ -113,43 +214,17 @@ int main( int argc, char **argv )
silent = 1;
break;
case 'v':
- fprintf( stderr, "util-linux kbdrate " VERSION "\n");
+ fprintf( stderr, "util-linux %s kbdrate\n", UTIL_LINUX_VERSION);
exit(0);
}
+ }
+
+ if(KDKBDREP_ioctl_ok(rate, delay, silent)) /* m68k? */
+ return 0;
+
+ if(KIOCSRATE_ioctl_ok(rate, delay, silent)) /* sparc? */
+ return 0;
-#ifdef KDKBDREP
- kbdrep_s.rate = -1; /* don't change, just test */
- kbdrep_s.delay = -1;
- if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
- if (errno == EINVAL)
- ioctl_possible = 0;
- else {
- perror( "ioctl(KDKBDREP)" );
- exit( 1 );
- }
- } else ioctl_possible = 1;
-
- if (ioctl_possible) {
- if (rate == 0) /* switch repeat off */
- kbdrep_s.rate = 0;
- else
- kbdrep_s.rate = 1000.0 / rate; /* convert cps to msec */
- if (kbdrep_s.rate < 1)
- kbdrep_s.rate = 1;
- kbdrep_s.delay = delay;
- if (kbdrep_s.delay < 1)
- kbdrep_s.delay = 1;
-
- if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
- perror( "ioctl(KDKBDREP)" );
- exit( 1 );
- }
-
- if (!silent)
- printf( "Typematic Rate set to %.1f cps (delay = %d mS)\n",
- 1000.0 / (double)kbdrep_s.rate, kbdrep_s.delay );
- } else {
-#endif
/* The ioport way */
@@ -169,7 +244,7 @@ int main( int argc, char **argv )
}
if ( (fd = open( "/dev/port", O_RDWR )) < 0) {
- perror( "Cannot open /dev/port" );
+ perror( _("Cannot open /dev/port") );
exit( 1 );
}
@@ -193,13 +268,9 @@ int main( int argc, char **argv )
close( fd );
- if (!silent) printf( "Typematic Rate set to %.1f cps (delay = %d mS)\n",
+ if (!silent) printf( _("Typematic Rate set to %.1f cps (delay = %d ms)\n"),
valid_rates[value & 0x1f] / 10.0,
valid_delays[ (value & 0x60) >> 5 ] );
-#ifdef KDKBDREP
- }
-#endif
-
return 0;
}
diff --git a/kbd/reset b/kbd/reset
new file mode 100755
index 000000000..fb9834db2
--- /dev/null
+++ b/kbd/reset
@@ -0,0 +1,11 @@
+#!/bin/sh
+stty sane
+tput clear
+tput rmacs
+tput rmm
+tput rmso
+tput rmul
+tput rs1
+tput rs2
+tput rs3
+echo -e \\033c
diff --git a/lib/Makefile b/lib/Makefile
index 5503a6059..a9f8596d1 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -1,13 +1,16 @@
+include ../make_include
include ../MCONFIG
CFLAGS=-I$(LIB) $(OPT)
-all: err.o my_reboot.o setproctitle.o
+all: err.o my_reboot.o setproctitle.o env.o
err.o: err.c
my_reboot.o: my_reboot.c linux_reboot.h
+env.o: env.h
+
setproctitle.o: setproctitle.h
.PHONY: clean
diff --git a/lib/env.c b/lib/env.c
new file mode 100644
index 000000000..69c821c2d
--- /dev/null
+++ b/lib/env.c
@@ -0,0 +1,73 @@
+/*
+ * Security checks of enviroment
+ * Added from shadow-utils package
+ * by Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "env.h"
+
+extern char **environ;
+
+static char * const forbid[] = {
+ "_RLD_=",
+ "BASH_ENV=", /* GNU creeping featurism strikes again... */
+ "ENV=",
+ "HOME=",
+ "IFS=",
+ "KRB_CONF=",
+ "LD_", /* anything with the LD_ prefix */
+ "LIBPATH=",
+ "MAIL=",
+ "NLSPATH=",
+ "PATH=",
+ "SHELL=",
+ "SHLIB_PATH=",
+ (char *) 0
+};
+
+/* these are allowed, but with no slashes inside
+ (to work around security problems in GNU gettext) */
+static char * const noslash[] = {
+ "LANG=",
+ "LANGUAGE=",
+ "LC_", /* anything with the LC_ prefix */
+ (char *) 0
+};
+
+void
+sanitize_env(void)
+{
+ char **envp = environ;
+ char * const *bad;
+ char **cur;
+ char **move;
+
+ for (cur = envp; *cur; cur++) {
+ for (bad = forbid; *bad; bad++) {
+ if (strncmp(*cur, *bad, strlen(*bad)) == 0) {
+ for (move = cur; *move; move++)
+ *move = *(move + 1);
+ cur--;
+ break;
+ }
+ }
+ }
+
+ for (cur = envp; *cur; cur++) {
+ for (bad = noslash; *bad; bad++) {
+ if (strncmp(*cur, *bad, strlen(*bad)) != 0)
+ continue;
+ if (!strchr(*cur, '/'))
+ continue; /* OK */
+ for (move = cur; *move; move++)
+ *move = *(move + 1);
+ cur--;
+ break;
+ }
+ }
+}
+
diff --git a/lib/env.h b/lib/env.h
new file mode 100644
index 000000000..d69b4f295
--- /dev/null
+++ b/lib/env.h
@@ -0,0 +1,2 @@
+extern void sanitize_env (void);
+
diff --git a/lib/err.c b/lib/err.c
index 2731a714f..d53192240 100644
--- a/lib/err.c
+++ b/lib/err.c
@@ -43,9 +43,11 @@
#include <varargs.h>
#endif
+#include "../defines.h"
+#ifdef HAVE_progname
extern char *__progname; /* Program name, from crt0. */
-#ifdef __linux__
-char *__progname;
+#else
+char *__progname = "foo"; /* probably libc4 */
#endif
__dead void
diff --git a/lib/nls.h b/lib/nls.h
new file mode 100644
index 000000000..67b42a999
--- /dev/null
+++ b/lib/nls.h
@@ -0,0 +1,33 @@
+
+#include "../defines.h" /* for HAVE_locale_h */
+
+#ifndef PACKAGE
+#define PACKAGE "util-linux"
+#endif
+
+#ifndef LOCALEDIR
+#define LOCALEDIR "/usr/share/locale"
+#endif
+
+#ifdef HAVE_locale_h
+# include <locale.h>
+#endif
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(Text) gettext (Text)
+# ifdef gettext_noop
+# define N_(String) gettext_noop (String)
+# else
+# define N_(String) (String)
+# endif
+#else
+# undef bindtextdomain
+# define bindtextdomain(Domain, Directory) /* empty */
+# undef textdomain
+# define textdomain(Domain) /* empty */
+# define _(Text) (Text)
+# define N_(Text) (Text)
+#endif
+
+
diff --git a/lib/setproctitle.c b/lib/setproctitle.c
index bff1362da..319bc6a9f 100644
--- a/lib/setproctitle.c
+++ b/lib/setproctitle.c
@@ -20,10 +20,6 @@
#include <stdarg.h>
#include "setproctitle.h"
-#ifndef SPT_PADCHAR
-#define SPT_PADCHAR ' '
-#endif
-
#ifndef SPT_BUFSIZE
#define SPT_BUFSIZE 2048
#endif
@@ -65,7 +61,6 @@ initproctitle (int argc, char **argv) {
/* Nice code, but many places do not know about vsnprintf ... */
void
setproctitle (const char *fmt,...) {
- char *p;
int i;
char buf[SPT_BUFSIZE];
va_list ap;
@@ -82,16 +77,14 @@ setproctitle (const char *fmt,...) {
i = argv_lth - 2;
buf[i] = '\0';
}
+ memset(argv0[0], '\0', argv_lth); /* clear the memory area */
(void) strcpy (argv0[0], buf);
- p = &argv0[0][i];
- while (i < argv_lth)
- *p++ = SPT_PADCHAR, i++;
+
argv0[1] = NULL;
}
#else
void
setproctitle (const char *prog, const char *txt) {
- char *p;
int i;
char buf[SPT_BUFSIZE];
@@ -108,10 +101,9 @@ setproctitle (const char *prog, const char *txt) {
i = argv_lth - 2;
buf[i] = '\0';
}
+ memset(argv0[0], '\0', argv_lth); /* clear the memory area */
(void) strcpy (argv0[0], buf);
- p = &argv0[0][i];
- while (i < argv_lth)
- *p++ = SPT_PADCHAR, i++;
+
argv0[1] = NULL;
}
#endif
diff --git a/COPYING.GPL b/licenses/COPYING.GPL
index a43ea2126..a43ea2126 100644
--- a/COPYING.GPL
+++ b/licenses/COPYING.GPL
diff --git a/COPYING.UCB b/licenses/COPYING.UCB
index 9abbf2410..9abbf2410 100644
--- a/COPYING.UCB
+++ b/licenses/COPYING.UCB
diff --git a/login-utils/Makefile b/login-utils/Makefile
index f4bbc5a99..4dcfee26f 100644
--- a/login-utils/Makefile
+++ b/login-utils/Makefile
@@ -3,9 +3,10 @@
# Revised: Sun Nov 10 20:28:43 1996 by faith@cs.unc.edu
# Copyright 1992, 1993, 1994, 1995 Rickard E. Faith (faith@cs.unc.edu)
#
-# Suggested changed from Bauke Jan Douma <bjdouma@xs4all.nl> have been
+# Suggested changes from Bauke Jan Douma <bjdouma@xs4all.nl> have been
# implemented to handle shadow and sysvinit systems
+include ../make_include
include ../MCONFIG
# Where to put man pages?
@@ -37,7 +38,7 @@ USRBIN.PASSWD= passwd
USRSBIN.PUTILS= vipw
-ifeq "$(HAVE_LIBCRYPT)" "yes"
+ifeq "$(NEED_LIBCRYPT)" "yes"
CRYPT=-lcrypt
endif
@@ -84,9 +85,9 @@ all-misc: $(USRBIN.MISC)
agetty.o: $(LIB)/pathnames.h
agetty: agetty.o
-chfn: chfn.o islocal.o setpwnam.o
+chfn: chfn.o islocal.o setpwnam.o $(LIB)/env.o
$(CC) $(LDFLAGS) -o $@ $^ $(CRYPT) $(PAM)
-chsh: chsh.o islocal.o setpwnam.o
+chsh: chsh.o islocal.o setpwnam.o $(LIB)/env.o
$(CC) $(LDFLAGS) -o $@ $^ $(CRYPT) $(PAM)
islocal.o: $(LIB)/pathnames.h
last.o: $(LIB)/pathnames.h
@@ -101,13 +102,17 @@ login: login.o $(LIB)/setproctitle.o checktty.o
endif
mesg: mesg.o $(ERR_O)
+
newgrp: newgrp.o
$(CC) $(LDFLAGS) -o $@ $^ $(CRYPT) $(PAM)
+
setpwnam.o: $(LIB)/pathnames.h
shutdown.o: $(LIB)/pathnames.h $(LIB)/linux_reboot.h
shutdown: shutdown.o $(LIB)/my_reboot.o
simpleinit.o: $(LIB)/pathnames.h $(LIB)/linux_reboot.h
simpleinit: simpleinit.o $(LIB)/my_reboot.o
+ $(CC) $(LDFLAGS) -o $@ $^ $(CRYPT)
+
vipw.o: $(LIB)/pathnames.h
vipw: vipw.o
@@ -127,7 +132,7 @@ login.o: $(LIB)/pathnames.h
mesg.o: $(LIB)/err.h
endif
-passwd: passwd.o islocal.o setpwnam.o
+passwd: passwd.o islocal.o setpwnam.o $(LIB)/env.o
$(CC) $(LDFLAGS) -o $@ $^ $(CRYPT)
ifeq "$(REQUIRE_PASSWORD)" "yes"
diff --git a/login-utils/agetty.c b/login-utils/agetty.c
index 96d7b38d0..c85526dc0 100644
--- a/login-utils/agetty.c
+++ b/login-utils/agetty.c
@@ -4,6 +4,13 @@
be here. Now read the real man-page agetty.8 instead.
-f option added by Eric Rasmussen <ear@usfirst.org> - 12/28/95
+
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
+ 1999-05-05 Thorsten Kranzkowski <dl8bcu@gmx.net>
+ - enable hardware flow control before displaying /etc/issue
+
*/
#include <stdio.h>
@@ -23,6 +30,7 @@
#include <getopt.h>
#include <memory.h>
#include <sys/file.h>
+#include "nls.h"
#ifdef __linux__
#include "pathnames.h"
@@ -255,6 +263,10 @@ main(argc, argv)
0, /* no baud rates known yet */
};
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
/* The BSD-style init command passes us a useless process name. */
#ifdef SYSV_STYLE
@@ -288,7 +300,7 @@ main(argc, argv)
update_utmp(options.tty);
#endif
- debug("calling open_tty\n");
+ debug(_("calling open_tty\n"));
/* Open the tty as standard { input, output, error }. */
open_tty(options.tty, &termio, options.flags & F_LOCAL);
@@ -301,12 +313,12 @@ main(argc, argv)
}
#endif
/* Initialize the termio settings (raw mode, eight-bit, blocking i/o). */
- debug("calling termio_init\n");
- termio_init(&termio, options.speeds[FIRST_SPEED], options.flags & F_LOCAL);
+ debug(_("calling termio_init\n"));
+ termio_init(&termio, options.speeds[FIRST_SPEED], &options);
/* write the modem init string and DON'T flush the buffers */
if (options.flags & F_INITSTRING) {
- debug("writing init string\n");
+ debug(_("writing init string\n"));
write(1, options.initstring, strlen(options.initstring));
}
@@ -316,7 +328,7 @@ main(argc, argv)
}
/* Optionally detect the baud rate from the modem status message. */
- debug("before autobaud\n");
+ debug(_("before autobaud\n"));
if (options.flags & F_PARSE)
auto_baud(&termio);
@@ -328,11 +340,11 @@ main(argc, argv)
if (options.flags & F_WAITCRLF) {
char ch;
- debug("waiting for cr-lf\n");
+ debug(_("waiting for cr-lf\n"));
while(read(0, &ch, 1) == 1) {
ch &= 0x7f; /* strip "parity bit" */
#ifdef DEBUGGING
- fprintf(dbf, "read %c\n", ch);
+ fprintf(dbf, _("read %c\n"), ch);
#endif
if (ch == '\n' || ch == '\r') break;
}
@@ -341,7 +353,7 @@ main(argc, argv)
chardata = init_chardata;
if (!(options.flags & F_NOPROMPT)) {
/* Read the login name. */
- debug("reading login name\n");
+ debug(_("reading login name\n"));
while ((logname = get_logname(&options, &chardata, &termio)) == 0)
next_speed(&termio, &options);
}
@@ -362,7 +374,7 @@ main(argc, argv)
/* Let the login program take care of password validation. */
(void) execl(options.login, options.login, "--", logname, (char *) 0);
- error("%s: can't exec %s: %m", options.tty, options.login);
+ error(_("%s: can't exec %s: %m"), options.tty, options.login);
exit(0); /* quiet GCC */
}
@@ -382,7 +394,7 @@ parse_args(argc, argv, op)
switch (c) {
case 'I':
if (!(op->initstring = malloc(strlen(optarg)))) {
- error("can't malloc initstring");
+ error(_("can't malloc initstring"));
break;
}
{
@@ -444,7 +456,7 @@ parse_args(argc, argv, op)
break;
case 't': /* time out */
if ((op->timeout = atoi(optarg)) <= 0)
- error("bad timeout value: %s", optarg);
+ error(_("bad timeout value: %s"), optarg);
break;
case 'w':
op->flags |= F_WAITCRLF;
@@ -453,7 +465,7 @@ parse_args(argc, argv, op)
usage();
}
}
- debug("after getopt loop\n");
+ debug(_("after getopt loop\n"));
if (argc < optind + 2) /* check parameter count */
usage();
@@ -471,7 +483,7 @@ parse_args(argc, argv, op)
if (argc > optind && argv[optind])
setenv ("TERM", argv[optind], 1);
- debug("exiting parseargs\n");
+ debug(_("exiting parseargs\n"));
}
/* parse_speeds - parse alternate baud rates */
@@ -484,14 +496,14 @@ parse_speeds(op, arg)
char *strtok();
char *cp;
- debug("entered parse_speeds\n");
+ debug(_("entered parse_speeds\n"));
for (cp = strtok(arg, ","); cp != 0; cp = strtok((char *) 0, ",")) {
if ((op->speeds[op->numspeed++] = bcode(cp)) <= 0)
- error("bad speed: %s", cp);
+ error(_("bad speed: %s"), cp);
if (op->numspeed > MAX_SPEED)
- error("too many alternate speeds");
+ error(_("too many alternate speeds"));
}
- debug("exiting parsespeeds\n");
+ debug(_("exiting parsespeeds\n"));
}
#ifdef SYSV_STYLE
@@ -503,7 +515,6 @@ update_utmp(line)
{
struct utmp ut;
time_t t;
- int ut_fd;
int mypid = getpid();
long time();
long lseek();
@@ -548,6 +559,7 @@ update_utmp(line)
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
updwtmp(_PATH_WTMP, &ut);
#else
+ int ut_fd;
int lf;
if ((lf = open(_PATH_WTMPLOCK, O_CREAT|O_WRONLY, 0660)) >= 0) {
@@ -562,24 +574,26 @@ update_utmp(line)
#endif
}
#else /* not __linux__ */
- if ((ut_fd = open(UTMP_FILE, 2)) < 0) {
- error("%s: open for update: %m", UTMP_FILE);
- } else {
- long ut_size = sizeof(ut); /* avoid nonsense */
-
- while (read(ut_fd, (char *) &ut, sizeof(ut)) == sizeof(ut)) {
- if (ut.ut_type == INIT_PROCESS && ut.ut_pid == mypid) {
- ut.ut_type = LOGIN_PROCESS;
- ut.ut_time = time((long *) 0);
- (void) strncpy(ut.ut_name, "LOGIN", sizeof(ut.ut_name));
- (void) strncpy(ut.ut_line, line, sizeof(ut.ut_line));
- (void) lseek(ut_fd, -ut_size, 1);
- (void) write(ut_fd, (char *) &ut, sizeof(ut));
- (void) close(ut_fd);
- return;
- }
- }
- error("%s: no utmp entry", line);
+ { int ut_fd;
+ if ((ut_fd = open(UTMP_FILE, 2)) < 0) {
+ error(_("%s: open for update: %m"), UTMP_FILE);
+ } else {
+ long ut_size = sizeof(ut); /* avoid nonsense */
+
+ while (read(ut_fd, (char *) &ut, sizeof(ut)) == sizeof(ut)) {
+ if (ut.ut_type == INIT_PROCESS && ut.ut_pid == mypid) {
+ ut.ut_type = LOGIN_PROCESS;
+ ut.ut_time = time((long *) 0);
+ (void) strncpy(ut.ut_name, "LOGIN", sizeof(ut.ut_name));
+ (void) strncpy(ut.ut_line, line, sizeof(ut.ut_line));
+ (void) lseek(ut_fd, -ut_size, 1);
+ (void) write(ut_fd, (char *) &ut, sizeof(ut));
+ (void) close(ut_fd);
+ return;
+ }
+ }
+ error(_("%s: no utmp entry"), line);
+ }
}
#endif /* __linux__ */
}
@@ -607,20 +621,20 @@ open_tty(tty, tp, local)
/* Sanity checks... */
if (chdir("/dev"))
- error("/dev: chdir() failed: %m");
+ error(_("/dev: chdir() failed: %m"));
if (stat(tty, &st) < 0)
error("/dev/%s: %m", tty);
if ((st.st_mode & S_IFMT) != S_IFCHR)
- error("/dev/%s: not a character device", tty);
+ error(_("/dev/%s: not a character device"), tty);
/* Open the tty as standard input. */
(void) close(0);
errno = 0; /* ignore close(2) errors */
- debug("open(2)\n");
+ debug(_("open(2)\n"));
if (open(tty, O_RDWR|O_NONBLOCK, 0) != 0)
- error("/dev/%s: cannot open as standard input: %m", tty);
+ error(_("/dev/%s: cannot open as standard input: %m"), tty);
} else {
@@ -630,13 +644,13 @@ open_tty(tty, tp, local)
*/
if ((fcntl(0, F_GETFL, 0) & O_RDWR) != O_RDWR)
- error("%s: not open for read/write", tty);
+ error(_("%s: not open for read/write"), tty);
}
/* Set up standard output and standard error file descriptors. */
- debug("duping\n");
+ debug(_("duping\n"));
if (dup(0) != 1 || dup(0) != 2) /* set up stdout and stderr */
- error("%s: dup problem: %m", tty); /* we have a problem */
+ error(_("%s: dup problem: %m"), tty); /* we have a problem */
/*
* The following ioctl will fail if stdin is not a tty, but also when
@@ -668,10 +682,10 @@ char gbuf[1024];
char area[1024];
void
-termio_init(tp, speed, local)
+termio_init(tp, speed, op)
struct termio *tp;
int speed;
- int local;
+ struct options *op;
{
/*
@@ -686,19 +700,27 @@ termio_init(tp, speed, local)
#endif
tp->c_cflag = CS8 | HUPCL | CREAD | speed;
- if (local) {
+ if (op->flags & F_LOCAL) {
tp->c_cflag |= CLOCAL;
}
tp->c_iflag = tp->c_lflag = tp->c_oflag = tp->c_line = 0;
tp->c_cc[VMIN] = 1;
tp->c_cc[VTIME] = 0;
+
+ /* Optionally enable hardware flow control */
+
+#ifdef CRTSCTS
+ if (op->flags & F_RTSCTS)
+ tp->c_cflag |= CRTSCTS;
+#endif
+
(void) ioctl(0, TCSETA, tp);
/* go to blocking input even in local mode */
fcntl(0, F_SETFL, fcntl(0, F_GETFL, 0) & ~O_NONBLOCK);
- debug("term_io 2\n");
+ debug(_("term_io 2\n"));
}
/* auto_baud - extract baud rate from modem status message */
@@ -878,9 +900,9 @@ do_prompt(op, tp)
if (ut->ut_type == USER_PROCESS)
users++;
endutent();
- printf ("%d", users);
+ printf ("%d ", users);
if (c == 'U')
- printf (" user%s", users == 1 ? "" : "s");
+ printf ((users == 1) ? _("user") : _("users"));
break;
}
default:
@@ -968,7 +990,7 @@ char *get_logname(op, cp, tp)
if (read(0, &c, 1) < 1) {
if (errno == EINTR || errno == EIO)
exit(0);
- error("%s: read: %m", op->tty);
+ error(_("%s: read: %m"), op->tty);
}
/* Do BREAK handling elsewhere. */
@@ -1014,7 +1036,7 @@ char *get_logname(op, cp, tp)
if (!isascii(ascval) || !isprint(ascval)) {
/* ignore garbage characters */ ;
} else if (bp - logname >= sizeof(logname) - 1) {
- error("%s: input overrun", op->tty);
+ error(_("%s: input overrun"), op->tty);
} else {
(void) write(1, &c, 1); /* echo the character */
*bp++ = ascval; /* and store it */
@@ -1138,10 +1160,7 @@ bcode(s)
void
usage()
{
- static char msg[] =
- "[-hiLmw] [-l login_program] [-t timeout] [-I initstring] baud_rate,... line [termtype]\nor\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line baud_rate,... [termtype]";
-
- fprintf(stderr, "Usage: %s %s\n", progname, msg);
+ fprintf(stderr, _("Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] baud_rate,... line [termtype]\nor\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line baud_rate,... [termtype]\n"), progname);
exit(1);
}
@@ -1220,6 +1239,6 @@ error(va_alist)
(void) close(fd);
}
#endif
- (void) sleep((unsigned) 10); /* be kind to init(8) */
+ (void) sleep((unsigned) 10); /* be kind to init(8) */
exit(1);
}
diff --git a/login-utils/checktty.c b/login-utils/checktty.c
index 15873aa44..66fee7338 100644
--- a/login-utils/checktty.c
+++ b/login-utils/checktty.c
@@ -1,6 +1,10 @@
/* checktty.c - linked into login, checks user against /etc/usertty
Created 25-Aug-95 by Peter Orbaek <poe@daimi.aau.dk>
Fixed by JDS June 1996 to clear lists and close files
+
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
*/
#include <sys/types.h>
@@ -17,6 +21,7 @@
#include <malloc.h>
#include <netdb.h>
#include <sys/syslog.h>
+#include "nls.h"
#ifdef __linux__
# include <sys/sysmacros.h>
@@ -38,13 +43,13 @@ char *hostname;
void
badlogin(const char *s)
{
- printf("badlogin: %s\n", s);
+ printf(_("badlogin: %s\n"), s);
}
void
sleepexit(int x)
{
- printf("sleepexit %d\n", x);
+ printf(_("sleepexit %d\n"), x);
exit(1);
}
#endif
@@ -100,8 +105,8 @@ new_class(char *class)
tc = (struct ttyclass *)malloc(sizeof(struct ttyclass));
if (tc == NULL) {
- printf("login: memory low, login may fail\n");
- syslog(LOG_WARNING, "can't malloc for ttyclass");
+ printf(_("login: memory low, login may fail\n"));
+ syslog(LOG_WARNING, _("can't malloc for ttyclass"));
return NULL;
}
@@ -122,8 +127,8 @@ add_to_class(struct ttyclass *tc, char *tty)
ge = (struct grplist *)malloc(sizeof(struct grplist));
if (ge == NULL) {
- printf("login: memory low, login may fail\n");
- syslog(LOG_WARNING, "can't malloc for grplist");
+ printf(_("login: memory low, login may fail\n"));
+ syslog(LOG_WARNING, _("can't malloc for grplist"));
return;
}
@@ -135,8 +140,6 @@ add_to_class(struct ttyclass *tc, char *tty)
/* return true if tty is a pty. Very linux dependent */
-/* Note that the new dynamic ptys (say /dev/pty/0 etc) have major in 128-135 */
-/* We might try TIOCGPTN or so to recognise these new ones, if desired */
static int
isapty(const char *tty)
{
@@ -150,16 +153,25 @@ isapty(const char *tty)
#if defined(__linux__)
if((stat(devname, &stb) >= 0) && S_ISCHR(stb.st_mode)) {
+ int majordev = major(stb.st_rdev);
+
+ /* this is for linux versions before 1.3: use major 4 */
+ if(majordev == TTY_MAJOR && minor(stb.st_rdev) >= 192)
+ return 1;
#if defined(PTY_SLAVE_MAJOR)
- /* this is for linux 1.3 and newer */
- if(major(stb.st_rdev) == PTY_SLAVE_MAJOR)
+ /* this is for linux 1.3 and newer: use major 3 */
+ if(majordev == PTY_SLAVE_MAJOR)
return 1;
#endif
- /* this is for linux versions before 1.3, backward compat. */
- if(major(stb.st_rdev) == TTY_MAJOR && minor(stb.st_rdev) >= 192)
+#if defined(UNIX98_PTY_SLAVE_MAJOR) && defined(UNIX98_PTY_MAJOR_COUNT)
+ /* this is for linux 2.1.116 and newer: use majors 136-143 */
+ if(majordev >= UNIX98_PTY_SLAVE_MAJOR &&
+ majordev < UNIX98_PTY_SLAVE_MAJOR + UNIX98_PTY_MAJOR_COUNT)
return 1;
+#endif
+
}
#endif
return 0;
@@ -416,7 +428,7 @@ checktty(const char *user, const char *tty, struct passwd *pwd)
}
/* there was a default rule, but user didn't match, reject! */
- printf("Login on %s from %s denied by default.\n", tty, hostname);
+ printf(_("Login on %s from %s denied by default.\n"), tty, hostname);
badlogin(user);
sleepexit(1);
}
@@ -427,7 +439,7 @@ checktty(const char *user, const char *tty, struct passwd *pwd)
name of the tty where the user is trying to log in.
So deny access! */
- printf("Login on %s from %s denied.\n", tty, hostname);
+ printf(_("Login on %s from %s denied.\n"), tty, hostname);
badlogin(user);
sleepexit(1);
}
diff --git a/login-utils/chfn.c b/login-utils/chfn.c
index 3da2360f1..5fe5025de 100644
--- a/login-utils/chfn.c
+++ b/login-utils/chfn.c
@@ -13,8 +13,12 @@
* Updated Thu Oct 12 09:19:26 1995 by faith@cs.unc.edu with security
* patches from Zefram <A.Main@dcs.warwick.ac.uk>
*
- * Hacked by Peter Breitenlohner, peb@mppmu.mpg.de,
- * to remove trailing empty fields. Oct 5, 96.
+ * Hacked by Peter Breitenlohner, peb@mppmu.mpg.de,
+ * to remove trailing empty fields. Oct 5, 96.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*
*/
@@ -32,6 +36,8 @@
#include <locale.h>
#include "my_crypt.h"
#include "../version.h"
+#include "nls.h"
+#include "env.h"
#if REQUIRE_PASSWORD && USE_PAM
#include <security/pam_appl.h>
@@ -79,14 +85,14 @@ extern int setpwnam P((struct passwd *pwd));
#define memzero(ptr, size) memset((char *) ptr, 0, size)
-/* we do not accept gecos field sizes lengther than MAX_FIELD_SIZE */
+/* we do not accept gecos field sizes longer than MAX_FIELD_SIZE */
#define MAX_FIELD_SIZE 256
int main (argc, argv)
int argc;
char *argv[];
{
- char *cp, *pwdstr;
+ char *cp;
uid_t uid;
struct finfo oldf, newf;
boolean interactive;
@@ -98,15 +104,17 @@ int main (argc, argv)
struct pam_conv conv = { misc_conv, NULL };
#endif
+ sanitize_env();
+ setlocale(LC_ALL, ""); /* both for messages and for iscntrl() below */
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
/* whoami is the program name for error messages */
whoami = argv[0];
if (! whoami) whoami = "chfn";
for (cp = whoami; *cp; cp++)
if (*cp == '/') whoami = cp + 1;
- /* iscntrl() below should not reject actual names */
- setlocale(LC_ALL,"");
-
/*
* "oldf" contains the users original finger information.
* "newf" contains the changed finger information, and contains NULL
@@ -125,19 +133,19 @@ int main (argc, argv)
if (! newf.username) {
parse_passwd (getpwuid (uid), &oldf);
if (! oldf.username) {
- fprintf (stderr, "%s: you (user %d) don't exist.\n", whoami, uid);
+ fprintf (stderr, _("%s: you (user %d) don't exist.\n"), whoami, uid);
return (-1); }
}
else {
parse_passwd (getpwnam (newf.username), &oldf);
if (! oldf.username) {
cp = newf.username;
- fprintf (stderr, "%s: user \"%s\" does not exist.\n", whoami, cp);
+ fprintf (stderr, _("%s: user \"%s\" does not exist.\n"), whoami, cp);
return (-1); }
}
if (!(is_local(oldf.username))) {
- fprintf (stderr, "%s: can only change local entries; use yp%s instead.\n",
+ fprintf (stderr, _("%s: can only change local entries; use yp%s instead.\n"),
whoami, whoami);
exit(1);
}
@@ -149,28 +157,28 @@ int main (argc, argv)
return (-1);
}
- printf ("Changing finger information for %s.\n", oldf.username);
+ printf (_("Changing finger information for %s.\n"), oldf.username);
#if REQUIRE_PASSWORD
# if USE_PAM
if(uid != 0) {
if (pam_start("chfn", oldf.username, &conv, &pamh)) {
- puts("Password error.");
+ puts(_("Password error."));
exit(1);
}
if (pam_authenticate(pamh, 0)) {
- puts("Password error.");
+ puts(_("Password error."));
exit(1);
}
retcode = pam_acct_mgmt(pamh, 0);
if (retcode == PAM_NEW_AUTHTOK_REQD) {
retcode = pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
} else if (retcode) {
- puts("Password error.");
+ puts(_("Password error."));
exit(1);
}
if (pam_setcred(pamh, 0)) {
- puts("Password error.");
+ puts(_("Password error."));
exit(1);
}
/* no need to establish a session; this isn't a session-oriented
@@ -179,10 +187,10 @@ int main (argc, argv)
# else /* USE_PAM */
/* require password, unless root */
if(uid != 0 && oldf.pw->pw_passwd && oldf.pw->pw_passwd[0]) {
- pwdstr = getpass("Password: ");
+ char *pwdstr = getpass(_("Password: "));
if(strncmp(oldf.pw->pw_passwd,
crypt(pwdstr, oldf.pw->pw_passwd), 13)) {
- puts("Incorrect password.");
+ puts(_("Incorrect password."));
exit(1);
}
}
@@ -193,7 +201,7 @@ int main (argc, argv)
if (interactive) ask_info (&oldf, &newf);
if (! set_changed_data (&oldf, &newf)) {
- printf ("Finger information not changed.\n");
+ printf (_("Finger information not changed.\n"));
return 0;
}
status = save_new_data (&oldf);
@@ -296,9 +304,9 @@ static boolean parse_argv (argc, argv, pinfo)
static void usage (fp)
FILE *fp;
{
- fprintf (fp, "Usage: %s [ -f full-name ] [ -o office ] ", whoami);
- fprintf (fp, "[ -p office-phone ]\n [ -h home-phone ] ");
- fprintf (fp, "[ --help ] [ --version ]\n");
+ fprintf (fp, _("Usage: %s [ -f full-name ] [ -o office ] "), whoami);
+ fprintf (fp, _("[ -p office-phone ]\n [ -h home-phone ] "));
+ fprintf (fp, _("[ --help ] [ --version ]\n"));
}
/*
@@ -367,7 +375,7 @@ static char *prompt (question, def_val)
printf("%s [%s]: ", question, def_val);
*buf = 0;
if (fgets (buf, sizeof (buf), stdin) == NULL) {
- printf ("\nAborted.\n");
+ printf (_("\nAborted.\n"));
exit (-1);
}
/* remove the newline at the end of buf. */
@@ -400,7 +408,7 @@ static int check_gecos_string (msg, gecos)
if (strlen(gecos) > MAX_FIELD_SIZE) {
if (msg != NULL)
printf("%s: ", msg);
- printf("field is too long.\n");
+ printf(_("field is too long.\n"));
return -1;
}
@@ -408,12 +416,12 @@ static int check_gecos_string (msg, gecos)
c = gecos[i];
if (c == ',' || c == ':' || c == '=' || c == '"' || c == '\n') {
if (msg) printf ("%s: ", msg);
- printf ("'%c' is not allowed.\n", c);
+ printf (_("'%c' is not allowed.\n"), c);
return (-1);
}
if (iscntrl (c)) {
if (msg) printf ("%s: ", msg);
- printf ("Control characters are not allowed.\n");
+ printf (_("Control characters are not allowed.\n"));
return (-1);
}
}
@@ -478,10 +486,10 @@ static int save_new_data (pinfo)
pinfo->pw->pw_gecos = gecos;
if (setpwnam (pinfo->pw) < 0) {
perror ("setpwnam");
- printf( "Finger information *NOT* changed. Try again later.\n" );
+ printf( _("Finger information *NOT* changed. Try again later.\n" ));
return (-1);
}
- printf ("Finger information changed.\n");
+ printf (_("Finger information changed.\n"));
return 0;
}
@@ -495,7 +503,7 @@ static void *xmalloc (bytes)
vp = malloc (bytes);
if (! vp && bytes > 0) {
- perror ("malloc failed");
+ perror (_("malloc failed"));
exit (-1);
}
return vp;
diff --git a/login-utils/chsh.c b/login-utils/chsh.c
index 8e8a51bc0..f9c4d743f 100644
--- a/login-utils/chsh.c
+++ b/login-utils/chsh.c
@@ -17,6 +17,10 @@
* suggestion from Zefram. Disallowing users with shells not in /etc/shells
* from changing their shell.
*
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
+ *
*/
#if 0
@@ -34,6 +38,8 @@
#include <getopt.h>
#include "my_crypt.h"
#include "../version.h"
+#include "nls.h"
+#include "env.h"
#if REQUIRE_PASSWORD && USE_PAM
#include <security/pam_appl.h>
@@ -79,7 +85,7 @@ int main (argc, argv)
int argc;
char *argv[];
{
- char *cp, *shell, *oldshell, *pwdstr;
+ char *cp, *shell, *oldshell;
uid_t uid;
struct sinfo info;
struct passwd *pw;
@@ -90,6 +96,11 @@ int main (argc, argv)
struct pam_conv conv = { misc_conv, NULL };
#endif
+ sanitize_env();
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
/* whoami is the program name for error messages */
whoami = argv[0];
if (! whoami) whoami = "chsh";
@@ -104,20 +115,19 @@ int main (argc, argv)
if (! info.username) {
pw = getpwuid (uid);
if (! pw) {
- fprintf (stderr, "%s: you (user %d) don't exist.\n", whoami, uid);
+ fprintf (stderr, _("%s: you (user %d) don't exist.\n"), whoami, uid);
return (-1); }
}
else {
pw = getpwnam (info.username);
if (! pw) {
cp = info.username;
- fprintf (stderr, "%s: user \"%s\" does not exist.\n", whoami, cp);
+ fprintf (stderr, _("%s: user \"%s\" does not exist.\n"), whoami, cp);
return (-1); }
}
if (!(is_local(pw->pw_name))) {
- fprintf (stderr, "%s: can only change local entries; use yp%s instead.\n
-",
+ fprintf (stderr, _("%s: can only change local entries; use yp%s instead.\n"),
whoami, whoami);
exit(1);
}
@@ -128,35 +138,35 @@ int main (argc, argv)
/* reality check */
if (uid != 0 && (uid != pw->pw_uid || !get_shell_list(oldshell))) {
errno = EACCES;
- fprintf(stderr,"%s: Your shell is not in /etc/shells, shell change"
- " denied\n",whoami);
+ fprintf(stderr,_("%s: Your shell is not in /etc/shells, shell change"
+ " denied\n"),whoami);
return (-1);
}
shell = info.shell;
- printf( "Changing shell for %s.\n", pw->pw_name );
+ printf( _("Changing shell for %s.\n"), pw->pw_name );
#if REQUIRE_PASSWORD
# if USE_PAM
if(uid != 0) {
if (pam_start("chsh", pw->pw_name, &conv, &pamh)) {
- puts("Password error.");
+ puts(_("Password error."));
exit(1);
}
if (pam_authenticate(pamh, 0)) {
- puts("Password error.");
+ puts(_("Password error."));
exit(1);
}
retcode = pam_acct_mgmt(pamh, 0);
if (retcode == PAM_NEW_AUTHTOK_REQD) {
retcode = pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
} else if (retcode) {
- puts("Password error.");
+ puts(_("Password error."));
exit(1);
}
if (pam_setcred(pamh, 0)) {
- puts("Password error.");
+ puts(_("Password error."));
exit(1);
}
/* no need to establish a session; this isn't a session-oriented
@@ -165,10 +175,10 @@ int main (argc, argv)
# else /* USE_PAM */
/* require password, unless root */
if(uid != 0 && pw->pw_passwd && pw->pw_passwd[0]) {
- pwdstr = getpass("Password: ");
+ char *pwdstr = getpass(_("Password: "));
if(strncmp(pw->pw_passwd,
crypt(pwdstr, pw->pw_passwd), 13)) {
- puts("Incorrect password.");
+ puts(_("Incorrect password."));
exit(1);
}
}
@@ -176,24 +186,24 @@ int main (argc, argv)
#endif /* REQUIRE_PASSWORD */
if (! shell) {
- shell = prompt ("New shell", oldshell);
+ shell = prompt (_("New shell"), oldshell);
if (! shell) return 0;
}
if (check_shell (shell) < 0) return (-1);
if (! strcmp (pw->pw_shell, shell)) {
- printf ("Shell not changed.\n");
+ printf (_("Shell not changed.\n"));
return 0;
}
if (!strcmp(shell, "/bin/sh")) shell = "";
pw->pw_shell = shell;
if (setpwnam (pw) < 0) {
perror ("setpwnam");
- printf( "Shell *NOT* changed. Try again later.\n" );
+ printf( _("Shell *NOT* changed. Try again later.\n") );
return (-1);
}
- printf ("Shell changed.\n");
+ printf (_("Shell changed.\n"));
return 0;
}
@@ -261,9 +271,9 @@ static void parse_argv (argc, argv, pinfo)
static void usage (fp)
FILE *fp;
{
- fprintf (fp, "Usage: %s [ -s shell ] ", whoami);
- fprintf (fp, "[ --list-shells ] [ --help ] [ --version ]\n");
- fprintf (fp, " [ username ]\n");
+ fprintf (fp, _("Usage: %s [ -s shell ] "), whoami);
+ fprintf (fp, _("[ --list-shells ] [ --help ] [ --version ]\n"));
+ fprintf (fp, _(" [ username ]\n"));
}
/*
@@ -281,7 +291,7 @@ static char *prompt (question, def_val)
printf("%s [%s]: ", question, def_val);
*buf = 0;
if (fgets (buf, sizeof (buf), stdin) == NULL) {
- printf ("\nAborted.\n");
+ printf (_("\nAborted.\n"));
exit (-1);
}
/* remove the newline at the end of buf. */
@@ -307,44 +317,44 @@ static int check_shell (shell)
int i, c;
if (*shell != '/') {
- printf ("%s: shell must be a full path name.\n", whoami);
+ printf (_("%s: shell must be a full path name.\n"), whoami);
return (-1);
}
if (access (shell, F_OK) < 0) {
- printf ("%s: \"%s\" does not exist.\n", whoami, shell);
+ printf (_("%s: \"%s\" does not exist.\n"), whoami, shell);
return (-1);
}
if (access (shell, X_OK) < 0) {
- printf ("%s: \"%s\" is not executable.\n", whoami, shell);
+ printf (_("%s: \"%s\" is not executable.\n"), whoami, shell);
return (-1);
}
/* keep /etc/passwd clean. */
for (i = 0; i < strlen (shell); i++) {
c = shell[i];
if (c == ',' || c == ':' || c == '=' || c == '"' || c == '\n') {
- printf ("%s: '%c' is not allowed.\n", whoami, c);
+ printf (_("%s: '%c' is not allowed.\n"), whoami, c);
return (-1);
}
if (iscntrl (c)) {
- printf ("%s: Control characters are not allowed.\n", whoami);
+ printf (_("%s: Control characters are not allowed.\n"), whoami);
return (-1);
}
}
#if ONLY_LISTED_SHELLS
if (! get_shell_list (shell)) {
if (!getuid())
- printf ("Warning: \"%s\" is not listed in /etc/shells\n", shell);
+ printf (_("Warning: \"%s\" is not listed in /etc/shells\n"), shell);
else {
- printf ("%s: \"%s\" is not listed in /etc/shells.\n",
+ printf (_("%s: \"%s\" is not listed in /etc/shells.\n"),
whoami, shell);
- printf( "%s: use -l option to see list\n", whoami );
+ printf( _("%s: use -l option to see list\n"), whoami );
exit(1);
}
}
#else
if (! get_shell_list (shell)) {
- printf ("Warning: \"%s\" is not listed in /etc/shells.\n", shell);
- printf( "Use %s -l to see list.\n", whoami );
+ printf (_("Warning: \"%s\" is not listed in /etc/shells.\n"), shell);
+ printf( _("Use %s -l to see list.\n"), whoami );
}
#endif
return 0;
@@ -365,7 +375,7 @@ static boolean get_shell_list (shell_name)
found = false;
fp = fopen ("/etc/shells", "r");
if (! fp) {
- if (! shell_name) printf ("No known shells.\n");
+ if (! shell_name) printf (_("No known shells.\n"));
return true;
}
while (fgets (buf, sizeof (buf), fp) != NULL) {
@@ -399,7 +409,7 @@ static void *xmalloc (bytes)
vp = malloc (bytes);
if (! vp && bytes > 0) {
- perror ("malloc failed");
+ perror (_("malloc failed"));
exit (-1);
}
return vp;
diff --git a/login-utils/cryptocard.c b/login-utils/cryptocard.c
index b3edc6fd4..1195b2eb8 100644
--- a/login-utils/cryptocard.c
+++ b/login-utils/cryptocard.c
@@ -16,6 +16,10 @@
The sources for this code are maintained in
ftp://ftp.daimi.aau.dk/pub/linux/poe/poeigl-X.XX.tar.gz
+
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
*/
#ifdef CRYPTOCARD
@@ -40,6 +44,7 @@
#include <pwd.h>
#include <sys/param.h>
#include <sys/stat.h>
+#include "nls.h"
#ifdef KOONTZ_DES
#include "../koontz-des/des.h"
@@ -62,12 +67,12 @@ generate_challenge(void)
/* create and present a challenge string */
if ((rfd = open("/dev/urandom", O_RDONLY)) < 0) {
- syslog(LOG_NOTICE, "couldn't open /dev/urandom");
+ syslog(LOG_NOTICE, _("couldn't open /dev/urandom"));
return NULL;
}
if (read(rfd, &clong, 4) < 4) {
close(rfd);
- syslog(LOG_NOTICE, "couldn't read random data from /dev/urandom");
+ syslog(LOG_NOTICE, _("couldn't read random data from /dev/urandom"));
return NULL;
}
close(rfd);
@@ -90,22 +95,22 @@ get_key()
sprintf(keyfile, "%s/.cryptocard", pwd->pw_dir);
if ((rfd = open(keyfile, O_RDONLY)) < 0) {
- syslog(LOG_NOTICE, "can't open %s for reading", keyfile);
+ syslog(LOG_NOTICE, _("can't open %s for reading"), keyfile);
goto bail_out;
}
if (fstat(rfd, &statbuf) < 0) {
- syslog(LOG_NOTICE, "can't stat(%s)", keyfile);
+ syslog(LOG_NOTICE, _("can't stat(%s)"), keyfile);
goto close_and_bail_out;
}
if ((statbuf.st_uid != pwd->pw_uid)
|| ((statbuf.st_mode & S_IFMT) != S_IFREG)
|| (statbuf.st_mode & (S_IRWXU|S_IRWXG|S_IRWXO))) {
- syslog(LOG_NOTICE, "%s doesn't have the correct filemodes", keyfile);
+ syslog(LOG_NOTICE, _("%s doesn't have the correct filemodes"), keyfile);
goto close_and_bail_out;
}
if (read(rfd, key, 8) < 8) {
- syslog(LOG_NOTICE, "can't read data from %s", keyfile);
+ syslog(LOG_NOTICE, _("can't read data from %s"), keyfile);
goto close_and_bail_out;
}
diff --git a/login-utils/islocal.c b/login-utils/islocal.c
index 5480c5744..10a709b56 100644
--- a/login-utils/islocal.c
+++ b/login-utils/islocal.c
@@ -10,11 +10,16 @@
to distinguish user names where one is a prefix of the other,
and to use "pathnames.h". Oct 5, 96.
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
+
*/
#include <stdio.h>
#include <string.h>
+#include "nls.h"
#include "pathnames.h"
#define MAX_LENGTH 1024
@@ -28,7 +33,7 @@ is_local(char *user)
int len;
if(!(fd = fopen(_PATH_PASSWD, "r"))) {
- fprintf(stderr,"Can't read %s, exiting.",_PATH_PASSWD);
+ fprintf(stderr,_("Can't read %s, exiting."),_PATH_PASSWD);
exit(1);
}
diff --git a/login-utils/last.c b/login-utils/last.c
index cf59b8ea6..b78d00b86 100644
--- a/login-utils/last.c
+++ b/login-utils/last.c
@@ -18,12 +18,17 @@
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
/*
* last
*/
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/file.h>
+#include <sys/types.h>
#include <signal.h>
#include <string.h>
#include <time.h>
@@ -32,18 +37,23 @@
#include <getopt.h>
#include <stdlib.h>
#include <unistd.h>
+
+#include <sys/socket.h>
+#include <netinet/in.h>
#include <arpa/inet.h>
+
#include "pathnames.h"
+#include "nls.h"
#define SECDAY (24*60*60) /* seconds in a day */
#define NO 0 /* false/no */
#define YES 1 /* true/yes */
-static struct utmp buf[1024]; /* utmp read buffer */
+static struct utmp utmpbuf;
-#define HMAX (int)sizeof(buf[0].ut_host) /* size of utmp host field */
-#define LMAX (int)sizeof(buf[0].ut_line) /* size of utmp tty field */
-#define NMAX (int)sizeof(buf[0].ut_name) /* size of utmp name field */
+#define HMAX (int)sizeof(utmpbuf.ut_host) /* size of utmp host field */
+#define LMAX (int)sizeof(utmpbuf.ut_line) /* size of utmp tty field */
+#define NMAX (int)sizeof(utmpbuf.ut_name) /* size of utmp name field */
#ifndef MIN
#define MIN(a,b) (((a) < (b)) ? (a) : (b))
@@ -94,6 +104,10 @@ main(argc, argv)
extern char *optarg;
int ch;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
while ((ch = getopt(argc, argv, "0123456789yli:f:h:t:")) != EOF)
switch((char)ch) {
case '0': case '1': case '2': case '3': case '4':
@@ -126,7 +140,7 @@ main(argc, argv)
break;
case '?':
default:
- fputs("usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n", stderr);
+ fputs(_("usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n"), stderr);
exit(1);
}
for (argv += optind; *argv; ++argv) {
@@ -183,31 +197,39 @@ wtmp()
{
register struct utmp *bp; /* current structure */
register TTY *T; /* tty list entry */
- struct stat stb; /* stat of file for size */
- long bl, delta, /* time difference */
- lseek(), time();
- int bytes, wfd;
+ long delta; /* time difference */
void onintr();
- char *ct, *crmsg = NULL;
+ char *crmsg = NULL;
+ char *ct = NULL;
+ struct utmp **utmplist = NULL;
+ int listlen = 0;
+ int listnr = 0;
+ int i;
+
+ utmpname(file);
+
+ (void)time(&utmpbuf.ut_time);
+ (void)signal(SIGINT, onintr);
+ (void)signal(SIGQUIT, onintr);
- if ((wfd = open(file, O_RDONLY, 0)) < 0 || fstat(wfd, &stb) == -1) {
- perror(file);
- exit(1);
+ setutent();
+ while((bp = getutent())) {
+ if(listnr >= listlen) {
+ listlen += 10;
+ listlen *= 2; /* avoid quadratic behaviour */
+ utmplist = realloc(utmplist, sizeof(bp) * listlen);
+ }
+
+ utmplist[listnr] = malloc(sizeof(*bp));
+ memcpy(utmplist[listnr++], bp, sizeof(*bp));
}
- bl = (stb.st_size + sizeof(buf) - 1) / sizeof(buf);
+ endutent();
- (void)time(&buf[0].ut_time);
- (void)signal(SIGINT, onintr);
- (void)signal(SIGQUIT, onintr);
+ if(listnr)
+ ct = ctime(&utmplist[0]->ut_time);
- while (--bl >= 0) {
- if (lseek(wfd, (long)(bl * sizeof(buf)), SEEK_SET) == -1 ||
- (bytes = read(wfd, (char *)buf, sizeof(buf))) == -1) {
- fprintf(stderr, "last: %s: ", file);
- perror((char *)NULL);
- exit(1);
- }
- for (bp = &buf[bytes / sizeof(buf[0]) - 1]; bp >= buf; --bp) {
+ for(i = listnr - 1; i >= 0; i--) {
+ bp = utmplist[i];
/*
* if the terminal line is '~', the machine stopped.
* see utmp(5) for more info.
@@ -258,7 +280,7 @@ wtmp()
print_partial_line(bp);
if (!T->logout)
- puts(" still logged in");
+ puts(_(" still logged in"));
else {
if (T->logout < 0) {
T->logout = -T->logout;
@@ -276,10 +298,11 @@ wtmp()
return;
}
T->logout = bp->ut_time;
- }
+ utmpbuf.ut_time = bp->ut_time;
+ free(bp);
}
- ct = ctime(&buf[0].ut_time);
- printf("\nwtmp begins %10.10s %5.5s \n", ct, ct + 11);
+ if(utmplist) free(utmplist);
+ if(ct) printf(_("\nwtmp begins %s"), ct); /* ct already ends in \n */
}
/*
@@ -293,7 +316,7 @@ want(bp, check)
{
register ARG *step;
- if (check)
+ if (check) {
/*
* when uucp and ftp log in over a network, the entry in
* the utmp file is the name plus their process id. See
@@ -303,6 +326,7 @@ want(bp, check)
bp->ut_line[3] = '\0';
else if (!strncmp(bp->ut_line, "uucp", sizeof("uucp") - 1))
bp->ut_line[4] = '\0';
+ }
if (!arglist)
return(YES);
@@ -340,7 +364,7 @@ addarg(type, arg)
register ARG *cur;
if (!(cur = (ARG *)malloc((unsigned int)sizeof(ARG)))) {
- fputs("last: malloc failure.\n", stderr);
+ fputs(_("last: malloc failure.\n"), stderr);
exit(1);
}
cur->next = arglist;
@@ -360,7 +384,7 @@ addtty(ttyname)
register TTY *cur;
if (!(cur = (TTY *)malloc((unsigned int)sizeof(TTY)))) {
- fputs("last: malloc failure.\n", stderr);
+ fputs(_("last: malloc failure.\n"), stderr);
exit(1);
}
cur->next = ttylist;
@@ -389,7 +413,7 @@ hostconv(arg)
if (first) {
first = 0;
if (gethostname(name, sizeof(name))) {
- perror("last: gethostname");
+ perror(_("last: gethostname"));
exit(1);
}
hostdot = strchr(name, '.');
@@ -415,7 +439,7 @@ ttyconv(arg)
if (strlen(arg) == 2) {
/* either 6 for "ttyxx" or 8 for "console" */
if (!(mval = malloc((unsigned int)8))) {
- fputs("last: malloc failure.\n", stderr);
+ fputs(_("last: malloc failure.\n"), stderr);
exit(1);
}
if (!strcmp(arg, "co"))
@@ -441,8 +465,8 @@ onintr(signo)
{
char *ct;
- ct = ctime(&buf[0].ut_time);
- printf("\ninterrupted %10.10s %5.5s \n", ct, ct + 11);
+ ct = ctime(&utmpbuf.ut_time);
+ printf(_("\ninterrupted %10.10s %5.5s \n"), ct, ct + 11);
if (signo == SIGINT)
exit(1);
(void)fflush(stdout); /* fix required for rsh */
diff --git a/login-utils/login.1 b/login-utils/login.1
index a2acbd9f7..88bb4d89e 100644
--- a/login-utils/login.1
+++ b/login-utils/login.1
@@ -25,7 +25,7 @@ If the user is
.I not
root, and if
.I /etc/nologin
-exists, the contents of of this file are printed to the screen, and the
+exists, the contents of this file are printed to the screen, and the
login is terminated. This is typically used to prevent logins when the
system is being taken down.
@@ -243,7 +243,8 @@ the user to for example run the command: xterm -e /bin/login.
.PP
.IP o
A domain name suffix such as @.some.dom, meaning that the user may
-rlogin/telnet from any host whose domain name has the suffix .some.dom.
+rlogin/telnet from any host whose domain name has the suffix
+\&.some.dom.
.PP
.IP o
A range of IPv4 addresses, written @x.x.x.x/y.y.y.y where x.x.x.x is
@@ -307,6 +308,16 @@ The undocumented BSD
option is not supported. This may be required by some
.BR rlogind (8)
programs.
+
+A recursive login, as used to be possible in the good old days,
+no longer works; for most purposes
+.BR su (1)
+is a satisfactory substitute. Indeed, for security reasons,
+login does a vhangup() system call to remove any possible
+listening processes on the tty. This is to avoid password
+sniffing. If one uses the command "login", then the surrounding shell
+gets killed by vhangup() because it's no longer the true owner of the tty.
+This can be avoided by using "exec login" in a top-level shell or xterm.
.SH AUTHOR
Derived from BSD login 5.40 (5/9/89) by Michael Glad (glad@daimi.dk)
for HP-UX
diff --git a/login-utils/login.c b/login-utils/login.c
index c742af75c..fa0450164 100644
--- a/login-utils/login.c
+++ b/login-utils/login.c
@@ -51,6 +51,11 @@
1992-02-05 poe@daimi.aau.dk: Ported the stuff to Linux 0.12
From 1992 till now (1997) this code for Linux has been maintained at
ftp.daimi.aau.dk:/pub/linux/poe/
+
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+ Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ - fixed strerr(errno) in gettext calls
*/
/*
@@ -112,6 +117,7 @@
#include <sys/sysmacros.h>
#include <netdb.h>
#include "my_crypt.h"
+#include "nls.h"
#ifdef __linux__
# include <sys/sysmacros.h>
@@ -275,7 +281,7 @@ main(int argc, char **argv)
struct group *gr;
register int ch;
register char *p;
- int ask, fflag, hflag, pflag, cnt;
+ int ask, fflag, hflag, pflag, cnt, errsv;
int quietlog, passwd_req;
char *domain, *ttyn;
char tbuf[MAXPATHLEN + 2], tname[sizeof(_PATH_TTY) + 10];
@@ -292,7 +298,6 @@ main(int argc, char **argv)
pam_handle_t *pamh = NULL;
struct pam_conv conv = { misc_conv, NULL };
pid_t childPid;
- void (*oldSigHandler) ();
#else
char *salt, *pp;
#endif
@@ -304,6 +309,10 @@ main(int argc, char **argv)
alarm((unsigned int)timeout);
signal(SIGQUIT, SIG_IGN);
signal(SIGINT, SIG_IGN);
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
setpriority(PRIO_PROCESS, 0, 0);
#ifdef HAVE_QUOTA
@@ -337,14 +346,14 @@ main(int argc, char **argv)
case 'h':
if (getuid()) {
fprintf(stderr,
- "login: -h for super-user only.\n");
+ _("login: -h for super-user only.\n"));
exit(1);
}
hflag = 1;
if (domain && (p = index(optarg, '.')) &&
strcasecmp(p, domain) == 0)
*p = 0;
- hostname = optarg;
+ hostname = strdup(optarg); /* strdup: Ambrose C. Li */
{
struct hostent *he = gethostbyname(hostname);
if (he) {
@@ -362,7 +371,7 @@ main(int argc, char **argv)
case '?':
default:
fprintf(stderr,
- "usage: login [-fp] [username]\n");
+ _("usage: login [-fp] [username]\n"));
exit(1);
}
argc -= optind;
@@ -450,6 +459,12 @@ main(int argc, char **argv)
openlog("login", LOG_ODELAY, LOG_AUTHPRIV);
+#if 0
+ /* other than iso-8859-1 */
+ printf("\033(K");
+ fprintf(stderr,"\033(K");
+#endif
+
#ifdef USE_PAM
/* username is initialized to NULL
and if specified on the command line it is set.
@@ -458,9 +473,9 @@ main(int argc, char **argv)
retcode = pam_start("login",username, &conv, &pamh);
if(retcode != PAM_SUCCESS) {
- fprintf(stderr,"login: PAM Failure, aborting: %s\n",
+ fprintf(stderr,_("login: PAM Failure, aborting: %s\n"),
pam_strerror(pamh, retcode));
- syslog(LOG_ERR,"Couldn't initialize PAM: %s", pam_strerror(pamh, retcode));
+ syslog(LOG_ERR,_("Couldn't initialize PAM: %s"), pam_strerror(pamh, retcode));
exit(99);
}
/* hostname & tty are either set to NULL or their correct values,
@@ -469,6 +484,15 @@ main(int argc, char **argv)
PAM_FAIL_CHECK;
retcode = pam_set_item(pamh, PAM_TTY, tty);
PAM_FAIL_CHECK;
+
+#if 0
+ /* other than iso-8859-1
+ * one more time due to reset tty by PAM
+ */
+ printf("\033(K");
+ fprintf(stderr,"\033(K");
+#endif
+
/* if fflag == 1, then the user has already been authenticated */
if (fflag && (getuid() == 0))
passwd_req = 0;
@@ -491,9 +515,9 @@ main(int argc, char **argv)
(retcode == PAM_CRED_INSUFFICIENT) ||
(retcode == PAM_AUTHINFO_UNAVAIL))) {
pam_get_item(pamh, PAM_USER, (const void **) &username);
- syslog(LOG_NOTICE,"FAILED LOGIN %d FROM %s FOR %s, %s",
+ syslog(LOG_NOTICE,_("FAILED LOGIN %d FROM %s FOR %s, %s"),
failcount, hostname, username, pam_strerror(pamh, retcode));
- fprintf(stderr,"Login incorrect\n\n");
+ fprintf(stderr,_("Login incorrect\n\n"));
pam_set_item(pamh,PAM_USER,NULL);
retcode = pam_authenticate(pamh, 0);
}
@@ -502,14 +526,14 @@ main(int argc, char **argv)
pam_get_item(pamh, PAM_USER, (const void **) &username);
if (retcode == PAM_MAXTRIES)
- syslog(LOG_NOTICE,"TOO MANY LOGIN TRIES (%d) FROM %s FOR "
- "%s, %s", failcount, hostname, username,
+ syslog(LOG_NOTICE,_("TOO MANY LOGIN TRIES (%d) FROM %s FOR "
+ "%s, %s"), failcount, hostname, username,
pam_strerror(pamh, retcode));
else
- syslog(LOG_NOTICE,"FAILED LOGIN SESSION FROM %s FOR %s, %s",
+ syslog(LOG_NOTICE,_("FAILED LOGIN SESSION FROM %s FOR %s, %s"),
hostname, username, pam_strerror(pamh, retcode));
- fprintf(stderr,"\nLogin incorrect\n");
+ fprintf(stderr,_("\nLogin incorrect\n"));
pam_end(pamh, retcode);
exit(0);
}
@@ -558,7 +582,7 @@ main(int argc, char **argv)
Feb 95 <alvaro@etsit.upm.es> */
if (username[0] == '+') {
- puts("Illegal username");
+ puts(_("Illegal username"));
badlogin(username);
sleepexit(1);
}
@@ -601,16 +625,16 @@ main(int argc, char **argv)
*/
if (pwd && pwd->pw_uid == 0 && !rootterm(tty)) {
fprintf(stderr,
- "%s login refused on this terminal.\n",
+ _("%s login refused on this terminal.\n"),
pwd->pw_name);
if (hostname)
syslog(LOG_NOTICE,
- "LOGIN %s REFUSED FROM %s ON TTY %s",
+ _("LOGIN %s REFUSED FROM %s ON TTY %s"),
pwd->pw_name, hostname, tty);
else
syslog(LOG_NOTICE,
- "LOGIN %s REFUSED ON TTY %s",
+ _("LOGIN %s REFUSED ON TTY %s"),
pwd->pw_name, tty);
continue;
}
@@ -623,7 +647,7 @@ main(int argc, char **argv)
break;
setpriority(PRIO_PROCESS, 0, -4);
- pp = getpass("Password: ");
+ pp = getpass(_("Password: "));
# ifdef CRYPTOCARD
if (strncmp(pp, "CRYPTO", 6) == 0) {
@@ -662,7 +686,7 @@ main(int argc, char **argv)
if (pwd && !strcmp(p, pwd->pw_passwd))
break;
- printf("Login incorrect\n");
+ printf(_("Login incorrect\n"));
badlogin(username); /* log ALL bad logins */
failures++;
@@ -684,11 +708,11 @@ main(int argc, char **argv)
switch(errno) {
case EUSERS:
fprintf(stderr,
- "Too many users logged on already.\nTry again later.\n");
+ _("Too many users logged on already.\nTry again later.\n"));
break;
case EPROCLIM:
fprintf(stderr,
- "You have too many processes running.\n");
+ _("You have too many processes running.\n"));
break;
default:
perror("quota (Q_SETUID)");
@@ -734,7 +758,7 @@ main(int argc, char **argv)
#ifndef __linux__
# ifdef KERBEROS
if (notickets && !quietlog)
- printf("Warning: no Kerberos tickets issued\n");
+ printf(_("Warning: no Kerberos tickets issued\n"));
# endif
# ifndef USE_PAM /* PAM does all of this for us */
@@ -746,13 +770,13 @@ main(int argc, char **argv)
if (pwd->pw_change) {
if (tp.tv_sec >= pwd->pw_change) {
- printf("Sorry -- your password has expired.\n");
+ printf(_("Sorry -- your password has expired.\n"));
sleepexit(1);
}
else if (tp.tv_sec - pwd->pw_change < TWOWEEKS && !quietlog) {
struct tm *ttp;
ttp = localtime(&pwd->pw_change);
- printf("Warning: your password expires on %s %d, %d\n",
+ printf(_("Warning: your password expires on %s %d, %d\n"),
months[ttp->tm_mon], ttp->tm_mday,
TM_YEAR_BASE + ttp->tm_year);
}
@@ -760,13 +784,13 @@ main(int argc, char **argv)
if (pwd->pw_expire) {
if (tp.tv_sec >= pwd->pw_expire) {
- printf("Sorry -- your account has expired.\n");
+ printf(_("Sorry -- your account has expired.\n"));
sleepexit(1);
}
else if (tp.tv_sec - pwd->pw_expire < TWOWEEKS && !quietlog) {
struct tm *ttp;
ttp = localtime(&pwd->pw_expire);
- printf("Warning: your account expires on %s %d, %d\n",
+ printf(_("Warning: your account expires on %s %d, %d\n"),
months[ttp->tm_mon], ttp->tm_mday,
TM_YEAR_BASE + ttp->tm_year);
}
@@ -796,7 +820,6 @@ main(int argc, char **argv)
struct utmp ut;
int wtmp;
struct utmp *utp;
- time_t t;
pid_t mypid = getpid();
utmpname(_PATH_UTMP);
@@ -814,6 +837,16 @@ Michael Riepe <michael@stud.uni-hannover.de>
&& utp->ut_type >= INIT_PROCESS
&& utp->ut_type <= DEAD_PROCESS)
break;
+
+ /* If we can't find a pre-existing entry by pid, try by line.
+ BSD network daemons may rely on this. (anonymous) */
+ if (utp == NULL) {
+ setutent();
+ ut.ut_type = LOGIN_PROCESS;
+ strncpy(ut.ut_id, ttyn + 8, sizeof(ut.ut_id));
+ strncpy(ut.ut_line, ttyn + 5, sizeof(ut.ut_line));
+ utp = getutid(&ut);
+ }
if (utp) {
memcpy(&ut, utp, sizeof(ut));
@@ -821,7 +854,6 @@ Michael Riepe <michael@stud.uni-hannover.de>
/* some gettys/telnetds don't initialize utmp... */
memset(&ut, 0, sizeof(ut));
}
- /* endutent(); superfluous, error for glibc */
if (ut.ut_id[0] == 0)
strncpy(ut.ut_id, ttyn + 8, sizeof(ut.ut_id));
@@ -829,9 +861,16 @@ Michael Riepe <michael@stud.uni-hannover.de>
strncpy(ut.ut_user, username, sizeof(ut.ut_user));
strncpy(ut.ut_line, ttyn + 5, sizeof(ut.ut_line));
ut.ut_line[sizeof(ut.ut_line)-1] = 0;
- time(&t);
- ut.ut_time = t; /* ut_time is not always a time_t */
- /* (we might test #ifdef _HAVE_UT_TV ) */
+#ifdef _HAVE_UT_TV /* in <utmpbits.h> included by <utmp.h> */
+ gettimeofday(&ut.ut_tv, NULL);
+#else
+ {
+ time_t t;
+ time(&t);
+ ut.ut_time = t; /* ut_time is not always a time_t */
+ /* glibc2 #defines it as ut_tv.tv_sec */
+ }
+#endif
ut.ut_type = USER_PROCESS;
ut.ut_pid = mypid;
if (hostname) {
@@ -985,23 +1024,23 @@ Michael Riepe <michael@stud.uni-hannover.de>
#endif
if (tty[sizeof("tty")-1] == 'S')
- syslog(LOG_INFO, "DIALUP AT %s BY %s", tty, pwd->pw_name);
+ syslog(LOG_INFO, _("DIALUP AT %s BY %s"), tty, pwd->pw_name);
/* allow tracking of good logins.
-steve philp (sphilp@mail.alliance.net) */
if (pwd->pw_uid == 0) {
if (hostname)
- syslog(LOG_NOTICE, "ROOT LOGIN ON %s FROM %s",
+ syslog(LOG_NOTICE, _("ROOT LOGIN ON %s FROM %s"),
tty, hostname);
else
- syslog(LOG_NOTICE, "ROOT LOGIN ON %s", tty);
+ syslog(LOG_NOTICE, _("ROOT LOGIN ON %s"), tty);
} else {
if (hostname)
- syslog(LOG_INFO, "LOGIN ON %s BY %s FROM %s", tty,
+ syslog(LOG_INFO, _("LOGIN ON %s BY %s FROM %s"), tty,
pwd->pw_name, hostname);
else
- syslog(LOG_INFO, "LOGIN ON %s BY %s", tty,
+ syslog(LOG_INFO, _("LOGIN ON %s BY %s"), tty,
pwd->pw_name);
}
@@ -1012,8 +1051,8 @@ Michael Riepe <michael@stud.uni-hannover.de>
motd();
mail = getenv("MAIL");
if (mail && stat(mail, &st) == 0 && st.st_size != 0) {
- printf("You have %smail.\n",
- (st.st_mtime > st.st_atime) ? "new " : "");
+ printf(_("You have %smail.\n"),
+ (st.st_mtime > st.st_atime) ? _("new ") : "");
}
}
@@ -1029,8 +1068,9 @@ Michael Riepe <michael@stud.uni-hannover.de>
signal(SIGINT, SIG_IGN);
childPid = fork();
if (childPid < 0) {
+ int errsv = errno;
/* error in fork() */
- fprintf(stderr,"login: failure forking: %s", strerror(errno));
+ fprintf(stderr,_("login: failure forking: %s"), strerror(errsv));
PAM_END;
exit(0);
} else if (childPid) {
@@ -1045,17 +1085,17 @@ Michael Riepe <michael@stud.uni-hannover.de>
/* discard permissions last so can't get killed and drop core */
if(setuid(pwd->pw_uid) < 0 && pwd->pw_uid) {
- syslog(LOG_ALERT, "setuid() failed");
+ syslog(LOG_ALERT, _("setuid() failed"));
exit(1);
}
/* wait until here to change directory! */
if (chdir(pwd->pw_dir) < 0) {
- printf("No directory %s!\n", pwd->pw_dir);
+ printf(_("No directory %s!\n"), pwd->pw_dir);
if (chdir("/"))
exit(0);
pwd->pw_dir = "/";
- printf("Logging in with home = \"/\".\n");
+ printf(_("Logging in with home = \"/\".\n"));
}
/* if the shell field has a space: treat it like a shell script */
@@ -1063,7 +1103,7 @@ Michael Riepe <michael@stud.uni-hannover.de>
buff = malloc(strlen(pwd->pw_shell) + 6);
if (!buff) {
- fprintf(stderr, "login: no memory for shell script.\n");
+ fprintf(stderr, _("login: no memory for shell script.\n"));
exit(0);
}
@@ -1088,11 +1128,13 @@ Michael Riepe <michael@stud.uni-hannover.de>
execvp(childArgv[0], childArgv + 1);
- if (!strcmp(childArgv[0], "/bin/sh"))
- fprintf(stderr, "login: couldn't exec shell script: %s.\n",
- strerror(errno));
+ errsv = errno;
+
+ if (!strcmp(childArgv[0], "/bin/sh"))
+ fprintf(stderr, _("login: couldn't exec shell script: %s.\n"),
+ strerror(errsv));
else
- fprintf(stderr, "login: no shell: %s.\n", strerror(errno));
+ fprintf(stderr, _("login: no shell: %s.\n"), strerror(errsv));
exit(0);
}
@@ -1108,7 +1150,7 @@ getloginname()
cnt2 = 0;
for (;;) {
cnt = 0;
- printf("\n%s login: ", thishost); fflush(stdout);
+ printf(_("\n%s login: "), thishost); fflush(stdout);
for (p = nbuf; (ch = getchar()) != '\n'; ) {
if (ch == EOF) {
badlogin("EOF");
@@ -1119,15 +1161,15 @@ getloginname()
cnt++;
if (cnt > UT_NAMESIZE + 20) {
- fprintf(stderr, "login name much too long.\n");
- badlogin("NAME too long");
+ fprintf(stderr, _("login name much too long.\n"));
+ badlogin(_("NAME too long"));
exit(0);
}
}
if (p > nbuf) {
if (nbuf[0] == '-')
fprintf(stderr,
- "login names may not start with '-'.\n");
+ _("login names may not start with '-'.\n"));
else {
*p = '\0';
username = nbuf;
@@ -1137,8 +1179,8 @@ getloginname()
cnt2++;
if (cnt2 > 50) {
- fprintf(stderr, "too many bare linefeeds.\n");
- badlogin("EXCESSIVE linefeeds");
+ fprintf(stderr, _("too many bare linefeeds.\n"));
+ badlogin(_("EXCESSIVE linefeeds"));
exit(0);
}
}
@@ -1149,7 +1191,7 @@ timedout()
{
struct termio ti;
- fprintf(stderr, "Login timed out after %d seconds\n", timeout);
+ fprintf(stderr, _("Login timed out after %d seconds\n"), timeout);
/* reset echo */
ioctl(0, TCGETA, &ti);
@@ -1171,7 +1213,7 @@ rootterm(ttyn)
{
int fd;
char buf[100],*p;
- int cnt, more;
+ int cnt, more = 0;
fd = open(SECURETTY, O_RDONLY);
if(fd < 0) return 1;
@@ -1249,14 +1291,14 @@ dolastlog(quiet)
if (!quiet) {
if (read(fd, (char *)&ll, sizeof(ll)) == sizeof(ll) &&
ll.ll_time != 0) {
- printf("Last login: %.*s ",
+ printf(_("Last login: %.*s "),
24-5, (char *)ctime(&ll.ll_time));
if (*ll.ll_host != '\0')
- printf("from %.*s\n",
+ printf(_("from %.*s\n"),
(int)sizeof(ll.ll_host), ll.ll_host);
else
- printf("on %.*s\n",
+ printf(_("on %.*s\n"),
(int)sizeof(ll.ll_line), ll.ll_line);
}
lseek(fd, (off_t)pwd->pw_uid * sizeof(ll), SEEK_SET);
@@ -1277,12 +1319,21 @@ dolastlog(quiet)
void
badlogin(const char *name)
{
- if (hostname)
- syslog(LOG_NOTICE, "%d LOGIN FAILURE%s FROM %s, %s",
- failures, failures > 1 ? "S" : "", hostname, name);
- else
- syslog(LOG_NOTICE, "%d LOGIN FAILURE%s ON %s, %s",
- failures, failures > 1 ? "S" : "", tty, name);
+ if (failures == 1) {
+ if (hostname)
+ syslog(LOG_NOTICE, _("LOGIN FAILURE FROM %s, %s"),
+ hostname, name);
+ else
+ syslog(LOG_NOTICE, _("LOGIN FAILURE ON %s, %s"),
+ tty, name);
+ } else {
+ if (hostname)
+ syslog(LOG_NOTICE, _("%d LOGIN FAILURES FROM %s, %s"),
+ failures, hostname, name);
+ else
+ syslog(LOG_NOTICE, _("%d LOGIN FAILURES ON %s, %s"),
+ failures, tty, name);
+ }
}
#undef UNKNOWN
diff --git a/login-utils/mesg.c b/login-utils/mesg.c
index d05d333c9..cc8c4010d 100644
--- a/login-utils/mesg.c
+++ b/login-utils/mesg.c
@@ -38,6 +38,10 @@
* Modified Fri Mar 10 20:27:19 1995, faith@cs.unc.edu, for Linux
* Modified Mon Jul 1 18:14:10 1996, janl@ifi.uio.no, writing to stdout
* as suggested by Michael Meskes <meskes@Informatik.RWTH-Aachen.DE>
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*
*/
@@ -50,6 +54,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "nls.h"
int
main(argc, argv)
@@ -60,6 +65,11 @@ main(argc, argv)
char *tty;
int ch;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+
while ((ch = getopt(argc, argv, "")) != EOF)
switch (ch) {
case '?':
@@ -76,10 +86,10 @@ main(argc, argv)
if (*argv == NULL) {
if (sb.st_mode & (S_IWGRP | S_IWOTH)) {
- (void)fprintf(stdout, "is y\n");
+ (void)fprintf(stdout, _("is y\n"));
exit(0);
}
- (void)fprintf(stdout, "is n\n");
+ (void)fprintf(stdout, _("is n\n"));
exit(1);
}
@@ -99,6 +109,6 @@ main(argc, argv)
exit(1);
}
-usage: (void)fprintf(stderr, "usage: mesg [y | n]\n");
+usage: (void)fprintf(stderr, _("usage: mesg [y | n]\n"));
exit(2);
}
diff --git a/login-utils/newgrp.c b/login-utils/newgrp.c
index 5c26a4a0e..1f8be95f2 100644
--- a/login-utils/newgrp.c
+++ b/login-utils/newgrp.c
@@ -3,6 +3,10 @@
/* Vesa Roukonen added code for asking password */
/* Currently maintained at ftp://ftp.daimi.aau.dk/pub/linux/poe/ */
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
@@ -11,6 +15,7 @@
#include <errno.h>
#include "pathnames.h"
#include "my_crypt.h"
+#include "nls.h"
#ifndef TRUE
# define TRUE 1
@@ -39,7 +44,7 @@ allow_setgid(struct passwd *pe, struct group *ge)
if(ge->gr_passwd && ge->gr_passwd[0] != 0) {
if(strcmp(ge->gr_passwd,
- crypt(getpass("Password: "), ge->gr_passwd)) == 0) {
+ crypt(getpass(_("Password: ")), ge->gr_passwd)) == 0) {
return TRUE; /* password accepted */
}
}
@@ -53,9 +58,13 @@ main(int argc, char *argv[])
struct passwd *pw_entry;
struct group *gr_entry;
char *shell;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
if (!(pw_entry = getpwuid(getuid()))) {
- perror("newgrp: Who are you?");
+ perror(_("newgrp: Who are you?"));
exit(1);
}
@@ -63,34 +72,34 @@ main(int argc, char *argv[])
if (argc < 2) {
if(setgid(pw_entry->pw_gid) < 0) {
- perror("newgrp: setgid");
+ perror(_("newgrp: setgid"));
exit(1);
}
} else {
if (!(gr_entry = getgrnam(argv[1]))) {
- perror("newgrp: No such group.");
+ perror(_("newgrp: No such group."));
exit(1);
} else {
if(allow_setgid(pw_entry, gr_entry)) {
if(setgid(gr_entry->gr_gid) < 0) {
- perror("newgrp: setgid");
+ perror(_("newgrp: setgid"));
exit(1);
}
} else {
- puts("newgrp: Permission denied");
+ puts(_("newgrp: Permission denied"));
exit(1);
}
}
}
if(setuid(getuid()) < 0) {
- perror("newgrp: setuid");
+ perror(_("newgrp: setuid"));
exit(1);
}
fflush(stdout); fflush(stderr);
execl(shell,shell,(char*)0);
- perror("No shell");
+ perror(_("No shell"));
fflush(stderr);
exit(1);
}
diff --git a/login-utils/passwd.c b/login-utils/passwd.c
index 0057a283b..90054ccca 100644
--- a/login-utils/passwd.c
+++ b/login-utils/passwd.c
@@ -38,6 +38,12 @@
* auth.warning. (Of course, the password itself is not logged.)
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
+ */
+
/*
* Usage: passwd [username [password]]
* Only root may use the one and two argument forms.
@@ -59,12 +65,10 @@
#include <errno.h>
#include <sys/resource.h>
#include "my_crypt.h"
+#include "nls.h"
+#include "env.h"
-#if 0
-# include "../version.h"
-#else
-char version[] = "admutil 1.18, 15-Oct-95";
-#endif
+#include "../version.h"
#ifndef _PATH_CHFN
# define _PATH_CHFN "/usr/bin/chfn"
@@ -156,7 +160,7 @@ int check_passwd(char *passwd, char *oldpasswd, char *user, char *gecos)
char *c, *g, *p;
if ( (strlen(passwd) < 6) ) {
- printf("The password must have at least 6 characters, try again.\n");
+ printf(_("The password must have at least 6 characters, try again.\n"));
return 0;
}
@@ -169,19 +173,19 @@ int check_passwd(char *passwd, char *oldpasswd, char *user, char *gecos)
}
if ( (other + digit + ucase + lcase) < 2) {
- printf("The password must contain characters out of two of the following\n");
- printf("classes: upper and lower case letters, digits and non alphanumeric\n");
- printf("characters. See passwd(1) for more information.\n");
+ printf(_("The password must contain characters out of two of the following\n"));
+ printf(_("classes: upper and lower case letters, digits and non alphanumeric\n"));
+ printf(_("characters. See passwd(1) for more information.\n"));
return 0;
}
if ( oldpasswd[0] && !strncmp(oldpasswd, crypt(passwd, oldpasswd), 13) ) {
- printf("You cannot reuse the old password.\n");
+ printf(_("You cannot reuse the old password.\n"));
return 0;
}
if ( !check_passwd_string(passwd, user) ) {
- printf("Please don't use something like your username as password!\n");
+ printf(_("Please don't use something like your username as password!\n"));
return 0;
}
@@ -192,14 +196,14 @@ int check_passwd(char *passwd, char *oldpasswd, char *user, char *gecos)
g[c-gecos] = 0;
while ( (c=rindex(g, ' ')) ) {
if ( !check_passwd_string(passwd, c+1) ) {
- printf("Please don't use something like your realname as password!\n");
+ printf(_("Please don't use something like your realname as password!\n"));
free (g);
return 0;
}
*c = '\0';
} /* while */
if ( !check_passwd_string(passwd, g) ) {
- printf("Please don't use something like your realname as password!\n");
+ printf(_("Please don't use something like your realname as password!\n"));
free (g);
return 0;
}
@@ -216,8 +220,8 @@ int check_passwd(char *passwd, char *oldpasswd, char *user, char *gecos)
void usage()
{
- printf ("Usage: passwd [username [password]]\n");
- printf("Only root may use the one and two argument forms.\n");
+ printf (_("Usage: passwd [username [password]]\n"));
+ printf(_("Only root may use the one and two argument forms.\n"));
}
int
@@ -248,6 +252,11 @@ main(argc, argv)
{0, 0, 0, 0}
};
+ sanitize_env();
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
optind = 0;
while ( (c = getopt_long(argc, argv, "foqsvV", long_options, &opt_index)) != -1 ) {
switch (c) {
@@ -265,17 +274,17 @@ main(argc, argv)
break;
case 'V':
case 'v':
- printf("%s\n", version);
+ printf("%s\n", util_linux_version);
exit(0);
default:
- fprintf(stderr, "Usage: passwd [-foqsvV] [user [password]]\n");
+ fprintf(stderr, _("Usage: passwd [-foqsvV] [user [password]]\n"));
exit(1);
} /* switch (c) */
} /* while */
if (fullname || shell) {
char *args[100];
- int i, j;
+ int i, j, errsv;
setuid(getuid()); /* drop special privs. */
if (fullname)
@@ -288,29 +297,33 @@ main(argc, argv)
args[j] = NULL;
execv(args[0], args);
- fprintf(stderr, "Can't exec %s: %s\n", args[0], strerror(errno));
+ errsv = errno;
+ fprintf(stderr, _("Can't exec %s: %s\n"), args[0], strerror(errsv));
exit(1);
}
switch (argc - optind) {
case 0:
- if ( !(user = getlogin()) ) {
+ /* Why use getlogin()? Some systems allow having several
+ usernames with the same uid, especially several root accounts.
+ One changes the password for the username, not the uid. */
+ if ( !(user = getlogin()) || !*user ) {
if ( !(pe = getpwuid( getuid() )) ) {
- pexit("Cannot find login name");
+ pexit(_("Cannot find login name"));
} else
user = pe->pw_name;
}
break;
case 1:
if(gotuid) {
- printf("Only root can change the password for others.\n");
+ printf(_("Only root can change the password for others.\n"));
exit (1);
} else
user = argv[optind];
break;
case 2:
if(gotuid) {
- printf("Only root can change the password for others.\n");
+ printf(_("Only root can change the password for others.\n"));
exit(1);
} else {
user = argv[optind];
@@ -318,33 +331,33 @@ main(argc, argv)
}
break;
default:
- printf("Too many arguments.\n");
+ printf(_("Too many arguments.\n"));
exit (1);
} /* switch */
if(!(pe = getpwnam(user))) {
- pexit("Can't find username anywhere. Is `%s' really a user?", user);
+ pexit(_("Can't find username anywhere. Is `%s' really a user?"), user);
}
if (!(is_local(user))) {
- puts("Sorry, I can only change local passwords. Use yppasswd instead.");
+ puts(_("Sorry, I can only change local passwords. Use yppasswd instead."));
exit(1);
}
/* if somebody got into changing utmp... */
if(gotuid && gotuid != pe->pw_uid) {
- puts("UID and username does not match, imposter!");
+ puts(_("UID and username does not match, imposter!"));
exit(1);
}
if ( !silent )
- printf( "Changing password for %s\n", user );
+ printf( _("Changing password for %s\n"), user );
if ( (gotuid && pe->pw_passwd && pe->pw_passwd[0])
|| (!gotuid && !strcmp(user,"root")) ) {
- oldstr = getpass("Enter old password: ");
+ oldstr = getpass(_("Enter old password: "));
if(strncmp(pe->pw_passwd, crypt(oldstr, pe->pw_passwd), 13)) {
- puts("Illegal password, imposter.");
+ puts(_("Illegal password, imposter."));
exit(1);
}
}
@@ -356,9 +369,9 @@ main(argc, argv)
/* password not set on command line by root, ask for it ... */
redo_it:
- pwdstr = getpass("Enter new password: ");
+ pwdstr = getpass(_("Enter new password: "));
if (pwdstr[0] == '\0') {
- puts("Password not changed.");
+ puts(_("Password not changed."));
exit(1);
}
@@ -368,10 +381,10 @@ main(argc, argv)
strncpy(pwdstr1, pwdstr, 9);
pwdstr1[9] = 0;
- pwdstr = getpass("Re-type new password: ");
+ pwdstr = getpass(_("Re-type new password: "));
if(strncmp(pwdstr, pwdstr1, 8)) {
- puts("You misspelled it. Password not changed.");
+ puts(_("You misspelled it. Password not changed."));
exit(1);
}
} /* pwdstr i.e. password set on command line */
@@ -386,28 +399,28 @@ main(argc, argv)
#ifdef LOGALL
openlog("passwd", 0, LOG_AUTH);
if (gotuid)
- syslog(LOG_NOTICE,"password changed, user %s",user);
+ syslog(LOG_NOTICE,_("password changed, user %s"),user);
else {
if ( !strcmp(user, "root") )
- syslog(LOG_WARNING,"ROOT PASSWORD CHANGED");
+ syslog(LOG_WARNING,_("ROOT PASSWORD CHANGED"));
else
- syslog(LOG_NOTICE,"password changed by root, user %s",user);
+ syslog(LOG_NOTICE,_("password changed by root, user %s"),user);
}
closelog();
#endif /* LOGALL */
pe->pw_passwd = cryptstr;
#ifdef DEBUG
- printf ("calling setpwnam to set password.\n");
+ printf (_("calling setpwnam to set password.\n"));
#else
if (setpwnam( pe ) < 0) {
perror( "setpwnam" );
- printf( "Password *NOT* changed. Try again later.\n" );
+ printf( _("Password *NOT* changed. Try again later.\n" ));
exit( 1 );
}
#endif
if ( !silent )
- printf("Password changed.\n");
+ printf(_("Password changed.\n"));
exit(0);
}
diff --git a/login-utils/setpwnam.c b/login-utils/setpwnam.c
index 1f1067cf1..8631e7adc 100644
--- a/login-utils/setpwnam.c
+++ b/login-utils/setpwnam.c
@@ -41,6 +41,7 @@
* $Author: poer $
* $Revision: 1.13 $
* $Date: 1997/06/23 08:26:29 $
+ *
*/
#undef DEBUG
diff --git a/login-utils/shutdown.c b/login-utils/shutdown.c
index 8ba13b647..7ccb748ac 100644
--- a/login-utils/shutdown.c
+++ b/login-utils/shutdown.c
@@ -27,6 +27,10 @@
*
* Changes by Richard Gooch <rgooch@atnf.csiro.au> (butchered by aeb)
* introducing shutdown.conf.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <stdio.h>
@@ -48,6 +52,7 @@
#include <sys/resource.h>
#include "linux_reboot.h"
#include "pathnames.h"
+#include "nls.h"
static void usage(), int_handler(), write_user(struct utmp *);
static void wall(), write_wtmp(), unmount_disks(), unmount_disks_ourselves();
@@ -69,6 +74,7 @@ char halt_action[256]; /* to find out what to do upon halt */
/* #define DEBUGGING */
#define WR(s) write(fd, s, strlen(s))
+#define WRCRLF write(fd, "\r\n", 2)
#define ERRSTRING sys_errlist[errno]
@@ -76,7 +82,7 @@ void
usage()
{
fprintf(stderr,
- "Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n");
+ _("Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n"));
exit(1);
}
@@ -94,7 +100,7 @@ int_handler()
{
unlink(_PATH_NOLOGIN);
signal(SIGINT, SIG_DFL);
- my_puts("Shutdown process aborted");
+ my_puts(_("Shutdown process aborted"));
exit(1);
}
@@ -110,9 +116,13 @@ main(int argc, char *argv[])
int fd;
char *ptr;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
#ifndef DEBUGGING
if(geteuid()) {
- fprintf(stderr, "%s: Only root can shut a system down.\n",
+ fprintf(stderr, _("%s: Only root can shut a system down.\n"),
argv[0]);
exit(1);
}
@@ -206,8 +216,8 @@ main(int argc, char *argv[])
then = 3600 * hour + 60 * minute;
timeout = then - now;
if(timeout < 0) {
- fprintf(stderr, "That must be tomorrow, "
- "can't you wait till then?\n");
+ fprintf(stderr, _("That must be tomorrow, "
+ "can't you wait till then?\n"));
exit(1);
}
} else {
@@ -233,6 +243,9 @@ main(int argc, char *argv[])
if (fgets (line, sizeof(line), fp) != NULL &&
strncasecmp (line, "HALT_ACTION", 11) == 0 &&
iswhitespace(line[11])) {
+ p = index(line, '\n');
+ if (p)
+ *p = 0; /* strip final '\n' */
p = line+11;
while(iswhitespace(*p))
p++;
@@ -255,16 +268,16 @@ main(int argc, char *argv[])
}
*ptr = '\0';
} else if (!opt_msgset) {
- strcpy(message, "for maintenance; bounce, bounce");
+ strcpy(message, _("for maintenance; bounce, bounce"));
}
#ifdef DEBUGGING
- printf("timeout = %d, quiet = %d, reboot = %d\n",
+ printf(_("timeout = %d, quiet = %d, reboot = %d\n"),
timeout, opt_quiet, opt_reboot);
#endif
/* so much for option-processing, now begin termination... */
- if(!(whom = getlogin())) whom = "ghost";
+ if(!(whom = getlogin()) || !*whom) whom = "ghost";
if(strlen(whom) > 40) whom[40] = 0; /* see write_user() */
setpriority(PRIO_PROCESS, 0, PRIO_MIN);
@@ -282,9 +295,14 @@ main(int argc, char *argv[])
if((fd = open(_PATH_NOLOGIN, O_WRONLY|O_CREAT, 0644)) >= 0) {
- WR("\r\nThe system is being shut down within 5 minutes\r\n");
+ /* keep xgettext happy and leave \r\n outside strings */
+ WRCRLF;
+ WR(_("The system is being shut down within 5 minutes"));
+ WRCRLF;
write(fd, message, strlen(message));
- WR("\r\nLogin is therefore prohibited.\r\n");
+ WRCRLF;
+ WR(_("Login is therefore prohibited."));
+ WRCRLF;
close(fd);
}
@@ -304,8 +322,8 @@ main(int argc, char *argv[])
/* do syslog message... */
openlog(prog, LOG_CONS, LOG_AUTH);
- syslog(LOG_NOTICE, "%s by %s: %s",
- opt_reboot ? "rebooted" : "halted", whom, message);
+ syslog(LOG_NOTICE, _("%s by %s: %s"),
+ opt_reboot ? _("rebooted") : _("halted"), whom, message);
closelog();
if(opt_fast)
@@ -335,6 +353,14 @@ main(int argc, char *argv[])
/* turn off accounting */
acct(NULL);
#endif
+ /* RedHat and SuSE like to remove /etc/nologin.
+ Perhaps the usual sequence is
+ touch nologin; shutdown -h; fiddle with hardware;
+ boot; fiddle with software; rm nologin
+ and removing it here will be counterproductive.
+ Let us see whether people complain. */
+ unlink(_PATH_NOLOGIN);
+
sync();
sleep(2);
@@ -348,9 +374,9 @@ main(int argc, char *argv[])
if(opt_reboot) {
my_reboot(LINUX_REBOOT_CMD_RESTART); /* RB_AUTOBOOT */
- my_puts("\nWhy am I still alive after reboot?");
+ my_puts(_("\nWhy am I still alive after reboot?"));
} else {
- my_puts("\nNow you can turn off the power...");
+ my_puts(_("\nNow you can turn off the power..."));
/* allow C-A-D now, faith@cs.unc.edu, re-fixed 8-Jul-96 */
my_reboot(LINUX_REBOOT_CMD_CAD_ON); /* RB_ENABLE_CAD */
@@ -365,10 +391,10 @@ main(int argc, char *argv[])
void
do_halt(char *action) {
if (strcasecmp (action, "power_off") == 0) {
- printf("Calling kernel power-off facility...\n");
+ printf(_("Calling kernel power-off facility...\n"));
fflush(stdout);
my_reboot(LINUX_REBOOT_CMD_POWER_OFF);
- printf("Error powering off\t%s\n", ERRSTRING);
+ printf(_("Error powering off\t%s\n"), ERRSTRING);
fflush(stdout);
sleep (2);
} else
@@ -376,10 +402,10 @@ do_halt(char *action) {
/* This should be improved; e.g. Mike Jagdis wants "/sbin/mdstop -a" */
/* Maybe we should also fork and wait */
if (action[0] == '/') {
- printf("Executing the program \"%s\" ...\n", action);
+ printf(_("Executing the program \"%s\" ...\n"), action);
fflush(stdout);
execl(action, action, NULL);
- printf("Error executing\t%s\n", ERRSTRING);
+ printf(_("Error executing\t%s\n"), ERRSTRING);
fflush(stdout);
sleep (2);
}
@@ -402,23 +428,27 @@ write_user(struct utmp *ut)
if((fd = open(term, O_WRONLY|O_NONBLOCK)) < 0)
return;
- sprintf(msg, "\007\r\nURGENT: broadcast message from %s:\r\n", whom);
+ sprintf(msg, _("\007URGENT: broadcast message from %s:"), whom);
+ WRCRLF;
WR(msg);
+ WRCRLF;
if(minutes == 0) {
- sprintf(msg, "System going down IMMEDIATELY!\r\n\n");
+ sprintf(msg, _("System going down IMMEDIATELY!\n"));
} else if(minutes > 60) {
hours = minutes / 60;
- sprintf(msg, "System going down in %d hour%s %d minutes\r\n",
- hours, hours == 1 ? "" : "s", minutes - 60*hours);
+ sprintf(msg, _("System going down in %d hour%s %d minutes"),
+ hours, hours == 1 ? "" : _("s"), minutes - 60*hours);
} else {
- sprintf(msg, "System going down in %d minute%s\r\n\n",
- minutes, minutes == 1 ? "" : "s");
+ sprintf(msg, _("System going down in %d minute%s\n"),
+ minutes, minutes == 1 ? "" : _("s"));
}
WR(msg);
+ WRCRLF;
- sprintf(msg, "\t... %s ...\r\n\n", message);
+ sprintf(msg, _("\t... %s ...\n"), message);
WR(msg);
+ WRCRLF;
close(fd);
}
@@ -473,7 +503,7 @@ swap_off()
sync();
if ((pid = fork()) < 0) {
- my_puts("Cannot fork for swapoff. Shrug!");
+ my_puts(_("Cannot fork for swapoff. Shrug!"));
return;
}
if (!pid) {
@@ -481,8 +511,8 @@ swap_off()
execl("/etc/swapoff", SWAPOFF_ARGS, NULL);
execl("/bin/swapoff", SWAPOFF_ARGS, NULL);
execlp("swapoff", SWAPOFF_ARGS, NULL);
- my_puts("Cannot exec swapoff, "
- "hoping umount will do the trick.");
+ my_puts(_("Cannot exec swapoff, "
+ "hoping umount will do the trick."));
exit(0);
}
while ((result = wait(&status)) != -1 && result != pid)
@@ -500,20 +530,25 @@ unmount_disks()
sync();
if ((pid = fork()) < 0) {
- my_puts("Cannot fork for umount, trying manually.");
+ my_puts(_("Cannot fork for umount, trying manually."));
unmount_disks_ourselves();
return;
}
if (!pid) {
execl(_PATH_UMOUNT, UMOUNT_ARGS, NULL);
- my_puts("Cannot exec " _PATH_UMOUNT ", trying umount.");
+
+ /* need my_printf instead of my_puts here */
+ freopen(_PATH_CONSOLE, "w", stdout);
+ printf(_("Cannot exec %s, trying umount.\n"), _PATH_UMOUNT);
+ fflush(stdout);
+
execlp("umount", UMOUNT_ARGS, NULL);
- my_puts("Cannot exec umount, giving up on umount.");
+ my_puts(_("Cannot exec umount, giving up on umount."));
exit(0);
}
while ((result = wait(&status)) != -1 && result != pid)
;
- my_puts("Unmounting any remaining filesystems...");
+ my_puts(_("Unmounting any remaining filesystems..."));
unmount_disks_ourselves();
}
@@ -549,7 +584,7 @@ unmount_disks_ourselves()
printf("umount %s\n", filesys);
#else
if (umount(mntlist[i]) < 0)
- printf("shutdown: Couldn't umount %s\n", filesys);
+ printf(_("shutdown: Couldn't umount %s\n"), filesys);
#endif
}
}
diff --git a/login-utils/simpleinit.c b/login-utils/simpleinit.c
index 1664404c3..1e496ad59 100644
--- a/login-utils/simpleinit.c
+++ b/login-utils/simpleinit.c
@@ -1,6 +1,10 @@
/* simpleinit.c - poe@daimi.aau.dk */
/* Version 1.21 */
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
@@ -21,6 +25,7 @@
#include "my_crypt.h"
#include "pathnames.h"
#include "linux_reboot.h"
+#include "nls.h"
#define CMDSIZ 150 /* max size of a line in inittab */
#define NUMCMD 30 /* max number of lines in inittab */
@@ -71,15 +76,15 @@ enter_single()
pid_t pid;
int i;
- err("Booting to single user mode.\n");
+ err(_("Booting to single user mode.\n"));
if((pid = fork()) == 0) {
/* the child */
execl(_PATH_BSHELL, _PATH_BSHELL, NULL);
- err("exec of single user shell failed\n");
+ err(_("exec of single user shell failed\n"));
} else if(pid > 0) {
while(wait(&i) != pid) /* nothing */;
} else if(pid < 0) {
- err("fork of single user shell failed\n");
+ err(_("fork of single user shell failed\n"));
}
unlink(_PATH_SINGLE);
}
@@ -95,6 +100,11 @@ int main(int argc, char *argv[])
signal(SIGTSTP, tstp_handler);
signal(SIGINT, int_handler);
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+
/*
* start up in single user mode if /etc/singleboot exists or if
* argv[1] is "single".
@@ -206,14 +216,14 @@ int boot_single(int singlearg, int argc, char *argv[])
return 1; /* a bad /etc/passwd should not lock out */
for(i = 0; i < MAXTRIES; i++) {
- pass = getpass("Password: ");
+ pass = getpass(_("Password: "));
if(pass == NULL) continue;
if(!strcmp(crypt(pass, rootpass), rootpass)) {
return 1;
}
- puts("\nWrong password.\n");
+ puts(_("\nWrong password.\n"));
}
} else return 1;
}
@@ -239,16 +249,16 @@ int do_rc()
close(0);
if(open(_PATH_RC, O_RDONLY, 0) == 0) {
execv(_PATH_BSHELL, argv);
- err("exec rc failed\n");
+ err(_("exec rc failed\n"));
_exit(2);
}
- err("open of rc file failed\n");
+ err(_("open of rc file failed\n"));
_exit(1);
} else if(pid > 0) {
/* parent, wait till rc process dies before spawning */
while(wait(&stat) != pid) /* nothing */;
} else if(pid < 0) {
- err("fork of rc shell failed\n");
+ err(_("fork of rc shell failed\n"));
}
return WEXITSTATUS(stat);
}
@@ -260,7 +270,7 @@ void spawn(int i)
if((pid = fork()) < 0) {
inittab[i].pid = -1;
- err("fork failed\n");
+ err(_("fork failed\n"));
return;
}
if(pid) {
@@ -289,7 +299,7 @@ void spawn(int i)
env[2] = (char *)0;
execve(inittab[i].toks[0], inittab[i].toks, env);
- err("exec failed\n");
+ err(_("exec failed\n"));
sleep(5);
_exit(1);
}
@@ -311,7 +321,7 @@ void read_inittab()
/* termenv = "vt100"; */
if(!(f = fopen(_PATH_INITTAB, "r"))) {
- err("cannot open inittab\n");
+ err(_("cannot open inittab\n"));
_exit(1);
}
@@ -349,7 +359,7 @@ void read_inittab()
/* special-case termcap for the console ttys */
(void) sprintf(tty, "/dev/%s", inittab[i].tty);
if(!termenv || stat(tty, &stb) < 0) {
- err("no TERM or cannot stat tty\n");
+ err(_("no TERM or cannot stat tty\n"));
} else {
/* is it a console tty? */
if(major(stb.st_rdev) == 4 && minor(stb.st_rdev) < 64) {
diff --git a/login-utils/ttymsg.c b/login-utils/ttymsg.c
index 7caf35be3..6bf2f82f6 100644
--- a/login-utils/ttymsg.c
+++ b/login-utils/ttymsg.c
@@ -34,6 +34,12 @@
*
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
+ */
+
#include <sys/types.h>
#include <sys/uio.h>
#include <signal.h>
@@ -45,6 +51,7 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include "nls.h"
#ifdef __linux__
#include "pathnames.h"
@@ -68,19 +75,20 @@ ttymsg(iov, iovcnt, line, tmout)
static char errbuf[MAXNAMLEN+1024];
register int cnt, fd, left, wret;
struct iovec localiov[6];
- int forked = 0;
+ int forked = 0, errsv;
if (iovcnt > sizeof(localiov) / sizeof(localiov[0]))
- return ("too many iov's (change code in wall/ttymsg.c)");
+ return (_("too many iov's (change code in wall/ttymsg.c)"));
+
+ /* The old code here rejected the line argument when it contained a '/',
+ saying: "A slash may be an attempt to break security...".
+ However, if a user can control the line argument here
+ then he can make this routine write to /dev/hda or /dev/sda
+ already. So, this test was worthless, and these days it is
+ also wrong since people use /dev/pts/xxx. */
- if (strchr(line, '/')) {
- /* A slash is an attempt to break security... */
- (void) sprintf(errbuf, "'/' in \"%s\"", device);
- errbuf[1024] = 0; /* protect caller */
- return (errbuf);
- }
if (strlen(line) + sizeof(_PATH_DEV) + 1 > sizeof(device)) {
- (void) sprintf(errbuf, "excessively long line arg");
+ (void) sprintf(errbuf, _("excessively long line arg"));
return (errbuf);
}
(void) sprintf(device, "%s%s", _PATH_DEV, line);
@@ -134,10 +142,12 @@ ttymsg(iov, iovcnt, line, tmout)
cpid = fork();
if (cpid < 0) {
if (strlen(strerror(errno)) > 1000)
- (void) sprintf(errbuf, "cannot fork");
- else
+ (void) sprintf(errbuf, _("cannot fork"));
+ else {
+ errsv = errno;
(void) sprintf(errbuf,
- "fork: %s", strerror(errno));
+ _("fork: %s"), strerror(errsv));
+ }
(void) close(fd);
return (errbuf);
}
@@ -164,10 +174,12 @@ ttymsg(iov, iovcnt, line, tmout)
if (forked)
_exit(1);
if (strlen(strerror(errno)) > 1000)
- (void) sprintf(errbuf, "%s: BAD ERROR", device);
- else
+ (void) sprintf(errbuf, _("%s: BAD ERROR"), device);
+ else {
+ errsv = errno;
(void) sprintf(errbuf, "%s: %s", device,
- strerror(errno));
+ strerror(errsv));
+ }
errbuf[1024] = 0;
return (errbuf);
}
diff --git a/login-utils/vipw.c b/login-utils/vipw.c
index 50270a6e3..dfcdca2ed 100644
--- a/login-utils/vipw.c
+++ b/login-utils/vipw.c
@@ -37,6 +37,11 @@
* <joey@finlandia.infodrom.north.de>. Support for vigr.
*
* Martin Schulze's patches adapted to Util-Linux by Nicolai Langfeldt.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
*/
static char version_string[] = "vipw 1.4";
@@ -59,6 +64,7 @@ static char version_string[] = "vipw 1.4";
#include <unistd.h>
#include "setpwnam.h"
+#include "nls.h"
#define FILENAMELEN 67
@@ -140,7 +146,7 @@ pw_lock()
#if 0 /* flock()ing is superfluous here, with the ptmp/ptmptmp system. */
if (flock(lockfd, LOCK_EX|LOCK_NB)) {
(void)fprintf(stderr,
- "%s: the %s file is busy.\n", progname,
+ _("%s: the %s file is busy.\n"), progname,
program == VIPW ? "password" : "group" );
exit(1);
}
@@ -156,13 +162,15 @@ pw_lock()
if (ret == -1) {
if (errno == EEXIST)
(void)fprintf(stderr,
- "%s: the %s file is busy (%s present)\n",
+ _("%s: the %s file is busy (%s present)\n"),
progname,
program == VIPW ? "password" : "group",
tmp_file);
- else
- (void)fprintf(stderr, "%s: can't link %s: %s\n", progname,
- tmp_file, strerror(errno));
+ else {
+ int errsv = errno;
+ (void)fprintf(stderr, _("%s: can't link %s: %s\n"), progname,
+ tmp_file, strerror(errsv));
+ }
exit(1);
}
copyfile(lockfd, fd);
@@ -180,9 +188,10 @@ pw_unlock()
unlink(tmp);
link(orig_file, tmp);
if (rename(tmp_file, orig_file) == -1) {
+ int errsv = errno;
(void)fprintf(stderr,
- "%s: can't unlock %s: %s (your changes are still in %s)\n",
- progname, orig_file, strerror(errno), tmp_file);
+ _("%s: can't unlock %s: %s (your changes are still in %s)\n"),
+ progname, orig_file, strerror(errsv), tmp_file);
exit(1);
}
(void)unlink(tmp_file);
@@ -205,7 +214,7 @@ pw_edit(int notsetuid)
pid = fork();
if (pid < 0) {
- (void)fprintf(stderr, "%s: Cannot fork\n", progname);
+ (void)fprintf(stderr, _("%s: Cannot fork\n"), progname);
exit(1);
}
if (!pid) {
@@ -245,7 +254,7 @@ pw_error(name, err, eval)
(void)fprintf(stderr, "%s\n", strerror(sverrno));
}
(void)fprintf(stderr,
- "%s: %s unchanged\n", progname, orig_file);
+ _("%s: %s unchanged\n"), progname, orig_file);
(void)unlink(tmp_file);
exit(eval);
}
@@ -254,6 +263,10 @@ int main(int argc, char *argv[])
{
struct stat begin, end;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
bzero(tmp_file, FILENAMELEN);
progname = (rindex(argv[0], '/')) ? rindex(argv[0], '/') + 1 : argv[0];
if (!strcmp(progname, "vigr")) {
@@ -284,7 +297,7 @@ int main(int argc, char *argv[])
if (stat(tmp_file, &end))
pw_error(tmp_file, 1, 1);
if (begin.st_mtime == end.st_mtime) {
- (void)fprintf(stderr, "%s: no changes made\n", progname);
+ (void)fprintf(stderr, _("%s: no changes made\n"), progname);
pw_error((char *)NULL, 0, 0);
}
pw_unlock();
diff --git a/login-utils/wall.c b/login-utils/wall.c
index eda7e611d..70a0df65b 100644
--- a/login-utils/wall.c
+++ b/login-utils/wall.c
@@ -36,6 +36,10 @@
/*
* This program is not related to David Wall, whose Stanford Ph.D. thesis
* is entitled "Mechanisms for Broadcast and Selective Broadcast".
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <sys/param.h>
@@ -44,12 +48,14 @@
#include <sys/uio.h>
#include <paths.h>
+#include <ctype.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <utmp.h>
+#include "nls.h"
#ifdef __linux__
#include <locale.h>
#include "pathnames.h"
@@ -63,6 +69,8 @@ int nobanner;
int mbufsize;
char *mbuf;
+char *progname = "wall";
+
/* ARGSUSED */
int
main(argc, argv)
@@ -72,15 +80,19 @@ main(argc, argv)
extern int optind;
int ch;
struct iovec iov;
- struct utmp utmp;
- FILE *fp;
+ struct utmp *utmpptr;
char *p, *ttymsg();
- char line[sizeof(utmp.ut_line) + 1];
+ char line[sizeof(utmpptr->ut_line) + 1];
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ progname = argv[0];
+ p = rindex(progname, '/');
+ if (p)
+ progname = p+1;
-#ifdef __linux__
- setlocale(LC_CTYPE,"");
-#endif
-
while ((ch = getopt(argc, argv, "n")) != EOF)
switch (ch) {
case 'n':
@@ -91,7 +103,7 @@ main(argc, argv)
case '?':
default:
usage:
- (void)fprintf(stderr, "usage: wall [file]\n");
+ (void)fprintf(stderr, _("usage: %s [file]\n"), progname);
exit(1);
}
argc -= optind;
@@ -101,26 +113,24 @@ usage:
makemsg(*argv);
- if (!(fp = fopen(_PATH_UTMP, "r"))) {
- (void)fprintf(stderr, "wall: cannot read %s.\n", _PATH_UTMP);
- exit(1);
- }
+ setutent();
+
iov.iov_base = mbuf;
iov.iov_len = mbufsize;
- /* NOSTRICT */
- while (fread((char *)&utmp, sizeof(utmp), 1, fp) == 1) {
- if (!utmp.ut_name[0] ||
- !strncmp(utmp.ut_name, IGNOREUSER, sizeof(utmp.ut_name)))
+ while((utmpptr = getutent())) {
+ if (!utmpptr->ut_name[0] ||
+ !strncmp(utmpptr->ut_name, IGNOREUSER, sizeof(utmpptr->ut_name)))
+ continue;
+#ifdef USER_PROCESS
+ if (utmpptr->ut_type != USER_PROCESS)
continue;
-#ifdef __linux__
- if (utmp.ut_type != USER_PROCESS)
- continue;
#endif
- strncpy(line, utmp.ut_line, sizeof(utmp.ut_line));
- line[sizeof(utmp.ut_line)-1] = '\0';
+ strncpy(line, utmpptr->ut_line, sizeof(utmpptr->ut_line));
+ line[sizeof(utmpptr->ut_line)-1] = '\0';
if ((p = ttymsg(&iov, 1, line, 60*5)) != NULL)
- (void)fprintf(stderr, "wall: %s\n", p);
+ (void)fprintf(stderr, "%s: %s\n", progname, p);
}
+ endutent();
exit(0);
}
@@ -138,17 +148,16 @@ makemsg(fname)
char *p, *whom, *where, hostname[MAXHOSTNAMELEN],
lbuf[MAXHOSTNAMELEN + 320],
tmpname[sizeof(_PATH_TMP) + 20];
- char *getlogin(), *strcpy(), *ttyname();
(void)sprintf(tmpname, "%s/wall.XXXXXX", _PATH_TMP);
if (!(fd = mkstemp(tmpname)) || !(fp = fdopen(fd, "r+"))) {
- (void)fprintf(stderr, "wall: can't open temporary file.\n");
+ (void)fprintf(stderr, _("%s: can't open temporary file.\n"), progname);
exit(1);
}
(void)unlink(tmpname);
if (!nobanner) {
- if (!(whom = getlogin()))
+ if (!(whom = getlogin()) || !*whom)
whom = (pw = getpwuid(getuid())) ? pw->pw_name : "???";
if (!whom || strlen(whom) > 100)
whom = "someone";
@@ -169,7 +178,7 @@ makemsg(fname)
/* snprintf is not always available, but the sprintf's here
will not overflow as long as %d takes at most 100 chars */
(void)fprintf(fp, "\r%79s\r\n", " ");
- (void)sprintf(lbuf, "Broadcast Message from %s@%s",
+ (void)sprintf(lbuf, _("Broadcast Message from %s@%s"),
whom, hostname);
(void)fprintf(fp, "%-79.79s\007\007\r\n", lbuf);
(void)sprintf(lbuf, " (%s) at %d:%02d ...",
@@ -179,7 +188,7 @@ makemsg(fname)
(void)fprintf(fp, "%79s\r\n", " ");
if (fname && !(freopen(fname, "r", stdin))) {
- (void)fprintf(stderr, "wall: can't read %s.\n", fname);
+ (void)fprintf(stderr, _("%s: can't read %s.\n"), progname, fname);
exit(1);
}
while (fgets(lbuf, sizeof(lbuf), stdin))
@@ -204,16 +213,16 @@ makemsg(fname)
rewind(fp);
if (fstat(fd, &sbuf)) {
- (void)fprintf(stderr, "wall: can't stat temporary file.\n");
+ (void)fprintf(stderr, _("%s: can't stat temporary file.\n"), progname);
exit(1);
}
mbufsize = sbuf.st_size;
if (!(mbuf = malloc((u_int)mbufsize))) {
- (void)fprintf(stderr, "wall: out of memory.\n");
+ (void)fprintf(stderr, _("%s: Out of memory!\n"), progname);
exit(1);
}
if (fread(mbuf, sizeof(*mbuf), mbufsize, fp) != mbufsize) {
- (void)fprintf(stderr, "wall: can't read temporary file.\n");
+ (void)fprintf(stderr, _("%s: can't read temporary file.\n"), progname);
exit(1);
}
(void)close(fd);
diff --git a/misc-utils/Makefile b/misc-utils/Makefile
index 9ccf489b1..eeaf56764 100644
--- a/misc-utils/Makefile
+++ b/misc-utils/Makefile
@@ -4,14 +4,14 @@
# Copyright 1992, 1993, 1994, 1995 Rickard E. Faith (faith@cs.unc.edu)
# May be distirbuted under the GPL
#
-
+include ../make_include
include ../MCONFIG
# Where to put man pages?
MAN1= cal.1 chkdupexe.1 ddate.1 kill.1 \
logger.1 look.1 mcookie.1 namei.1 script.1 \
- setterm.1 tsort.1 whereis.1 write.1
+ tsort.1 whereis.1 write.1
# Where to put binaries?
# See the "install" rule for the links. . .
@@ -19,7 +19,7 @@ MAN1= cal.1 chkdupexe.1 ddate.1 kill.1 \
BIN= kill
USRBIN= cal chkdupexe ddate logger look mcookie \
- namei script setterm tsort whereis write
+ namei script tsort whereis write
ifeq "$(HAVE_CLEAR)" "no"
USRBIN:=$(USRBIN) clear
@@ -31,14 +31,21 @@ USRBIN:=$(USRBIN) reset
MAN1:=$(MAN1) reset.1
endif
+ifeq "$(HAVE_NCURSES)" "yes"
+USRBIN:=$(USRBIN) setterm
+MAN1:=$(MAN1) setterm.1
+endif
+
# For script only
+LIBPTY=
ifeq "$(HAVE_OPENPTY)" "yes"
-CFLAGS:=$(CFLAGS) -DHAVE_OPENPTY
+LIBPTY:=$(LIBPTY) -lutil
endif
# Programs requiring special compilation
NEEDS_CURSES= setterm
+NEEDS_OPENPTY= script
all: $(BIN) $(USRBIN) $(USRBIN.NONSHADOW) $(USRGAMES)
@@ -49,6 +56,9 @@ else
@echo $@ not made since it requires ncurses
endif
+$(NEEDS_OPENPTY):
+ $(CC) $(LDFLAGS) $^ -o $@ $(LIBPTY)
+
%: %.sh
cp $@.sh $@
chmod 755 $@
@@ -68,12 +78,12 @@ mcookie: mcookie.o md5.o
mcookie.o: mcookie.c md5.h
md5.o: md5.c md5.h
reset: reset.sh
+script: script.o
ifeq "$(HAVE_NCURSES)" "yes"
setterm: setterm.o
endif
-
install: all
$(INSTALLDIR) $(BINDIR) $(USRBINDIR)
$(INSTALLBIN) $(BIN) $(BINDIR)
diff --git a/misc-utils/cal.c b/misc-utils/cal.c
index ab6420140..e3acf74b1 100644
--- a/misc-utils/cal.c
+++ b/misc-utils/cal.c
@@ -36,15 +36,11 @@
/* 1999-02-01 Jean-Francois Bignolles: added option '-m' to display
* monday as the first day of the week.
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
-/* This defines _LINUX_C_LIB_VERSION_MAJOR, dunno about gnulibc. We
- don't want it to read /usr/i586-unknown-linux/include/_G_config.h
- so we specify fill path. Were we got /usr/i586-unknown-linux from?
- Dunno. */
-
-#include "/usr/include/_G_config.h"
-
#include <sys/types.h>
#include <ctype.h>
@@ -55,19 +51,13 @@
#include <time.h>
#include <unistd.h>
#include <locale.h>
+#include "nls.h"
+#include "../defines.h"
-/* Test changes to deal with gnulibc, Linux libc 5. */
-/* #if defined(__linux__) && _LINUX_C_LIB_VERSION_MAJOR > 4 */
-#if _LINUX_C_LIB_VERSION_MAJOR - 0 > 4 || __GNU_LIBRARY__ - 0 >= 5
-# define LANGINFO 1
-#else
-# define LANGINFO 0
-#endif
-
-#if LANGINFO
+#ifdef HAVE_langinfo_h
# include <langinfo.h>
#else
-# include <localeinfo.h>
+# include <localeinfo.h> /* libc4 only */
#endif
#define THURSDAY 4 /* for reformation */
@@ -162,7 +152,11 @@ main(argc, argv)
extern char *__progname;
__progname = argv[0];
#endif
-
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
setlocale(LC_ALL,"");
yflag = 0;
while ((ch = getopt(argc, argv, "mjy")) != EOF)
@@ -187,11 +181,11 @@ main(argc, argv)
switch(argc) {
case 2:
if ((month = atoi(*argv++)) < 1 || month > 12)
- errx(1, "illegal month value: use 1-12");
+ errx(1, _("illegal month value: use 1-12"));
/* FALLTHROUGH */
case 1:
if ((year = atoi(*argv)) < 1 || year > 9999)
- errx(1, "illegal year value: use 1-9999");
+ errx(1, _("illegal year value: use 1-9999"));
break;
case 0:
(void)time(&now);
@@ -228,7 +222,7 @@ void headers_init(void)
strcpy(day_headings,"");
strcpy(j_day_headings,"");
-#if defined(__linux__) && (_LINUX_C_LIB_VERSION_MAJOR > 4 || __GNU_LIBRARY__ > 1)
+#ifdef HAVE_langinfo_h
# define weekday(wd) nl_langinfo(ABDAY_1+wd)
#else
# define weekday(wd) _time_info->abbrev_wkday[wd]
@@ -247,7 +241,7 @@ void headers_init(void)
#undef weekday
for (i = 0; i < 12; i++) {
-#if defined(__linux__) && (_LINUX_C_LIB_VERSION_MAJOR > 4 || __GNU_LIBRARY__ > 1)
+#ifdef HAVE_langinfo_h
full_month[i] = nl_langinfo(MON_1+i);
#else
full_month[i] = _time_info->full_month[i];
@@ -487,6 +481,6 @@ void
usage()
{
- (void)fprintf(stderr, "usage: cal [-mjy] [[month] year]\n");
+ (void)fprintf(stderr, _("usage: cal [-mjy] [[month] year]\n"));
exit(1);
}
diff --git a/misc-utils/ddate.c b/misc-utils/ddate.c
index 09704e0b4..7f12e86fd 100644
--- a/misc-utils/ddate.c
+++ b/misc-utils/ddate.c
@@ -26,6 +26,9 @@
59 Bcy, 3161: PRAISE_BOB and KILL_BOB options split, other minor
changes.
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
*/
@@ -57,6 +60,7 @@
#include <string.h>
#include <time.h>
#include <stdio.h>
+#include "nls.h"
#ifndef __GNUC__
#define inline /* foo */
@@ -147,6 +151,10 @@ main (int argc, char *argv[])
char schwa[23*17], *fnord=0;
int pi;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
srandom(time(NULL));
/* do args here */
for(pi=1; pi<argc; pi++) {
@@ -173,7 +181,7 @@ main (int argc, char *argv[])
fnord=fnord?fnord:default_fmt;
} else if (argc!=pi) {
usage:
- fprintf(stderr,"usage: %s [+format] [day month year]\n", argv[0]);
+ fprintf(stderr,_("usage: %s [+format] [day month year]\n"), argv[0]);
exit(1);
} else {
t= time(NULL);
@@ -219,7 +227,7 @@ void format(char *buf, const char* fmt, struct disc_time dt)
for(i=0; i<fmtlen; i++) {
if((i==tib_start) && (dt.day==-1)) {
/* handle St. Tib's Day */
- strcpy(bufptr, "St. Tib's Day"); bufptr += 13;
+ strcpy(bufptr, _("St. Tib's Day")); bufptr += 13;
i=tib_end;
} else {
if(fmt[i]=='%') {
diff --git a/misc-utils/kill.c b/misc-utils/kill.c
index 629938137..768f5deab 100644
--- a/misc-utils/kill.c
+++ b/misc-utils/kill.c
@@ -34,6 +34,10 @@
* oct 5 1994 -- almost entirely re-written to allow for process names.
* modifications (c) salvatore valente <svalente@mit.edu>
* may be used / modified / distributed under the same terms as the original.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <stdio.h>
@@ -42,6 +46,7 @@
#include <ctype.h>
#include <unistd.h>
#include <signal.h>
+#include "nls.h"
#define SIZE(a) (sizeof(a)/sizeof(a[0]))
@@ -151,6 +156,10 @@ int main (int argc, char *argv[])
int do_pid, do_kill, check_all;
int *pids, *ip;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
whoami = mybasename (*argv);
numsig = SIGTERM;
do_pid = (! strcmp (whoami, "pid"));
@@ -187,7 +196,7 @@ int main (int argc, char *argv[])
/* argc == 2 */
arg = argv[1];
if ((numsig = arg_to_signum (arg)) < 0) {
- fprintf (stderr, "%s: unknown signal %s\n", whoami, arg);
+ fprintf (stderr, _("%s: unknown signal %s\n"), whoami, arg);
return 1;
}
printsig (numsig);
@@ -249,7 +258,7 @@ int main (int argc, char *argv[])
pids = get_pids (arg, check_all);
if (! pids) {
errors++;
- fprintf (stderr, "%s: can't find process \"%s\"\n",
+ fprintf (stderr, _("%s: can't find process \"%s\"\n"),
whoami, arg);
continue;
}
@@ -291,7 +300,7 @@ int arg_to_signum (char *arg)
void nosig (char *name)
{
- fprintf (stderr, "%s: unknown signal %s; valid signals:\n", whoami, name);
+ fprintf (stderr, _("%s: unknown signal %s; valid signals:\n"), whoami, name);
printsignals (stderr);
}
@@ -331,8 +340,8 @@ int usage (int status)
FILE *fp;
fp = (status == 0 ? stdout : stderr);
- fprintf (fp, "usage: %s [ -s signal | -p ] [ -a ] pid ...\n", whoami);
- fprintf (fp, " %s -l [ signal ]\n", whoami);
+ fprintf (fp, _("usage: %s [ -s signal | -p ] [ -a ] pid ...\n"), whoami);
+ fprintf (fp, _(" %s -l [ signal ]\n"), whoami);
return status;
}
diff --git a/misc-utils/logger.1 b/misc-utils/logger.1
index 0621dba10..82df6be7a 100644
--- a/misc-utils/logger.1
+++ b/misc-utils/logger.1
@@ -43,6 +43,7 @@
.Op Fl f Ar file
.Op Fl p Ar pri
.Op Fl t Ar tag
+.Op Fl u Ar socket
.Op Ar message ...
.Sh DESCRIPTION
.Nm Logger
@@ -73,6 +74,10 @@ The default is ``user.notice.''
.It Fl t Ar tag
Mark every line in the log with the specified
.Ar tag .
+.It Fl u Ar sock
+Write to socket as specified with
+.Ar socket
+instead of builtin syslog routines.
.It Ar message
Write the message to log; if not specified, and the
.Fl f
diff --git a/misc-utils/logger.c b/misc-utils/logger.c
index e59fe12bf..4c881c968 100644
--- a/misc-utils/logger.c
+++ b/misc-utils/logger.c
@@ -29,14 +29,23 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
*/
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
+#include <time.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include "nls.h"
#define SYSLOG_NAMES
#include <syslog.h>
@@ -45,6 +54,65 @@ int decode __P((char *, CODE *));
int pencode __P((char *));
void usage __P((void));
+int
+myopenlog(sock)
+ const char *sock;
+{
+ int fd;
+ static struct sockaddr s_addr; /* AF_UNIX address of local logger */
+
+ s_addr.sa_family = AF_UNIX;
+ (void)strncpy(s_addr.sa_data, sock, sizeof(s_addr.sa_data));
+
+ if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
+ printf ("socket: %s.\n", strerror(errno));
+ exit (1);
+ }
+
+ if (connect(fd, &s_addr, sizeof(s_addr.sa_family)+strlen(s_addr.sa_data)) == -1) {
+ printf ("connect: %s.\n", strerror(errno));
+ exit (1);
+ }
+ return fd;
+}
+
+void
+mysyslog(fd, logflags, pri, tag, msg)
+ int fd;
+ int logflags;
+ int pri;
+ char *tag;
+ char *msg;
+{
+ char buf[1000], pid[30], *cp, *tp;
+ time_t now;
+
+ if (fd > -1) {
+ /* there was a gethostname call here, but its output was not used */
+ /* avoid snprintf - it does not exist on ancient systems */
+ if (logflags & LOG_PID)
+ sprintf (pid, "[%d]", getpid());
+ else
+ pid[0] = 0;
+ if (tag)
+ cp = tag;
+ else {
+ cp = getlogin();
+ if (!cp)
+ cp = "<someone>";
+ }
+ (void)time(&now);
+ tp = ctime(&now)+4;
+
+ /* do snprintf by hand - ugly, but for once... */
+ sprintf(buf, "<%d>%.15s %.200s%s: %.400s",
+ pri, tp, cp, pid, msg);
+
+ if (write(fd, buf, strlen(buf)+1) < 0)
+ return; /* error */
+ }
+}
+
/*
* logger -- read and log utility
*
@@ -58,16 +126,23 @@ main(argc, argv)
{
int ch, logflags, pri;
char *tag, buf[1024];
+ char *usock = NULL;
+ int LogSock = -1;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
tag = NULL;
pri = LOG_NOTICE;
logflags = 0;
- while ((ch = getopt(argc, argv, "f:ip:st:")) != EOF)
+ while ((ch = getopt(argc, argv, "f:ip:st:u:")) != EOF)
switch((char)ch) {
case 'f': /* file to log */
if (freopen(optarg, "r", stdin) == NULL) {
- (void)fprintf(stderr, "logger: %s: %s.\n",
- optarg, strerror(errno));
+ int errsv = errno;
+ (void)fprintf(stderr, _("logger: %s: %s.\n"),
+ optarg, strerror(errsv));
exit(1);
}
break;
@@ -83,6 +158,9 @@ main(argc, argv)
case 't': /* tag */
tag = optarg;
break;
+ case 'u': /* unix socket */
+ usock = optarg;
+ break;
case '?':
default:
usage();
@@ -91,7 +169,11 @@ main(argc, argv)
argv += optind;
/* setup for logging */
- openlog(tag ? tag : getlogin(), logflags, 0);
+ if (!usock)
+ openlog(tag ? tag : getlogin(), logflags, 0);
+ else
+ LogSock = myopenlog(usock);
+
(void) fclose(stdout);
/* log input line if appropriate */
@@ -102,23 +184,41 @@ main(argc, argv)
for (p = buf, endp = buf + sizeof(buf) - 2; *argv;) {
len = strlen(*argv);
if (p + len > endp && p > buf) {
+ if (!usock)
syslog(pri, "%s", buf);
+ else
+ mysyslog(LogSock, logflags, pri, tag, buf);
p = buf;
}
- if (len > sizeof(buf) - 1)
+ if (len > sizeof(buf) - 1) {
+ if (!usock)
syslog(pri, "%s", *argv++);
- else {
+ else
+ mysyslog(LogSock, logflags, pri, tag, *argv++);
+ } else {
if (p != buf)
*p++ = ' ';
bcopy(*argv++, p, len);
*(p += len) = '\0';
}
}
- if (p != buf)
+ if (p != buf) {
+ if (!usock)
syslog(pri, "%s", buf);
+ else
+ mysyslog(LogSock, logflags, pri, tag, buf);
+ }
} else
- while (fgets(buf, sizeof(buf), stdin) != NULL)
+ while (fgets(buf, sizeof(buf), stdin) != NULL) {
+ if (!usock)
syslog(pri, "%s", buf);
+ else
+ mysyslog(LogSock, logflags, pri, tag, buf);
+ }
+ if (!usock)
+ closelog();
+ else
+ close(LogSock);
exit(0);
}
@@ -138,19 +238,19 @@ pencode(s)
fac = decode(save, facilitynames);
if (fac < 0) {
(void)fprintf(stderr,
- "logger: unknown facility name: %s.\n", save);
+ _("logger: unknown facility name: %s.\n"), save);
exit(1);
}
*s++ = '.';
}
else {
- fac = 0;
+ fac = LOG_USER;
s = save;
}
lev = decode(s, prioritynames);
if (lev < 0) {
(void)fprintf(stderr,
- "logger: unknown priority name: %s.\n", save);
+ _("logger: unknown priority name: %s.\n"), save);
exit(1);
}
return ((lev & LOG_PRIMASK) | (fac & LOG_FACMASK));
@@ -177,6 +277,6 @@ void
usage()
{
(void)fprintf(stderr,
- "logger: [-is] [-f file] [-p pri] [-t tag] [ message ... ]\n");
+ _("usage: logger [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n"));
exit(1);
}
diff --git a/misc-utils/look.c b/misc-utils/look.c
index 72256c197..9e6c15bf8 100644
--- a/misc-utils/look.c
+++ b/misc-utils/look.c
@@ -34,6 +34,10 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
/*
* look -- find lines in a sorted list.
*
@@ -56,6 +60,7 @@
#include <getopt.h>
#include <locale.h>
#include "pathnames.h"
+#include "nls.h"
#define EQUAL 0
#define GREATER 1
@@ -84,6 +89,10 @@ main(int argc, char *argv[])
char *back, *file, *front, *p;
setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ setlocale(LC_ALL, "");
file = _PATH_WORDS;
termchar = '\0';
@@ -158,7 +167,7 @@ look(char *front, char *back)
comparbuf = malloc(stringlen+1);
if (comparbuf == NULL)
- err("Out of memory");
+ err(_("Out of memory"));
front = binary_search(front, back);
front = linear_search(front, back);
@@ -328,7 +337,7 @@ compare(char *s2, char *s2end, int nocase) {
static void
usage()
{
- (void)fprintf(stderr, "usage: look [-dfa] [-t char] string [file]\n");
+ (void)fprintf(stderr, _("usage: look [-dfa] [-t char] string [file]\n"));
exit(2);
}
diff --git a/misc-utils/mcookie.c b/misc-utils/mcookie.c
index 33ae7630e..9f13b49d1 100644
--- a/misc-utils/mcookie.c
+++ b/misc-utils/mcookie.c
@@ -1,7 +1,7 @@
/* mcookie.c -- Generates random numbers for xauth
* Created: Fri Feb 3 10:42:48 1995 by faith@cs.unc.edu
- * Revised: Mon Sep 25 23:44:43 1995 by r.faith@ieee.org
- * Public Domain 1995 Rickard E. Faith (faith@cs.unc.edu)
+ * Revised: Fri Mar 19 07:48:01 1999 by faith@acm.org
+ * Public Domain 1995, 1999 Rickard E. Faith (faith@acm.org)
* This program comes with ABSOLUTELY NO WARRANTY.
*
* $Id: mcookie.c,v 1.5 1997/07/06 00:13:06 aebr Exp $
@@ -13,6 +13,11 @@
* NOTE: Unless /dev/random is available, this program does not actually
* gather 128 bits of random information, so the magic cookie generated
* will be considerably easier to guess than one might expect.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * 1999-03-21 aeb: Added some fragments of code from Colin Plumb.
+ *
*/
#ifdef __linux__
@@ -27,29 +32,48 @@
#include <sys/time.h>
#include <unistd.h>
#endif
+#include "nls.h"
-#define MAXBUFFERSIZE 512
+#define BUFFERSIZE 4096
struct rngs {
const char *path;
- int length;
+ int minlength, maxlength;
} rngs[] = {
- { "/dev/random", 16 },
- { "/dev/urandom", 128 },
- { "/proc/stat", MAXBUFFERSIZE },
- { "/proc/loadavg", MAXBUFFERSIZE },
- { "/dev/audio", MAXBUFFERSIZE },
+ { "/dev/random", 16, 16 }, /* 16 bytes = 128 bits suffice */
+ { "/proc/interrupts", 0, 0 },
+ { "/proc/slabinfo", 0, 0 },
+ { "/proc/stat", 0, 0 },
+ { "/dev/urandom", 32, 64 },
};
#define RNGS (sizeof(rngs)/sizeof(struct rngs))
int Verbose = 0;
+/* The basic function to hash a file */
+static off_t
+hash_file(struct MD5Context *ctx, int fd)
+{
+ off_t count = 0;
+ ssize_t r;
+ unsigned char buf[BUFFERSIZE];
+
+ while ((r = read(fd, buf, sizeof(buf))) > 0) {
+ MD5Update(ctx, buf, r);
+ count += r;
+ }
+ /* Separate files with a null byte */
+ buf[0] = 0;
+ MD5Update(ctx, buf, 1);
+ return count;
+}
+
int main( int argc, char **argv )
{
int i;
struct MD5Context ctx;
unsigned char digest[16];
- unsigned char buf[MAXBUFFERSIZE];
+ unsigned char buf[BUFFERSIZE];
int fd;
int c;
pid_t pid;
@@ -62,6 +86,10 @@ int main( int argc, char **argv )
long int t;
#endif
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
while ((c = getopt( argc, argv, "vf:" )) != EOF)
switch (c) {
case 'v': ++Verbose; break;
@@ -85,39 +113,52 @@ int main( int argc, char **argv )
if (file) {
int count = 0;
- if (file[0] == '-' && !file[1]) fd = fileno(stdin);
- else if ((fd = open( file, O_RDONLY )) <0) {
- fprintf( stderr, "Could not open %s\n", file );
- }
+ if (file[0] == '-' && !file[1])
+ fd = fileno(stdin);
+ else
+ fd = open( file, O_RDONLY );
+
+ if (fd < 0) {
+ fprintf( stderr, _("Could not open %s\n"), file );
+ } else {
+ count = hash_file( &ctx, fd );
+ if (Verbose)
+ fprintf( stderr, _("Got %d bytes from %s\n"), count, file );
- while ((r = read( fd, buf, sizeof( buf ) )) > 0) {
- MD5Update( &ctx, buf, r );
- count += r;
+ if (file[0] != '-' || file[1]) close( fd );
}
- if (Verbose)
- fprintf( stderr, "Got %d bytes from %s\n", count, file );
-
- if (file[0] != '-' || file[1]) close( fd );
}
for (i = 0; i < RNGS; i++) {
if ((fd = open( rngs[i].path, O_RDONLY|O_NONBLOCK )) >= 0) {
- r = read( fd, buf, sizeof( buf ) );
+ int count = sizeof(buf);
+
+ if (rngs[i].maxlength && count > rngs[i].maxlength)
+ count = rngs[i].maxlength;
+ r = read( fd, buf, count );
if (r > 0)
MD5Update( &ctx, buf, r );
else
r = 0;
close( fd );
if (Verbose)
- fprintf( stderr, "Got %d bytes from %s\n", r, rngs[i].path );
- if (r >= rngs[i].length) break;
+ fprintf( stderr, _("Got %d bytes from %s\n"), r, rngs[i].path );
+ if (rngs[i].minlength && r >= rngs[i].minlength)
+ break;
} else if (Verbose)
- fprintf( stderr, "Could not open %s\n", rngs[i].path );
+ fprintf( stderr, _("Could not open %s\n"), rngs[i].path );
}
MD5Final( digest, &ctx );
for (i = 0; i < 16; i++) printf( "%02x", digest[i] );
putchar ( '\n' );
+ /*
+ * The following is important for cases like disk full, so shell scripts
+ * can bomb out properly rather than think they succeeded.
+ */
+ if (fflush(stdout) < 0 || fclose(stdout) < 0)
+ return 1;
+
return 0;
}
diff --git a/misc-utils/namei.c b/misc-utils/namei.c
index 36a17dfd6..f110e6385 100644
--- a/misc-utils/namei.c
+++ b/misc-utils/namei.c
@@ -39,6 +39,9 @@ the maximum number of symbolic links this system can have.
The program exits with a 1 status ONLY if it finds it cannot
chdir to /, or if it encounters an unknown file type.
+1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+- added Native Language Support
+
-------------------------------------------------------------*/
#include <stdio.h>
@@ -47,6 +50,7 @@ chdir to /, or if it encounters an unknown file type.
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/param.h>
+#include "nls.h"
#ifndef __GNU_LIBRARY__
extern char *sys_errlist[];
@@ -76,6 +80,10 @@ char *argv[];
register int c;
char curdir[MAXPATHLEN];
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
if(argc < 2)
usage();
@@ -96,7 +104,7 @@ char *argv[];
}
if(getcwd(curdir, sizeof(curdir)) == NULL){
- (void)fprintf(stderr, "namei: unable to get current directory - %s\n", curdir);
+ (void)fprintf(stderr, _("namei: unable to get current directory - %s\n"), curdir);
exit(1);
}
@@ -107,7 +115,7 @@ char *argv[];
namei(argv[optind], 0);
if(chdir(curdir) == -1){
- (void)fprintf(stderr, "namei: unable to chdir to %s - %s (%d)\n", curdir, ERR);
+ (void)fprintf(stderr, _("namei: unable to chdir to %s - %s (%d)\n"), curdir, ERR);
exit(1);
}
}
@@ -117,7 +125,7 @@ char *argv[];
void
usage()
{
- (void)fprintf(stderr,"usage: namei [-mx] pathname [pathname ...]\n");
+ (void)fprintf(stderr,_("usage: namei [-mx] pathname [pathname ...]\n"));
exit(1);
}
@@ -146,14 +154,14 @@ register int lev;
file++;
if(chdir("/") == -1){
- (void)fprintf(stderr,"namei: could not chdir to root!\n");
+ (void)fprintf(stderr,_("namei: could not chdir to root!\n"));
exit(1);
}
for(i = 0; i < lev; i++)
(void)printf(" ");
if(stat("/", &stb) == -1){
- (void)fprintf(stderr, "namei: could not stat root!\n");
+ (void)fprintf(stderr, _("namei: could not stat root!\n"));
exit(1);
}
lastdev = stb.st_dev;
@@ -208,7 +216,7 @@ register int lev;
*/
if(chdir(buf) == -1){
- (void)printf(" ? could not chdir into %s - %s (%d)\n", buf, ERR );
+ (void)printf(_(" ? could not chdir into %s - %s (%d)\n"), buf, ERR );
return;
}
if(xflag && lastdev != stb.st_dev && lastdev != NODEV){
@@ -237,7 +245,7 @@ register int lev;
bzero(sym, BUFSIZ);
if(readlink(buf, sym, BUFSIZ) == -1){
- (void)printf(" ? problems reading symlink %s - %s (%d)\n", buf, ERR);
+ (void)printf(_(" ? problems reading symlink %s - %s (%d)\n"), buf, ERR);
return;
}
@@ -247,7 +255,7 @@ register int lev;
(void)printf(" l %s -> %s", buf, sym);
if(symcount > 0 && symcount++ > MAXSYMLINKS){
- (void)printf(" *** EXCEEDED UNIX LIMIT OF SYMLINKS ***");
+ (void)printf(_(" *** EXCEEDED UNIX LIMIT OF SYMLINKS ***"));
symcount = -1;
}
(void)printf("\n");
@@ -283,7 +291,7 @@ register int lev;
break;
default:
- (void)fprintf(stderr,"namei: unknown file type 0%06o on file %s\n", stb.st_mode, buf );
+ (void)fprintf(stderr,_("namei: unknown file type 0%06o on file %s\n"), stb.st_mode, buf );
exit(1);
}
diff --git a/misc-utils/script.c b/misc-utils/script.c
index 23c48ea6b..283bc8fcb 100644
--- a/misc-utils/script.c
+++ b/misc-utils/script.c
@@ -31,6 +31,10 @@
* SUCH DAMAGE.
*/
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
/*
* script
*/
@@ -43,13 +47,15 @@
#include <sys/signal.h>
#include <stdio.h>
#include <paths.h>
+#include "nls.h"
#ifdef __linux__
#include <unistd.h>
#include <string.h>
#endif
-#ifdef HAVE_OPENPTY
+#include "../defines.h"
+#ifdef HAVE_openpty
#include <pty.h>
#endif
@@ -74,7 +80,7 @@ struct termios tt;
struct winsize win;
int lb;
int l;
-#ifndef HAVE_OPENPTY
+#ifndef HAVE_openpty
char line[] = "/dev/ptyXX";
#endif
int aflg;
@@ -89,6 +95,10 @@ main(argc, argv)
void finish();
char *getenv();
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
while ((ch = getopt(argc, argv, "a")) != EOF)
switch((char)ch) {
case 'a':
@@ -96,7 +106,7 @@ main(argc, argv)
break;
case '?':
default:
- fprintf(stderr, "usage: script [-a] [file]\n");
+ fprintf(stderr, _("usage: script [-a] [file]\n"));
exit(1);
}
argc -= optind;
@@ -116,7 +126,7 @@ main(argc, argv)
shell = _PATH_BSHELL;
getmaster();
- printf("Script started, file is %s\n", fname);
+ printf(_("Script started, file is %s\n"), fname);
fixtty();
(void) signal(SIGCHLD, finish);
@@ -148,7 +158,7 @@ doinput()
char ibuf[BUFSIZ];
(void) fclose(fscript);
-#ifdef HAVE_OPENPTY
+#ifdef HAVE_openpty
(void) close(slave);
#endif
while ((cc = read(0, ibuf, BUFSIZ)) > 0)
@@ -181,11 +191,11 @@ dooutput()
char obuf[BUFSIZ], *ctime();
(void) close(0);
-#ifdef HAVE_OPENPTY
+#ifdef HAVE_openpty
(void) close(slave);
#endif
tvec = time((time_t *)NULL);
- fprintf(fscript, "Script started on %s", ctime(&tvec));
+ fprintf(fscript, _("Script started on %s"), ctime(&tvec));
for (;;) {
cc = read(master, obuf, sizeof (obuf));
if (cc <= 0)
@@ -251,12 +261,12 @@ done()
if (subchild) {
tvec = time((time_t *)NULL);
- fprintf(fscript,"\nScript done on %s", ctime(&tvec));
+ fprintf(fscript,_("\nScript done on %s"), ctime(&tvec));
(void) fclose(fscript);
(void) close(master);
} else {
(void) tcsetattr(0, TCSAFLUSH, &tt);
- printf("Script done, file is %s\n", fname);
+ printf(_("Script done, file is %s\n"), fname);
}
exit(0);
}
@@ -264,11 +274,11 @@ done()
void
getmaster()
{
-#ifdef HAVE_OPENPTY
+#ifdef HAVE_openpty
(void) tcgetattr(0, &tt);
(void) ioctl(0, TIOCGWINSZ, (char *)&win);
if (openpty(&master, &slave, NULL, &tt, &win) < 0) {
- fprintf(stderr, "openpty failed\n");
+ fprintf(stderr, _("openpty failed\n"));
fail();
}
#else
@@ -302,15 +312,15 @@ getmaster()
}
}
}
- fprintf(stderr, "Out of pty's\n");
+ fprintf(stderr, _("Out of pty's\n"));
fail();
-#endif /* not HAVE_OPENPTY */
+#endif /* not HAVE_openpty */
}
void
getslave()
{
-#ifndef HAVE_OPENPTY
+#ifndef HAVE_openpty
line[strlen("/dev/")] = 't';
slave = open(line, O_RDWR);
if (slave < 0) {
diff --git a/misc-utils/setterm.c b/misc-utils/setterm.c
index 3b3e6c24f..b9e4c0dad 100644
--- a/misc-utils/setterm.c
+++ b/misc-utils/setterm.c
@@ -16,6 +16,10 @@
*
* Converted to terminfo by Kars de Jong (jongk@cs.utwente.nl)
*
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
+ *
* Syntax:
*
* setterm
@@ -106,6 +110,7 @@
#endif
#include <sys/ioctl.h>
#include <sys/time.h>
+#include "nls.h"
#ifndef TCGETS
/* TCGETS is either defined in termios.h, or here: */
@@ -737,58 +742,58 @@ char *prog_name; /* Name of this program. */
{
/* Print error message about arguments, and the command's syntax. */
- fprintf(stderr, "%s: Argument error, usage\n", prog_name);
+ fprintf(stderr, _("%s: Argument error, usage\n"), prog_name);
fprintf(stderr, "\n");
fprintf(stderr, "%s\n", prog_name);
- fprintf(stderr, " [ -term terminal_name ]\n");
- fprintf(stderr, " [ -reset ]\n");
- fprintf(stderr, " [ -initialize ]\n");
- fprintf(stderr, " [ -cursor [on|off] ]\n");
+ fprintf(stderr, _(" [ -term terminal_name ]\n"));
+ fprintf(stderr, _(" [ -reset ]\n"));
+ fprintf(stderr, _(" [ -initialize ]\n"));
+ fprintf(stderr, _(" [ -cursor [on|off] ]\n"));
#if 0
- fprintf(stderr, " [ -snow [on|off] ]\n");
- fprintf(stderr, " [ -softscroll [on|off] ]\n");
- fprintf(stderr, " [ -keyboard pc|olivetti|dutch|extended ]\n");
+ fprintf(stderr, _(" [ -snow [on|off] ]\n"));
+ fprintf(stderr, _(" [ -softscroll [on|off] ]\n"));
+ fprintf(stderr, _(" [ -keyboard pc|olivetti|dutch|extended ]\n"));
#endif
- fprintf(stderr, " [ -repeat [on|off] ]\n");
- fprintf(stderr, " [ -appcursorkeys [on|off] ]\n");
- fprintf(stderr, " [ -linewrap [on|off] ]\n");
- fprintf(stderr, " [ -default ]\n");
- fprintf(stderr, " [ -foreground black|blue|green|cyan");
- fprintf(stderr, "|red|magenta|yellow|white|default ]\n");
- fprintf(stderr, " [ -background black|blue|green|cyan");
- fprintf(stderr, "|red|magenta|yellow|white|default ]\n");
- fprintf(stderr, " [ -ulcolor black|grey|blue|green|cyan");
- fprintf(stderr, "|red|magenta|yellow|white ]\n");
- fprintf(stderr, " [ -ulcolor bright blue|green|cyan");
- fprintf(stderr, "|red|magenta|yellow|white ]\n");
- fprintf(stderr, " [ -hbcolor black|grey|blue|green|cyan");
- fprintf(stderr, "|red|magenta|yellow|white ]\n");
- fprintf(stderr, " [ -hbcolor bright blue|green|cyan");
- fprintf(stderr, "|red|magenta|yellow|white ]\n");
+ fprintf(stderr, _(" [ -repeat [on|off] ]\n"));
+ fprintf(stderr, _(" [ -appcursorkeys [on|off] ]\n"));
+ fprintf(stderr, _(" [ -linewrap [on|off] ]\n"));
+ fprintf(stderr, _(" [ -default ]\n"));
+ fprintf(stderr, _(" [ -foreground black|blue|green|cyan"));
+ fprintf(stderr, _("|red|magenta|yellow|white|default ]\n"));
+ fprintf(stderr, _(" [ -background black|blue|green|cyan"));
+ fprintf(stderr, _("|red|magenta|yellow|white|default ]\n"));
+ fprintf(stderr, _(" [ -ulcolor black|grey|blue|green|cyan"));
+ fprintf(stderr, _("|red|magenta|yellow|white ]\n"));
+ fprintf(stderr, _(" [ -ulcolor bright blue|green|cyan"));
+ fprintf(stderr, _("|red|magenta|yellow|white ]\n"));
+ fprintf(stderr, _(" [ -hbcolor black|grey|blue|green|cyan"));
+ fprintf(stderr, _("|red|magenta|yellow|white ]\n"));
+ fprintf(stderr, _(" [ -hbcolor bright blue|green|cyan"));
+ fprintf(stderr, _("|red|magenta|yellow|white ]\n"));
#if 0
- fprintf(stderr, " [ -standout [ attr ] ]\n");
+ fprintf(stderr, _(" [ -standout [ attr ] ]\n"));
#endif
- fprintf(stderr, " [ -inversescreen [on|off] ]\n");
- fprintf(stderr, " [ -bold [on|off] ]\n");
- fprintf(stderr, " [ -half-bright [on|off] ]\n");
- fprintf(stderr, " [ -blink [on|off] ]\n");
- fprintf(stderr, " [ -reverse [on|off] ]\n");
- fprintf(stderr, " [ -underline [on|off] ]\n");
- fprintf(stderr, " [ -store ]\n");
- fprintf(stderr, " [ -clear [all|rest] ]\n");
- fprintf(stderr, " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n");
- fprintf(stderr, " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n");
- fprintf(stderr, " [ -regtabs [1-160] ]\n");
- fprintf(stderr, " [ -blank [0-60] ]\n");
- fprintf(stderr, " [ -dump [1-NR_CONSOLES] ]\n");
- fprintf(stderr, " [ -append [1-NR_CONSOLES] ]\n");
- fprintf(stderr, " [ -file dumpfilename ]\n");
- fprintf(stderr, " [ -msg [on|off] ]\n");
- fprintf(stderr, " [ -msglevel [0-8] ]\n");
- fprintf(stderr, " [ -powersave [on|vsync|hsync|powerdown|off] ]\n");
- fprintf(stderr, " [ -powerdown [0-60] ]\n");
- fprintf(stderr, " [ -blength [0-2000] ]\n");
- fprintf(stderr, " [ -bfreq freqnumber ]\n");
+ fprintf(stderr, _(" [ -inversescreen [on|off] ]\n"));
+ fprintf(stderr, _(" [ -bold [on|off] ]\n"));
+ fprintf(stderr, _(" [ -half-bright [on|off] ]\n"));
+ fprintf(stderr, _(" [ -blink [on|off] ]\n"));
+ fprintf(stderr, _(" [ -reverse [on|off] ]\n"));
+ fprintf(stderr, _(" [ -underline [on|off] ]\n"));
+ fprintf(stderr, _(" [ -store ]\n"));
+ fprintf(stderr, _(" [ -clear [all|rest] ]\n"));
+ fprintf(stderr, _(" [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"));
+ fprintf(stderr, _(" [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"));
+ fprintf(stderr, _(" [ -regtabs [1-160] ]\n"));
+ fprintf(stderr, _(" [ -blank [0-60] ]\n"));
+ fprintf(stderr, _(" [ -dump [1-NR_CONSOLES] ]\n"));
+ fprintf(stderr, _(" [ -append [1-NR_CONSOLES] ]\n"));
+ fprintf(stderr, _(" [ -file dumpfilename ]\n"));
+ fprintf(stderr, _(" [ -msg [on|off] ]\n"));
+ fprintf(stderr, _(" [ -msglevel [0-8] ]\n"));
+ fprintf(stderr, _(" [ -powersave [on|vsync|hsync|powerdown|off] ]\n"));
+ fprintf(stderr, _(" [ -powerdown [0-60] ]\n"));
+ fprintf(stderr, _(" [ -blength [0-2000] ]\n"));
+ fprintf(stderr, _(" [ -bfreq freqnumber ]\n"));
}
char *ti_entry(name)
@@ -833,16 +838,16 @@ int vcterm; /* Set if terminal is a virtual console. */
if (opt_keyboard && vcterm) {
switch (opt_ke_type) {
case PC:
- printf("%s%s%s", DCS, "keyboard.pc", ST);
+ printf("%s%s%s", DCS, _("keyboard.pc"), ST);
break;
case OLIVETTI:
- printf("%s%s%s", DCS, "keyboard.olivetti", ST);
+ printf("%s%s%s", DCS, _("keyboard.olivetti"), ST);
break;
case DUTCH:
- printf("%s%s%s", DCS, "keyboard.dutch", ST);
+ printf("%s%s%s", DCS, _("keyboard.dutch"), ST);
break;
case EXTENDED:
- printf("%s%s%s", DCS, "keyboard.extended", ST);
+ printf("%s%s%s", DCS, _("keyboard.extended"), ST);
break;
}
}
@@ -876,17 +881,17 @@ int vcterm; /* Set if terminal is a virtual console. */
/* -snow [on|off]. Vc only. */
if (opt_snow && vcterm) {
if (opt_sn_on)
- printf("%s%s%s", DCS, "snow.on", ST);
+ printf("%s%s%s", DCS, _("snow.on"), ST);
else
- printf("%s%s%s", DCS, "snow.off", ST);
+ printf("%s%s%s", DCS, _("snow.off"), ST);
}
/* -softscroll [on|off]. Vc only. */
if (opt_softscroll && vcterm) {
if (opt_so_on)
- printf("%s%s%s", DCS, "softscroll.on", ST);
+ printf("%s%s%s", DCS, _("softscroll.on"), ST);
else
- printf("%s%s%s", DCS, "softscroll.off", ST);
+ printf("%s%s%s", DCS, _("softscroll.off"), ST);
}
#endif
@@ -1061,7 +1066,7 @@ int vcterm; /* Set if terminal is a virtual console. */
ioctlarg[0] = 10; /* powersave */
ioctlarg[1] = opt_ps_mode;
if (ioctl(0,TIOCLINUX,ioctlarg))
- fprintf(stderr,"cannot (un)set powersave mode\n");
+ fprintf(stderr,_("cannot (un)set powersave mode\n"));
}
/* -powerdown [0-60]. */
@@ -1082,7 +1087,7 @@ int vcterm; /* Set if terminal is a virtual console. */
F = fopen(opt_sn_name, opt_snap ? "w" : "a");
if (!F) {
perror(opt_sn_name);
- fprintf(stderr,"setterm: can not open dump file %s for output\n",
+ fprintf(stderr,("setterm: can not open dump file %s for output\n"),
opt_sn_name);
exit(-1);
}
@@ -1100,7 +1105,7 @@ int vcterm; /* Set if terminal is a virtual console. */
result = klogctl(6, NULL, 0);
if (result != 0)
- printf("klogctl error: %s\n", strerror(result));
+ printf(_("klogctl error: %s\n"), strerror(result));
}
/* -msglevel [0-8] */
@@ -1108,7 +1113,7 @@ int vcterm; /* Set if terminal is a virtual console. */
/* 8 -- Set level of messages printed to console */
result = klogctl(8, NULL, opt_msglevel_num);
if (result != 0)
- printf("klogctl error: %s\n", strerror(result));
+ printf(_("klogctl error: %s\n"), strerror(result));
}
/* -blength [0-2000] */
@@ -1145,11 +1150,11 @@ screendump(int vcnum, FILE *F){
inbuf = malloc(rows*cols*2);
outbuf = malloc(rows*(cols+1));
if(!inbuf || !outbuf) {
- fprintf(stderr, "Out of memory\n");
+ fputs(_("Out of memory"), stderr);
exit(1);
}
if (read(fd, inbuf, rows*cols*2) != rows*cols*2) {
- fprintf(stderr, "Error reading %s\n", infile);
+ fprintf(stderr, _("Error reading %s\n"), infile);
exit(1);
}
p = inbuf;
@@ -1164,7 +1169,7 @@ screendump(int vcnum, FILE *F){
*q++ = '\n';
}
if (fwrite(outbuf, 1, q-outbuf, F) != q-outbuf) {
- fprintf(stderr, "Error writing screendump\n");
+ fprintf(stderr, _("Error writing screendump\n"));
exit(1);
}
return;
@@ -1178,7 +1183,7 @@ try_ioctl:
screenbuf[0] = 0;
screenbuf[1] = (unsigned char) vcnum;
if (ioctl(0,TIOCLINUX,screenbuf) < 0) {
- fprintf(stderr,"couldn't read %s, and cannot ioctl dump\n",
+ fprintf(stderr,_("couldn't read %s, and cannot ioctl dump\n"),
infile);
exit(1);
}
@@ -1203,6 +1208,10 @@ int main(int argc, char **argv)
char *term; /* Terminal type. */
int vcterm; /* Set if terminal is a virtual console. */
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
if (argc < 2) bad_arg = TRUE;
/* Parse arguments. */
@@ -1239,7 +1248,7 @@ int main(int argc, char **argv)
} else {
term = getenv("TERM");
if (term == NULL) {
- fprintf(stderr, "%s: $TERM is not defined.\n", argv[0]);
+ fprintf(stderr, _("%s: $TERM is not defined.\n"), argv[0]);
exit(1);
}
}
diff --git a/misc-utils/tsort.c b/misc-utils/tsort.c
index 61e9e8442..627897667 100644
--- a/misc-utils/tsort.c
+++ b/misc-utils/tsort.c
@@ -34,11 +34,16 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
+#include "nls.h"
/*
* Topological sort. Input is a list of pairs of strings seperated by
@@ -102,12 +107,16 @@ main(argc, argv)
int bsize, nused;
BUF bufs[2];
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
if (argc < 2)
fp = stdin;
/* == becomes > in next line per Volker Meyer_zu_Bexten
<vmzb@ims.fhg.de> -- faith@cs.unc.edu, Sat Feb 4 21:25:09 1995 */
else if (argc > 2) {
- (void)fprintf(stderr, "usage: tsort [ inputfile ]\n");
+ (void)fprintf(stderr, _("usage: tsort [ inputfile ]\n"));
exit(1);
} else if (!(fp = fopen(argv[1], "r"))) {
(void)fprintf(stderr, "tsort: %s.\n", strerror(errno));
@@ -144,7 +153,7 @@ main(argc, argv)
}
(void)fclose(fp);
if (n) {
- (void)fprintf(stderr, "tsort: odd data count.\n");
+ (void)fprintf(stderr, _("tsort: odd data count.\n"));
exit(1);
}
@@ -309,7 +318,7 @@ tsort()
register int i;
(void)fprintf(stderr,
- "tsort: cycle in data.\n");
+ _("tsort: cycle in data.\n"));
for (i = 0; i < cnt; i++)
(void)fprintf(stderr,
"tsort: %s.\n", longest_cycle[i]->n_name);
@@ -322,7 +331,7 @@ tsort()
if (!n) {
(void)fprintf(stderr,
- "tsort: internal error -- could not find cycle.\n");
+ _("tsort: internal error -- could not find cycle.\n"));
exit(1);
}
}
diff --git a/misc-utils/whereis.c b/misc-utils/whereis.c
index 494192417..cb07bc685 100644
--- a/misc-utils/whereis.c
+++ b/misc-utils/whereis.c
@@ -33,12 +33,17 @@
/* *:aeb */
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <sys/param.h>
#include <sys/dir.h>
#include <sys/stat.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
+#include "nls.h"
void zerof(void);
void getlist(int *, char ***, char ***, int *);
@@ -142,11 +147,15 @@ main(argc, argv)
int argc;
char *argv[];
{
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
argc--, argv++;
if (argc == 0) {
usage:
- fprintf(stderr, "whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n");
+ fprintf(stderr, _("whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n"));
exit(1);
}
do
@@ -328,6 +337,9 @@ findin(char *dir, char *cp) {
if (dirp == NULL)
return;
while ((dp = readdir(dirp)) != NULL) {
+ if (!strcmp(dp->d_name, ".") ||
+ !strcmp(dp->d_name, ".."))
+ continue;
if (strlen(dp->d_name) + l > sizeof(dirbuf))
continue;
sprintf(d, "%s", dp->d_name);
diff --git a/misc-utils/write.c b/misc-utils/write.c
index 07a113ea7..cac26239e 100644
--- a/misc-utils/write.c
+++ b/misc-utils/write.c
@@ -40,6 +40,9 @@
* - Added fix from David.Chapell@mail.trincoll.edu enabeling daemons
* to use write.
* - ANSIed it since I was working on it anyway.
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <unistd.h>
@@ -58,7 +61,8 @@
#include <paths.h>
#include "pathnames.h"
#endif
-
+#include "nls.h"
+
void search_utmp(char *, char *, char *, uid_t);
void do_write(char *, char *, uid_t);
void wr_fputs(char *);
@@ -70,14 +74,15 @@ extern int errno;
int
main(int argc, char **argv)
{
- register char *cp;
time_t atime;
uid_t myuid;
int msgsok, myttyfd;
char tty[MAXPATHLEN], *mytty, *ttyname();
void done();
- setlocale(LC_CTYPE,"");
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
/* check that sender has write enabled */
if (isatty(fileno(stdin)))
@@ -91,16 +96,18 @@ main(int argc, char **argv)
}
if (myttyfd != -1) {
if (!(mytty = ttyname(myttyfd))) {
- (void)fprintf(stderr, "write: can't find your tty's name\n");
+ (void)fprintf(stderr, _("write: can't find your tty's name\n"));
exit(1);
}
- if ((cp = rindex(mytty, '/')) != NULL)
- mytty = cp + 1;
+ /* We may have /dev/ttyN but also /dev/pts/xx.
+ Below, term_chk() will put "/dev/" in front, so remove that part. */
+ if (!strncmp(mytty, "/dev/", 5))
+ mytty += 5;
if (term_chk(mytty, &msgsok, &atime, 1))
exit(1);
if (!msgsok) {
(void)fprintf(stderr,
- "write: you have write permission turned off.\n");
+ _("write: you have write permission turned off.\n"));
exit(1);
}
@@ -121,7 +128,7 @@ main(int argc, char **argv)
argv[2] += 5;
if (utmp_chk(argv[1], argv[2])) {
(void)fprintf(stderr,
- "write: %s is not logged in on %s.\n",
+ _("write: %s is not logged in on %s.\n"),
argv[1], argv[2]);
exit(1);
}
@@ -129,14 +136,14 @@ main(int argc, char **argv)
exit(1);
if (myuid && !msgsok) {
(void)fprintf(stderr,
- "write: %s has messages disabled on %s\n",
+ _("write: %s has messages disabled on %s\n"),
argv[1], argv[2]);
exit(1);
}
do_write(argv[2], mytty, myuid);
break;
default:
- (void)fprintf(stderr, "usage: write user [tty]\n");
+ (void)fprintf(stderr, _("usage: write user [tty]\n"));
exit(1);
}
done();
@@ -235,7 +242,7 @@ void search_utmp(char *user, char *tty, char *mytty, uid_t myuid)
endutent();
if (nloggedttys == 0) {
- (void)fprintf(stderr, "write: %s is not logged in\n", user);
+ (void)fprintf(stderr, _("write: %s is not logged in\n"), user);
exit(1);
}
if (nttys == 0) {
@@ -244,11 +251,11 @@ void search_utmp(char *user, char *tty, char *mytty, uid_t myuid)
return;
}
(void)fprintf(stderr,
- "write: %s has messages disabled\n", user);
+ _("write: %s has messages disabled\n"), user);
exit(1);
} else if (nttys > 1) {
(void)fprintf(stderr,
- "write: %s is logged in more than once; writing to %s\n",
+ _("write: %s is logged in more than once; writing to %s\n"),
user, tty);
}
}
@@ -314,8 +321,10 @@ void do_write(char *tty, char *mytty, uid_t myuid)
now = time((time_t *)NULL);
nows = ctime(&now);
nows[16] = '\0';
- (void)printf("\r\n\007\007\007Message from %s@%s on %s at %s ...\r\n",
+ printf("\r\n\007\007\007");
+ (void)printf(_("Message from %s@%s on %s at %s ..."),
login, host, mytty, nows + 11);
+ printf("\r\n");
while (fgets(line, sizeof(line), stdin) != NULL)
wr_fputs(line);
diff --git a/mkinstalldirs b/mkinstalldirs
new file mode 100755
index 000000000..a01481be4
--- /dev/null
+++ b/mkinstalldirs
@@ -0,0 +1,40 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+# $Id: mkinstalldirs,v 1.10 1996/05/03 07:37:52 friedman Exp $
+
+errstatus=0
+
+for file
+do
+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ shift
+
+ pathcomp=
+ for d
+ do
+ pathcomp="$pathcomp$d"
+ case "$pathcomp" in
+ -* ) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp" 1>&2
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ fi
+ fi
+
+ pathcomp="$pathcomp/"
+ done
+done
+
+exit $errstatus
+
+# mkinstalldirs ends here
diff --git a/mount/Makefile b/mount/Makefile
index c61b4ae8c..0d370ff8c 100644
--- a/mount/Makefile
+++ b/mount/Makefile
@@ -1,6 +1,5 @@
-ifeq (../MCONFIG,$(wildcard ../MCONFIG))
+include ../make_include
include ../MCONFIG
-endif
CC = gcc
CFLAGS = -I$(LIB) $(OPT)
diff --git a/mount/Makefile.standalone b/mount/Makefile.standalone
deleted file mode 100644
index 1be375689..000000000
--- a/mount/Makefile.standalone
+++ /dev/null
@@ -1,141 +0,0 @@
-# ifeq (../MCONFIG,$(wildcard ../MCONFIG))
-# include ../MCONFIG
-# endif
-
-# For now: a standalone version
-
-CC = gcc
-CFLAGS = -O2 -I../lib
-
-#WARNFLAGS = -Wall -Wstrict-prototypes
-# We really want
-WARNFLAGS = -Wall -Wstrict-prototypes -Wmissing-prototypes
-# but at the moment that yields
-#<linux/socket.h>:72: warning: no previous prototype for `cmsg_nxthdr'
-
-# you need rpcgen and libc-4.2 or rpclib to compile in the NFS support
-# pregenerated files are included.
-# Make sure nfsmount_clnt.c is newer than nfsmount.x to avoid gcc complaints.
-DEFINES = -DHAVE_NFS
-
-RPCSVCDIR = rpcsvc
-RPC_CFLAGS = -Wno-unused
-RPCGEN = rpcgen
-
-INSTALL = install
-INSTALLSUID = $(INSTALL) -m 4755 -o root
-INSTALLPROG = $(INSTALL) -m 755
-INSTALLDATA = $(INSTALL) -m 644
-INSTALLDIR = mkdir -p
-INSTALLMAN = $(INSTALLDATA)
-
-MANDIR = /usr/man
-## for suid progs (mount, umount)
-BINDIR = /bin
-## for nosuid progs (swapon)
-SBINDIR = /sbin
-
-# End of configuration section.
-
-COMPILE = $(CC) -c $(WARNFLAGS) $(CFLAGS) $(DEFINES)
-LINK = $(CC) $(LDFLAGS)
-
-SUID_PROGS = mount umount
-NOSUID_PROGS = swapon losetup
-PROGS = $(SUID_PROGS) $(NOSUID_PROGS)
-MAN5 = fstab.5 nfs.5
-MAN8 = mount.8 swapoff.8 swapon.8 umount.8 losetup.8
-
-# comment these out if you are not compiling in NFS support
-NFS_OBJS = nfsmount.o nfsmount_xdr.o nfsmount_clnt.o
-# uncomment this if you don't have libc-4.2 but do have the rpclib
-GEN_FILES = nfsmount.x nfsmount.h nfsmount_xdr.c nfsmount_clnt.c
-
-# comment these out if you are not compiling in loop support
-LO_OBJS=lomount.o
-
-all: $(PROGS)
-
-install: $(PROGS)
- $(INSTALLDIR) $(BINDIR) $(SBINDIR)
- $(INSTALLSUID) -s $(SUID_PROGS) $(BINDIR)
- $(INSTALLPROG) -s $(NOSUID_PROGS) $(SBINDIR)
- (cd $(SBINDIR); ln -sf swapon swapoff)
- $(INSTALLDIR) $(MANDIR)/man5 $(MANDIR)/man8
- $(INSTALLMAN) $(MAN5) $(MANDIR)/man5
- $(INSTALLMAN) $(MAN8) $(MANDIR)/man8
-
-%.o: %.c
- $(COMPILE) $<
-
-mount: mount.o fstab.o sundries.o realpath.o mntent.o version.o \
- mount_guess_fstype.o mount_by_label.o ../lib/setproctitle.o $(NFS_OBJS) $(LO_OBJS)
- $(LINK) $^ -o $@
-
-umount: umount.o fstab.o sundries.o realpath.o mntent.o version.o $(LO_OBJS)
- $(LINK) $^ -o $@
-
-swapon: swapon.o version.o
- $(LINK) $^ -o $@
-
-losetup: losetup.o
- $(LINK) $^ -o $@
-
-mount.o umount.o nfsmount.o losetup.o fstab.o sundries.o: sundries.h
-
-mount.o umount.o fstab.o sundries.o: fstab.h
-
-mount.o fstab.o mntent.o: mntent.h
-
-mount.o mount_guess_fstype.o: mount_guess_fstype.h
-
-mount.o umount.o losetup.o lomount.o: lomount.h loop.h
-
-swapon.o: swap_constants.h swapargs.h
-
-sundries.o nfsmount.o nfsmount_xdr.o nfsmount_clnt.o: nfsmount.h
-
-umount.o: mount_constants.h
-
-mount.o mount_by_label.o mount_guess_fstype.o: linux_fs.h
-
-nfsmount_clnt.o: nfsmount_clnt.c
- $(COMPILE) $(RPC_CFLAGS) nfsmount_clnt.c
-
-nfsmount_xdr.o: nfsmount_xdr.c
- $(COMPILE) $(RPC_CFLAGS) nfsmount_xdr.c
-
-nfsmount.h nfsmount_xdr.c nfsmount_clnt.c: nfsmount.x
- rm -f nfsmount.h nfsmount_xdr.c nfsmount_clnt.c
- $(RPCGEN) -h -o nfsmount.h nfsmount.x
- $(RPCGEN) -c -o nfsmount_xdr.c nfsmount.x
- $(RPCGEN) -l -o nfsmount_clnt.c nfsmount.x
-
-nfsmount.x:
- cp $(RPCSVCDIR)/nfsmount.x .
-
-nfsmount.o: nfs_mountversion.h nfs_mount3.h
-
-NFSMOUNTH=/usr/include/linux/nfs_mount.h
-
-nfs_mountversion.h:
- rm -f nfs_mountversion.h
- if [ -f $(NFSMOUNTH) ]; then \
- grep NFS_MOUNT_VERSION $(NFSMOUNTH) \
- | sed -e 's/NFS/KERNEL_NFS/'; \
- else \
- echo '#define KERNEL_NFS_MOUNT_VERSION 0'; \
- fi > nfs_mountversion.h
-
-swapargs.h:
- sh swap.configure
-
-loop.h:
- sh mk_loop_h
-
-clean:
- rm -f a.out core *~ *.o swapargs.h $(PROGS) swapoff
- rm -f loop.h nfs_mountversion.h
-
-clobber distclean realclean: clean
- rm -f $(GEN_FILES)
diff --git a/mount/fstab.5 b/mount/fstab.5
index d343538db..5b85fb996 100644
--- a/mount/fstab.5
+++ b/mount/fstab.5
@@ -37,8 +37,9 @@
.\" Sat Nov 27 20:23:32 1993: Updated authorship information
.\" Wed Jul 26 00:00:00 1995: Updated some nfs stuff, joey@infodrom.north.de
.\" Tue Apr 2 00:38:28 1996: added info about "noauto", "user", etc.
+.\" Tue Jun 15 20:02:18 1999: added LABEL and UUID
.\"
-.TH FSTAB 5 "27 November 1993" "Linux 0.99" "Linux Programmer's Manual"
+.TH FSTAB 5 "15 June 1999" "Linux 2.2" "Linux Programmer's Manual"
.SH NAME
fstab \- static information about the filesystems
.SH SYNOPSIS
@@ -66,11 +67,28 @@ The first field,
.RI ( fs_spec ),
describes the block special device or
remote filesystem to be mounted.
+.LP
+For ordinary mounts it will hold (a link to) a block special
+device node (as created by
+.BR mknod (8))
+for the device to be mounted, like `/dev/cdrom' or `/dev/sdb7'.
+For NFS mounts one will have <host>:<dir>, e.g., `knuth.aeb.nl:/'.
+For procfs, use `proc'.
+.LP
+Instead of giving the device explicitly, one may indicate
+the (ext2) filesystem that is to be mounted by its UUID or
+volume label (cf.
+.BR e2label (8)),
+writing LABEL=<label> or UUID=<uuid>,
+e.g., `LABEL=Boot' or `UUID=3e6be9de\%-8139\%-11d1\%-9106\%-a43f08d823a6'.
+This will make the system more robust: adding or removing a SCSI disk
+changes the disk device name but not the filesystem volume label.
The second field,
.RI ( fs_file ),
describes the mount point for the filesystem. For swap partitions, this
-field should be specified as ``none''.
+field should be specified as `none'. If the name of the mount point
+contains spaces these can be escaped as `\\040'.
The third field,
.RI ( fs_vfstype ),
diff --git a/mount/fstab.c b/mount/fstab.c
index a67316ee9..793caddde 100644
--- a/mount/fstab.c
+++ b/mount/fstab.c
@@ -1,3 +1,9 @@
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
+ */
+
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
@@ -6,7 +12,7 @@
#include "mntent.h"
#include "fstab.h"
#include "sundries.h" /* for xmalloc() etc */
-
+#include "nls.h"
#define streq(s, t) (strcmp ((s), (t)) == 0)
@@ -106,7 +112,8 @@ read_mntentchn(mntFILE *mfp, const char *fnam, struct mntentchn *mc0) {
}
mc0->prev = mc;
if (ferror (mfp->mntent_fp)) {
- error("warning: error reading %s: %s", fnam, strerror (errno));
+ int errsv = errno;
+ error(_("warning: error reading %s: %s"), fnam, strerror (errsv));
mc0->nxt = mc0->prev = NULL;
}
my_endmntent(mfp);
@@ -133,11 +140,11 @@ read_mounttable() {
fnam = PROC_MOUNTS;
mfp = my_setmntent (fnam, "r");
if (mfp == NULL || mfp->mntent_fp == NULL) {
- error("warning: can't open %s: %s", MOUNTED, strerror (errsv));
+ error(_("warning: can't open %s: %s"), MOUNTED, strerror (errsv));
return;
}
if (verbose)
- printf ("mount: could not open %s - using %s instead\n",
+ printf (_("mount: could not open %s - using %s instead\n"),
MOUNTED, PROC_MOUNTS);
}
read_mntentchn(mfp, fnam, mc);
@@ -155,7 +162,8 @@ read_fstab() {
fnam = _PATH_FSTAB;
mfp = my_setmntent (fnam, "r");
if (mfp == NULL || mfp->mntent_fp == NULL) {
- error("warning: can't open %s: %s", _PATH_FSTAB, strerror (errno));
+ int errsv = errno;
+ error(_("warning: can't open %s: %s"), _PATH_FSTAB, strerror (errsv));
return;
}
read_mntentchn(mfp, fnam, mc);
@@ -303,12 +311,14 @@ setlkw_timeout (int sig) {
superfluous, but avoids an arbitrary sleep(). */
/* Where does the link point to? Obvious choices are mtab and mtab~~.
- Maybe the latter is preferable. */
-#define MOUNTLOCK_LINKTARGET MOUNTED_LOCK "~"
+ HJLu points out that the latter leads to races. Right now we use
+ mtab~.<pid> instead. */
+#define MOUNTLOCK_LINKTARGET MOUNTED_LOCK "%d"
void
lock_mtab (void) {
int tries = 3;
+ char *linktargetfile;
if (!signals_have_been_setup) {
int sig = 0;
@@ -329,42 +339,49 @@ lock_mtab (void) {
signals_have_been_setup = 1;
}
+ /* somewhat clumsy, but some ancient systems do not have snprintf() */
+ /* use 20 as upper bound for the length of %d output */
+ linktargetfile = xmalloc(strlen(MOUNTLOCK_LINKTARGET) + 20);
+ sprintf(linktargetfile, MOUNTLOCK_LINKTARGET, getpid ());
+
/* Repeat until it was us who made the link */
while (!we_created_lockfile) {
struct flock flock;
int errsv, fd, i, j;
- i = open (MOUNTLOCK_LINKTARGET, O_WRONLY|O_CREAT, 0);
+ i = open (linktargetfile, O_WRONLY|O_CREAT, 0);
if (i < 0) {
- /* MOUNTLOCK_LINKTARGET does not exist (as a file)
+ int errsv = errno;
+ /* linktargetfile does not exist (as a file)
and we cannot create it. Read-only filesystem?
Too many files open in the system? Filesystem full? */
- die (EX_FILEIO, "can't create lock file %s: %s "
- "(use -n flag to override)",
- MOUNTLOCK_LINKTARGET, strerror (errno));
+ die (EX_FILEIO, _("can't create lock file %s: %s "
+ "(use -n flag to override)"),
+ linktargetfile, strerror (errsv));
}
close(i);
- j = link(MOUNTLOCK_LINKTARGET, MOUNTED_LOCK);
+ j = link(linktargetfile, MOUNTED_LOCK);
errsv = errno;
- (void) unlink(MOUNTLOCK_LINKTARGET);
+ (void) unlink(linktargetfile);
if (j < 0 && errsv != EEXIST) {
- die (EX_FILEIO, "can't link lock file %s: %s "
- "(use -n flag to override)",
+ die (EX_FILEIO, _("can't link lock file %s: %s "
+ "(use -n flag to override)"),
MOUNTED_LOCK, strerror (errsv));
}
fd = open (MOUNTED_LOCK, O_WRONLY);
if (fd < 0) {
+ int errsv = errno;
/* Strange... Maybe the file was just deleted? */
if (errno == ENOENT && tries-- > 0)
continue;
- die (EX_FILEIO, "can't open lock file %s: %s "
- "(use -n flag to override)",
- MOUNTED_LOCK, strerror (errno));
+ die (EX_FILEIO, _("can't open lock file %s: %s "
+ "(use -n flag to override)"),
+ MOUNTED_LOCK, strerror (errsv));
}
flock.l_type = F_WRLCK;
@@ -375,9 +392,11 @@ lock_mtab (void) {
if (j == 0) {
/* We made the link. Now claim the lock. */
if (fcntl (fd, F_SETLK, &flock) == -1) {
- if (verbose)
- printf("Can't lock lock file %s: %s\n",
- MOUNTED_LOCK, strerror (errno));
+ if (verbose) {
+ int errsv = errno;
+ printf(_("Can't lock lock file %s: %s\n"),
+ MOUNTED_LOCK, strerror (errsv));
+ }
/* proceed anyway */
}
we_created_lockfile = 1;
@@ -385,9 +404,10 @@ lock_mtab (void) {
/* Someone else made the link. Wait. */
alarm(LOCK_TIMEOUT);
if (fcntl (fd, F_SETLKW, &flock) == -1) {
- die (EX_FILEIO, "can't lock lock file %s: %s",
+ int errsv = errno;
+ die (EX_FILEIO, _("can't lock lock file %s: %s"),
MOUNTED_LOCK, (errno == EINTR) ?
- "timed out" : strerror (errno));
+ _("timed out") : strerror (errsv));
}
alarm(0);
/* Maybe limit the number of iterations? */
@@ -431,23 +451,32 @@ update_mtab (const char *dir, struct mntent *instead) {
mfp = my_setmntent(MOUNTED, "r");
if (mfp == NULL || mfp->mntent_fp == NULL) {
- error ("cannot open %s (%s) - mtab not updated",
- MOUNTED, strerror (errno));
+ int errsv = errno;
+ error (_("cannot open %s (%s) - mtab not updated"),
+ MOUNTED, strerror (errsv));
goto leave;
}
mftmp = my_setmntent (MOUNTED_TEMP, "w");
if (mftmp == NULL || mfp->mntent_fp == NULL) {
- error ("can't open %s (%s) - mtab not updated",
- MOUNTED_TEMP, strerror (errno));
+ int errsv = errno;
+ error (_("cannot open %s (%s) - mtab not updated"),
+ MOUNTED_TEMP, strerror (errsv));
goto leave;
}
while ((mnt = my_getmntent (mfp))) {
if (streq (mnt->mnt_dir, dir)
+#if 0
/* Matthew Wilcox <willy@odie.barnet.ac.uk> */
+ /* This is meant for Patch 212 on Jitterbug,
+ still in incoming, to allow remounting
+ on a different directory. */
|| (instead && instead->mnt_fsname &&
- (streq (mnt->mnt_fsname, instead->mnt_fsname)))) {
+ (!streq (instead->mnt_fsname, "none")) &&
+ (streq (mnt->mnt_fsname, instead->mnt_fsname)))
+#endif
+ ) {
added++;
if (instead) { /* a remount */
remnt = *instead;
@@ -456,34 +485,42 @@ update_mtab (const char *dir, struct mntent *instead) {
remnt.mnt_type = mnt->mnt_type;
if (instead->mnt_fsname
&& !streq(mnt->mnt_fsname, instead->mnt_fsname))
- printf("mount: warning: cannot change "
- "mounted device with a remount\n");
+ printf(_("mount: warning: cannot change "
+ "mounted device with a remount\n"));
else if (instead->mnt_type
&& !streq(instead->mnt_type, "unknown")
&& !streq(mnt->mnt_type, instead->mnt_type))
- printf("mount: warning: cannot change "
- "filesystem type with a remount\n");
+ printf(_("mount: warning: cannot change "
+ "filesystem type with a remount\n"));
} else
next = NULL;
} else
next = mnt;
- if (next && my_addmntent(mftmp, next) == 1)
- die (EX_FILEIO, "error writing %s: %s",
- MOUNTED_TEMP, strerror (errno));
+ if (next && my_addmntent(mftmp, next) == 1) {
+ int errsv = errno;
+ die (EX_FILEIO, _("error writing %s: %s"),
+ MOUNTED_TEMP, strerror (errsv));
+ }
}
- if (instead && !added && my_addmntent(mftmp, instead) == 1)
- die (EX_FILEIO, "error writing %s: %s",
- MOUNTED_TEMP, strerror (errno));
+ if (instead && !added && my_addmntent(mftmp, instead) == 1) {
+ int errsv = errno;
+ die (EX_FILEIO, _("error writing %s: %s"),
+ MOUNTED_TEMP, strerror (errsv));
+ }
my_endmntent (mfp);
- if (fchmod (fileno (mftmp->mntent_fp), S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) < 0)
- fprintf(stderr, "error changing mode of %s: %s\n", MOUNTED_TEMP,
- strerror (errno));
+ if (fchmod (fileno (mftmp->mntent_fp), S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) < 0) {
+ int errsv = errno;
+ fprintf(stderr, _("error changing mode of %s: %s\n"), MOUNTED_TEMP,
+ strerror (errsv));
+ }
my_endmntent (mftmp);
- if (rename (MOUNTED_TEMP, MOUNTED) < 0)
- fprintf(stderr, "can't rename %s to %s: %s\n", MOUNTED_TEMP, MOUNTED,
- strerror(errno));
+ if (rename (MOUNTED_TEMP, MOUNTED) < 0) {
+ int errsv = errno;
+ fprintf(stderr, _("can't rename %s to %s: %s\n"), MOUNTED_TEMP, MOUNTED,
+ strerror(errsv));
+ }
leave:
unlock_mtab();
diff --git a/mount/fstab.h b/mount/fstab.h
index e0b3895c2..acd8f6271 100644
--- a/mount/fstab.h
+++ b/mount/fstab.h
@@ -1,6 +1,11 @@
#define _PATH_FSTAB "/etc/fstab"
+#ifdef _PATH_MOUNTED
+#define MOUNTED_LOCK _PATH_MOUNTED "~"
+#define MOUNTED_TEMP _PATH_MOUNTED ".tmp"
+#else
#define MOUNTED_LOCK "/etc/mtab~"
#define MOUNTED_TEMP "/etc/mtab.tmp"
+#endif
#define LOCK_TIMEOUT 10
int mtab_is_writable(void);
diff --git a/mount/linux_fs.h b/mount/linux_fs.h
index bdc548c21..bd9243b55 100644
--- a/mount/linux_fs.h
+++ b/mount/linux_fs.h
@@ -76,3 +76,26 @@ struct ufs_super_block {
#define ufsmagic(s) ((uint) s.s_magic[0] + (((uint) s.s_magic[1]) << 8) + \
(((uint) s.s_magic[2]) << 16) + \
(((uint) s.s_magic[3]) << 24))
+
+/* From Richard.Russon@ait.co.uk Wed Feb 24 08:05:27 1999 */
+#define NTFS_SUPER_MAGIC "NTFS"
+struct ntfs_super_block {
+ u_char s_dummy[3];
+ u_char s_magic[4];
+};
+
+/* From inspection of a few FAT filesystems - aeb */
+/* Unfortunately I find almost the same thing on an extended partition;
+ it looks like a primary has some directory entries where the extended
+ has a partition table: IO.SYS, MSDOS.SYS, WINBOOT.SYS */
+struct fat_super_block {
+ u_char s_dummy[3];
+ u_char s_os[8]; /* "MSDOS5.0" or "MSWIN4.0" or "MSWIN4.1" */
+ u_char s_dummy2[32];
+ u_char s_label[11]; /* for DOS? */
+ u_char s_fs[8]; /* "FAT12 " or "FAT16 " or all zero */
+ /* OS/2 BM has "FAT " here. */
+ u_char s_dummy3[9];
+ u_char s_label2[11]; /* for Windows? */
+ u_char s_fs2[8]; /* garbage or "FAT32 " */
+};
diff --git a/mount/lomount.c b/mount/lomount.c
index 276ab4e49..d99078585 100644
--- a/mount/lomount.c
+++ b/mount/lomount.c
@@ -2,6 +2,12 @@
/* Added vfs mount options - aeb - 960223 */
/* Removed lomount - aeb - 960224 */
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
+ */
+
#define PROC_DEVICES "/proc/devices"
/*
@@ -20,6 +26,7 @@
#include "loop.h"
#include "lomount.h"
+#include "nls.h"
char *xstrdup (const char *s); /* not: #include "sundries.h" */
void error (const char *fmt, ...); /* idem */
@@ -67,17 +74,19 @@ show_loop (char *device)
int fd;
if ((fd = open (device, O_RDONLY)) < 0) {
- fprintf(stderr, "loop: can't open device %s: %s\n",
- device, strerror (errno));
+ int errsv = errno;
+ fprintf(stderr, _("loop: can't open device %s: %s\n"),
+ device, strerror (errsv));
return;
}
if (ioctl (fd, LOOP_GET_STATUS, &loopinfo) < 0) {
- fprintf(stderr, "loop: can't get info on device %s: %s\n",
- device, strerror (errno));
+ int errsv = errno;
+ fprintf(stderr, _("loop: can't get info on device %s: %s\n"),
+ device, strerror (errsv));
close (fd);
return;
}
- printf ("%s: [%04x]:%ld (%s) offset %d, %s encryption\n",
+ printf (_("%s: [%04x]:%ld (%s) offset %d, %s encryption\n"),
device, loopinfo.lo_device, loopinfo.lo_inode,
loopinfo.lo_name, loopinfo.lo_offset,
crypt_name (loopinfo.lo_encrypt_type));
@@ -131,24 +140,24 @@ find_unused_loop_device (void)
}
if (!somedev)
- error("mount: could not find any device /dev/loop#");
+ error(_("mount: could not find any device /dev/loop#"));
else if(!someloop) {
if (loop_known == 1)
- error(
+ error(_(
"mount: Could not find any loop device.\n"
-" Maybe /dev/loop# has a wrong major number?");
+" Maybe /dev/loop# has a wrong major number?"));
else if (loop_known == -1)
- error(
+ error(_(
"mount: Could not find any loop device, and, according to %s,\n"
" this kernel does not know about the loop device.\n"
-" (If so, then recompile or `insmod loop.o'.)", PROC_DEVICES);
+" (If so, then recompile or `insmod loop.o'.)"), PROC_DEVICES);
else
- error(
+ error(_(
"mount: Could not find any loop device. Maybe this kernel does not know\n"
" about the loop device (then recompile or `insmod loop.o'), or\n"
-" maybe /dev/loop# has the wrong major number?");
+" maybe /dev/loop# has the wrong major number?"));
} else
- error("mount: could not find any free loop device");
+ error(_("mount: could not find any free loop device"));
return 0;
}
@@ -179,7 +188,7 @@ set_loop (const char *device, const char *file, int offset,
loopinfo.lo_name[LO_NAME_SIZE - 1] = 0;
if (encryption && (loopinfo.lo_encrypt_type = crypt_type (encryption))
< 0) {
- fprintf (stderr, "Unsupported encryption type %s\n", encryption);
+ fprintf (stderr, _("Unsupported encryption type %s\n"), encryption);
return 1;
}
loopinfo.lo_offset = offset;
@@ -188,30 +197,30 @@ set_loop (const char *device, const char *file, int offset,
loopinfo.lo_encrypt_key_size = 0;
break;
case LO_CRYPT_XOR:
- pass = getpass ("Password: ");
+ pass = getpass (_("Password: "));
strncpy (loopinfo.lo_encrypt_key, pass, LO_KEY_SIZE);
loopinfo.lo_encrypt_key[LO_KEY_SIZE - 1] = 0;
loopinfo.lo_encrypt_key_size = strlen (loopinfo.lo_encrypt_key);
break;
case LO_CRYPT_DES:
- pass = getpass ("Password: ");
+ pass = getpass (_("Password: "));
strncpy (loopinfo.lo_encrypt_key, pass, 8);
loopinfo.lo_encrypt_key[8] = 0;
loopinfo.lo_encrypt_key_size = 8;
- pass = getpass ("Init (up to 16 hex digits): ");
+ pass = getpass (_("Init (up to 16 hex digits): "));
for (i = 0; i < 16 && pass[i]; i++)
if (isxdigit (pass[i]))
loopinfo.lo_init[i >> 3] |= (pass[i] > '9' ?
(islower (pass[i]) ? toupper (pass[i]) :
pass[i]) - 'A' + 10 : pass[i] - '0') << (i & 7) * 4;
else {
- fprintf (stderr, "Non-hex digit '%c'.\n", pass[i]);
+ fprintf (stderr, _("Non-hex digit '%c'.\n"), pass[i]);
return 1;
}
break;
default:
fprintf (stderr,
- "Don't know how to get key for encryption system %d\n",
+ _("Don't know how to get key for encryption system %d\n"),
loopinfo.lo_encrypt_type);
return 1;
}
@@ -227,7 +236,7 @@ set_loop (const char *device, const char *file, int offset,
close (fd);
close (ffd);
if (verbose > 1)
- printf("set_loop(%s,%s,%d): success\n", device, file, offset);
+ printf(_("set_loop(%s,%s,%d): success\n"), device, file, offset);
return 0;
}
@@ -237,8 +246,9 @@ del_loop (const char *device)
int fd;
if ((fd = open (device, O_RDONLY)) < 0) {
- fprintf(stderr, "loop: can't delete device %s: %s\n",
- device, strerror (errno));
+ int errsv = errno;
+ fprintf(stderr, _("loop: can't delete device %s: %s\n"),
+ device, strerror (errsv));
return 1;
}
if (ioctl (fd, LOOP_CLR_FD, 0) < 0) {
@@ -247,7 +257,7 @@ del_loop (const char *device)
}
close (fd);
if (verbose > 1)
- printf("del_loop(%s): success\n", device);
+ printf(_("del_loop(%s): success\n"), device);
return 0;
}
@@ -255,7 +265,7 @@ del_loop (const char *device)
static void
mutter(void) {
fprintf(stderr,
- "This mount was compiled without loop support. Please recompile.\n");
+ _("This mount was compiled without loop support. Please recompile.\n"));
}
int
diff --git a/mount/losetup.c b/mount/losetup.c
index 8a75a9aef..911d73060 100644
--- a/mount/losetup.c
+++ b/mount/losetup.c
@@ -2,6 +2,10 @@
* losetup.c - setup and control loop devices
*/
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <stdio.h>
#include <string.h>
#include <ctype.h>
@@ -13,6 +17,7 @@
#include "loop.h"
#include "lomount.h"
+#include "nls.h"
#ifdef LOOP_SET_FD
@@ -62,11 +67,11 @@ static void show_loop(const char *device)
return;
}
if (ioctl(fd, LOOP_GET_STATUS, &loopinfo) < 0) {
- perror("Cannot get loop info");
+ perror(_("Cannot get loop info"));
close(fd);
return;
}
- printf("%s: [%04x]:%ld (%s) offset %d, %s encryption\n",
+ printf(_("%s: [%04x]:%ld (%s) offset %d, %s encryption\n"),
device, loopinfo.lo_device, loopinfo.lo_inode,
loopinfo.lo_name, loopinfo.lo_offset,
crypt_name(loopinfo.lo_encrypt_type));
@@ -98,7 +103,7 @@ int set_loop(const char *device, const char *file, int offset,
loopinfo.lo_name[LO_NAME_SIZE-1] = 0;
if (encryption && (loopinfo.lo_encrypt_type = crypt_type(encryption))
< 0) {
- fprintf(stderr,"Unsupported encryption type %s\n",encryption);
+ fprintf(stderr,_("Unsupported encryption type %s\n"),encryption);
exit(1);
}
loopinfo.lo_offset = offset;
@@ -107,30 +112,30 @@ int set_loop(const char *device, const char *file, int offset,
loopinfo.lo_encrypt_key_size = 0;
break;
case LO_CRYPT_XOR:
- pass = getpass("Password: ");
+ pass = getpass(_("Password: "));
strncpy(loopinfo.lo_encrypt_key, pass, LO_KEY_SIZE);
loopinfo.lo_encrypt_key[LO_KEY_SIZE-1] = 0;
loopinfo.lo_encrypt_key_size = strlen(loopinfo.lo_encrypt_key);
break;
case LO_CRYPT_DES:
- pass = getpass("Password: ");
+ pass = getpass(_("Password: "));
strncpy(loopinfo.lo_encrypt_key, pass, 8);
loopinfo.lo_encrypt_key[8] = 0;
loopinfo.lo_encrypt_key_size = 8;
- pass = getpass("Init (up to 16 hex digits): ");
+ pass = getpass(_("Init (up to 16 hex digits): "));
for (i = 0; i < 16 && pass[i]; i++)
if (isxdigit(pass[i]))
loopinfo.lo_init[i >> 3] |= (pass[i] > '9' ?
(islower(pass[i]) ? toupper(pass[i]) :
pass[i])-'A'+10 : pass[i]-'0') << (i & 7)*4;
else {
- fprintf(stderr,"Non-hex digit '%c'.\n",pass[i]);
+ fprintf(stderr,_("Non-hex digit '%c'.\n"),pass[i]);
exit(1);
}
break;
default:
fprintf(stderr,
- "Don't know how to get key for encryption system %d\n",
+ _("Don't know how to get key for encryption system %d\n"),
loopinfo.lo_encrypt_type);
exit(1);
}
@@ -166,10 +171,10 @@ int del_loop(const char *device)
static int usage(void)
{
- fprintf(stderr, "usage:\n\
+ fprintf(stderr, _("usage:\n\
%s loop_device # give info\n\
%s -d loop_device # delete\n\
- %s [ -e encryption ] [ -o offset ] loop_device file # setup\n",
+ %s [ -e encryption ] [ -o offset ] loop_device file # setup\n"),
progname, progname, progname);
exit(1);
}
@@ -180,6 +185,10 @@ int main(int argc, char **argv)
int delete,off,c;
int ro = 0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
delete = off = 0;
offset = encryption = NULL;
progname = argv[0];
@@ -219,7 +228,7 @@ int main(int argc, char **argv)
int main(int argc, char **argv) {
fprintf(stderr,
- "No loop support was available at compile time. Please recompile.\n");
+ _("No loop support was available at compile time. Please recompile.\n"));
return -1;
}
#endif
diff --git a/mount/mk_loop_h b/mount/mk_loop_h
index 0f8a1a617..dfeff296e 100644
--- a/mount/mk_loop_h
+++ b/mount/mk_loop_h
@@ -29,3 +29,4 @@ else
fi
echo '#undef dev_t' >> loop.h
+
diff --git a/mount/mntent.c b/mount/mntent.c
index 0be20e8ca..ac9cce823 100644
--- a/mount/mntent.c
+++ b/mount/mntent.c
@@ -1,11 +1,16 @@
/* Private version of the libc *mntent() routines. */
/* Note slightly different prototypes. */
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <stdio.h>
#include <string.h> /* for index */
#include <ctype.h> /* for isdigit */
#include "mntent.h"
#include "sundries.h" /* for xmalloc */
+#include "nls.h"
/* Unfortunately the classical Unix /etc/mtab and /etc/fstab
do not handle directory names containing spaces.
@@ -157,8 +162,8 @@ my_getmntent (mntFILE *mfp) {
/* Missing final newline? Otherwise extremely */
/* long line - assume file was corrupted */
if (feof(mfp->mntent_fp)) {
- fprintf(stderr, "[mntent]: warning: no final "
- "newline at the end of %s\n",
+ fprintf(stderr, _("[mntent]: warning: no final "
+ "newline at the end of %s\n"),
mfp->mntent_file);
s = index (buf, 0);
} else {
@@ -167,6 +172,8 @@ my_getmntent (mntFILE *mfp) {
}
}
*s = 0;
+ if (--s >= buf && *s == '\r')
+ *s = 0;
s = skip_spaces(buf);
} while (*s == '\0' || *s == '#');
@@ -206,9 +213,9 @@ my_getmntent (mntFILE *mfp) {
err:
mfp->mntent_softerrs++;
- fprintf(stderr, "[mntent]: line %d in %s is bad%s\n",
+ fprintf(stderr, _("[mntent]: line %d in %s is bad%s\n"),
mfp->mntent_lineno, mfp->mntent_file,
(mfp->mntent_errs || mfp->mntent_softerrs >= ERR_MAX) ?
- "; rest of file ignored" : "");
+ _("; rest of file ignored") : "");
goto again;
}
diff --git a/mount/mount.8 b/mount/mount.8
index 633671b19..f42375fdc 100644
--- a/mount/mount.8
+++ b/mount/mount.8
@@ -1015,6 +1015,16 @@ If no explicit loop device is mentioned
(but just an option `\fB\-o loop\fP' is given), then
.B mount
will try to find some unused loop device and use that.
+If you are not so unwise as to make
+.I /etc/mtab
+a symbolic link to
+.I /proc/mounts
+then any loop device allocated by
+.B mount
+will be freed by
+.BR umount .
+You can also free a loop device by hand, using `losetup -d', see
+.BR losetup (8).
.SH FILES
.I /etc/fstab
diff --git a/mount/mount.c b/mount/mount.c
index 5ee247daa..9f51db310 100644
--- a/mount/mount.c
+++ b/mount/mount.c
@@ -25,6 +25,13 @@
* Avoid unnecessary error messages about /proc.
* Improve support for noncanonical names in /etc/fstab.
* Add support for volume labels and UUIDs.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * 1999-03-21 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
+ * 1999-07-05 Hirokazu Takahashi <h-takaha@sss.abk.nec.co.jp>
+ * - fixed use of nouser option
*/
#include <unistd.h>
@@ -50,6 +57,7 @@
#include "mount_guess_fstype.h"
#include "mount_by_label.h"
#include "getusername.h"
+#include "nls.h"
#define DO_PS_FIDDLING
@@ -233,7 +241,8 @@ parse_opt (const char *opt, int *mask, char *extra_opts)
*mask &= ~om->mask;
else
*mask |= om->mask;
- if (om->mask == MS_USER || om->mask == MS_USERS)
+ if ((om->mask == MS_USER || om->mask == MS_USERS)
+ && !om->inv)
*mask |= MS_SECURE;
#ifdef MS_SILENT
if (om->mask == MS_SILENT && om->inv) {
@@ -311,10 +320,10 @@ already (const char *spec, const char *node) {
int ret = 1;
if ((mc = getmntfile(node)) != NULL)
- error ("mount: according to mtab, %s is already mounted on %s",
+ error (_("mount: according to mtab, %s is already mounted on %s"),
mc->mnt_fsname, node);
else if ((mc = getmntfile(spec)) != NULL)
- error ("mount: according to mtab, %s is mounted on %s",
+ error (_("mount: according to mtab, %s is mounted on %s"),
spec, mc->mnt_dir);
else
ret = 0;
@@ -333,9 +342,11 @@ create_mtab (void) {
lock_mtab();
mfp = my_setmntent (MOUNTED, "a+");
- if (mfp == NULL || mfp->mntent_fp == NULL)
- die (EX_FILEIO, "mount: can't open %s for writing: %s",
- MOUNTED, strerror (errno));
+ if (mfp == NULL || mfp->mntent_fp == NULL) {
+ int errsv = errno;
+ die (EX_FILEIO, _("mount: can't open %s for writing: %s"),
+ MOUNTED, strerror (errsv));
+ }
/* Find the root entry by looking it up in fstab */
if ((fstab = getfsfile ("/")) || (fstab = getfsfile ("root"))) {
@@ -346,14 +357,18 @@ create_mtab (void) {
mnt.mnt_opts = fix_opts_string (flags, extra_opts, NULL);
mnt.mnt_freq = mnt.mnt_passno = 0;
- if (my_addmntent (mfp, &mnt) == 1)
- die (EX_FILEIO, "mount: error writing %s: %s",
- MOUNTED, strerror (errno));
+ if (my_addmntent (mfp, &mnt) == 1) {
+ int errsv = errno;
+ die (EX_FILEIO, _("mount: error writing %s: %s"),
+ MOUNTED, strerror (errsv));
+ }
}
if (fchmod (fileno (mfp->mntent_fp), S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) < 0)
- if (errno != EROFS)
- die (EX_FILEIO, "mount: error changing mode of %s: %s",
- MOUNTED, strerror (errno));
+ if (errno != EROFS) {
+ int errsv = errno;
+ die (EX_FILEIO, _("mount: error changing mode of %s: %s"),
+ MOUNTED, strerror (errsv));
+ }
my_endmntent (mfp);
unlock_mtab();
@@ -401,14 +416,13 @@ try_mount5 (char *spec, char *node, char **type, int flags, char *mount_opts) {
*/
static int
try_mount_one (const char *spec0, const char *node0, char *type0,
- const char *opts0, int freq, int pass, int bg) {
+ const char *opts0, int freq, int pass, int bg, int ro) {
struct mntentchn mcn;
struct mntent mnt;
int mnt_err;
int flags;
char *extra_opts; /* written in mtab */
char *mount_opts; /* actually used on system call */
- static int added_ro = 0;
int loop, looptype, offset;
const char *opts;
char *spec, *node, *type, *loopdev, *loopfile;
@@ -426,9 +440,9 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
if (suid) {
if (!(flags & (MS_USER | MS_USERS))) {
if (already (spec, node))
- die (EX_USAGE, "mount failed");
+ die (EX_USAGE, _("mount failed"));
else
- die (EX_USAGE, "mount: only root can mount %s on %s", spec, node);
+ die (EX_USAGE, _("mount: only root can mount %s on %s"), spec, node);
}
if (flags & MS_USER)
user = getusername();
@@ -453,13 +467,13 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
looptype = (type && strncmp("lo@", type, 3) == 0);
if (looptype) {
if (loopdev)
- error("mount: loop device specified twice");
+ error(_("mount: loop device specified twice"));
loopdev = type+3;
type = opt_vfstype;
}
else if (opt_vfstype) {
if (type)
- error("mount: type specified twice");
+ error(_("mount: type specified twice"));
else
type = opt_vfstype;
}
@@ -471,7 +485,7 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
flags |= MS_LOOP;
if (fake) {
if (verbose)
- printf("mount: skipping the setup of a loop device\n");
+ printf(_("mount: skipping the setup of a loop device\n"));
} else {
int loopro = (flags & MS_RDONLY);
@@ -480,15 +494,15 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
if (!loopdev)
return EX_SYSERR; /* no more loop devices */
if (verbose)
- printf("mount: going to use the loop device %s\n", loopdev);
+ printf(_("mount: going to use the loop device %s\n"), loopdev);
offset = opt_offset ? strtoul(opt_offset, NULL, 0) : 0;
if (set_loop (loopdev, loopfile, offset, opt_encryption, &loopro)) {
if (verbose)
- printf("mount: failed setting up loop device\n");
+ printf(_("mount: failed setting up loop device\n"));
return EX_FAIL;
}
if (verbose > 1)
- printf("mount: setup loop device successfully\n");
+ printf(_("mount: setup loop device successfully\n"));
spec = loopdev;
if (loopro)
flags |= MS_RDONLY;
@@ -501,8 +515,8 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
if (mnt_err)
return mnt_err;
#else
- die (EX_SOFTWARE, "mount: this version was compiled "
- "without support for the type `nfs'");
+ die (EX_SOFTWARE, _("mount: this version was compiled "
+ "without support for the type `nfs'"));
#endif
}
@@ -513,8 +527,9 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
if (type)
#ifndef ALWAYS_STAT
if (streq (type, "smb") || streq (type, "ncp")
- /* || streq (type, "smbfs") || streq (type, "ncpfs") */
- )
+ /* these are incorrect but perhaps used by smbmount or so */
+ || streq (type, "smbfs") || streq (type, "ncpfs")
+ )
#else
if (strlen (type) < 100)
#endif
@@ -548,8 +563,10 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
int status;
wait(&status);
return status;
- } else
- error("mount: cannot fork: %s", strerror(errno));
+ } else {
+ int errsv = errno;
+ error(_("mount: cannot fork: %s"), strerror(errsv));
+ }
}
}
@@ -585,12 +602,15 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
lock_mtab();
mfp = my_setmntent(MOUNTED, "a+");
if (mfp == NULL || mfp->mntent_fp == NULL) {
- error("mount: can't open %s: %s", MOUNTED,
- strerror (errno));
+ int errsv = errno;
+ error(_("mount: can't open %s: %s"), MOUNTED,
+ strerror (errsv));
} else {
- if ((my_addmntent (mfp, &mnt)) == 1)
- error("mount: error writing %s: %s", MOUNTED,
- strerror (errno));
+ if ((my_addmntent (mfp, &mnt)) == 1) {
+ int errsv = errno;
+ error(_("mount: error writing %s: %s"), MOUNTED,
+ strerror (errsv));
+ }
my_endmntent(mfp);
}
unlock_mtab();
@@ -611,57 +631,66 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
/* Mount failed, complain, but don't die. */
if (type == 0)
- error ("mount: you must specify the filesystem type");
+ error (_("mount: you must specify the filesystem type"));
else
switch (mnt_err)
{
case EPERM:
if (geteuid() == 0) {
if (stat (node, &statbuf) || !S_ISDIR(statbuf.st_mode))
- error ("mount: mount point %s is not a directory", node);
+ error (_("mount: mount point %s is not a directory"), node);
else
- error ("mount: permission denied");
+ error (_("mount: permission denied"));
} else
- error ("mount: must be superuser to use mount");
+ error (_("mount: must be superuser to use mount"));
break;
case EBUSY:
if (flags & MS_REMOUNT) {
- error ("mount: %s is busy", node);
+ error (_("mount: %s is busy"), node);
} else if (!strcmp(type, "proc") && !strcmp(node, "/proc")) {
/* heuristic: if /proc/version exists, then probably proc is mounted */
if (stat ("/proc/version", &statbuf)) /* proc mounted? */
- error ("mount: %s is busy", node); /* no */
+ error (_("mount: %s is busy"), node); /* no */
else if(!all || verbose) /* yes, don't mention it */
- error ("mount: proc already mounted");
+ error (_("mount: proc already mounted"));
} else {
- error ("mount: %s already mounted or %s busy", spec, node);
+ error (_("mount: %s already mounted or %s busy"), spec, node);
already (spec, node);
}
break;
case ENOENT:
if (lstat (node, &statbuf))
- error ("mount: mount point %s does not exist", node);
+ error (_("mount: mount point %s does not exist"), node);
else if (stat (node, &statbuf))
- error ("mount: mount point %s is a symbolic link to nowhere",
+ error (_("mount: mount point %s is a symbolic link to nowhere"),
node);
else if (stat (spec, &statbuf))
- error ("mount: special device %s does not exist", spec);
+ error (_("mount: special device %s does not exist"), spec);
else {
errno = mnt_err;
perror("mount");
}
break;
case ENOTDIR:
- error ("mount: mount point %s is not a directory", node);
+ if (stat (node, &statbuf) || ! S_ISDIR(statbuf.st_mode))
+ error (_("mount: mount point %s is not a directory"), node);
+ else if (stat (spec, &statbuf) && errno == ENOTDIR)
+ error (_("mount: special device %s does not exist\n"
+ " (a path prefix is not a directory)\n"), spec);
+ else {
+ errno = mnt_err;
+ perror("mount");
+ }
break;
case EINVAL:
- { int fd, size;
+ { int fd;
+ long size;
if (flags & MS_REMOUNT) {
- error ("mount: %s not mounted already, or bad option", node);
+ error (_("mount: %s not mounted already, or bad option"), node);
} else {
- error ("mount: wrong fs type, bad option, bad superblock on %s,\n"
- " or too many mounted file systems",
+ error (_("mount: wrong fs type, bad option, bad superblock on %s,\n"
+ " or too many mounted file systems"),
spec);
if (stat (spec, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)
@@ -675,17 +704,17 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
break;
}
case EMFILE:
- error ("mount table full"); break;
+ error (_("mount table full")); break;
case EIO:
- error ("mount: %s: can't read superblock", spec); break;
+ error (_("mount: %s: can't read superblock"), spec); break;
case ENODEV:
if (is_in_procfs(type) || !strcmp(type, "guess"))
- error("mount: %s has wrong major or minor number", spec);
+ error(_("mount: %s has wrong major or minor number"), spec);
else if (have_procfs()) {
char *lowtype, *p;
int u;
- error ("mount: fs type %s not supported by kernel", type);
+ error (_("mount: fs type %s not supported by kernel"), type);
/* maybe this loser asked for FAT or ISO9660 or isofs */
lowtype = xstrdup(type);
@@ -697,36 +726,35 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
}
}
if (u && is_in_procfs(lowtype))
- error ("mount: probably you meant %s", lowtype);
+ error (_("mount: probably you meant %s"), lowtype);
else if (!strncmp(lowtype, "iso", 3) && is_in_procfs("iso9660"))
- error ("mount: maybe you meant iso9660 ?");
+ error (_("mount: maybe you meant iso9660 ?"));
free(lowtype);
} else
- error ("mount: %s has wrong device number or fs type %s not supported",
+ error (_("mount: %s has wrong device number or fs type %s not supported"),
spec, type);
break;
case ENOTBLK:
if (stat (spec, &statbuf)) /* strange ... */
- error ("mount: %s is not a block device, and stat fails?", spec);
+ error (_("mount: %s is not a block device, and stat fails?"), spec);
else if (S_ISBLK(statbuf.st_mode))
- error ("mount: the kernel does not recognize %s as a block device\n"
- " (maybe `insmod driver'?)", spec);
+ error (_("mount: the kernel does not recognize %s as a block device\n"
+ " (maybe `insmod driver'?)"), spec);
else if (S_ISREG(statbuf.st_mode))
- error ("mount: %s is not a block device (maybe try `-o loop'?)",
+ error (_("mount: %s is not a block device (maybe try `-o loop'?)"),
spec);
else
- error ("mount: %s is not a block device", spec);
+ error (_("mount: %s is not a block device"), spec);
break;
case ENXIO:
- error ("mount: %s is not a valid block device", spec); break;
+ error (_("mount: %s is not a valid block device"), spec); break;
case EACCES: /* pre-linux 1.1.38, 1.1.41 and later */
case EROFS: /* linux 1.1.38 and later */
- if (added_ro) {
- error ("mount: block device %s is not permitted on its filesystem",
+ if (ro) {
+ error (_("mount: block device %s is not permitted on its filesystem"),
spec);
break;
} else {
- added_ro = 1;
if (loop) {
opts = opts0;
type = type0;
@@ -739,9 +767,9 @@ try_mount_one (const char *spec0, const char *node0, char *type0,
opts = "ro";
if (type && !strcmp(type, "guess"))
type = 0;
- error ("mount: %s%s is write-protected, mounting read-only",
- loop ? "" : "block device ", spec0);
- return try_mount_one (spec0, node0, type, opts, freq, pass, bg);
+ error (_("mount: %s%s is write-protected, mounting read-only"),
+ loop ? "" : _("block device "), spec0);
+ return try_mount_one (spec0, node0, type, opts, freq, pass, bg, 1);
}
break;
default:
@@ -826,10 +854,10 @@ mount_one (const char *spec, const char *node, char *type, const char *opts,
if (nspec) {
spec = nspec;
if (verbose)
- printf("mount: consider mounting %s by %s\n", spec,
- (specset==1) ? "UUID" : "label");
+ printf(_("mount: consider mounting %s by %s\n"), spec,
+ (specset==1) ? _("UUID") : _("label"));
} else if(!all)
- die (EX_USAGE, "mount: no such partition found");
+ die (EX_USAGE, _("mount: no such partition found"));
/* if -a then we may be rescued by a noauto option */
}
@@ -837,8 +865,8 @@ mount_one (const char *spec, const char *node, char *type, const char *opts,
if (strchr (spec, ':') != NULL) {
type = "nfs";
if (verbose)
- printf("mount: no type was given - "
- "I'll assume nfs because of the colon\n");
+ printf(_("mount: no type was given - "
+ "I'll assume nfs because of the colon\n"));
}
}
@@ -846,14 +874,14 @@ mount_one (const char *spec, const char *node, char *type, const char *opts,
* Try to mount the file system. When the exit status is EX_BG,
* we will retry in the background. Otherwise, we're done.
*/
- status = try_mount_one (spec, node, type, opts, freq, pass, 0);
+ status = try_mount_one (spec, node, type, opts, freq, pass, 0, 0);
if (status != EX_BG)
return status;
/*
* Retry in the background.
*/
- printf ("mount: backgrounding \"%s\"\n", spec);
+ printf (_("mount: backgrounding \"%s\"\n"), spec);
fflush( stdout ); /* prevent duplicate output */
if (fork() > 0)
return 0; /* parent returns "success" */
@@ -862,9 +890,9 @@ mount_one (const char *spec, const char *node, char *type, const char *opts,
type = xstrdup(type);
opts = xstrdup(opts);
set_proc_name (spec); /* make a nice "ps" listing */
- status2 = try_mount_one (spec, node, type, opts, freq, pass, 1);
+ status2 = try_mount_one (spec, node, type, opts, freq, pass, 1, 0);
if (verbose && status2)
- printf ("mount: giving up \"%s\"\n", spec);
+ printf (_("mount: giving up \"%s\"\n"), spec);
exit (0); /* child stops here */
}
@@ -913,7 +941,7 @@ mount_all (string_list types, char *options) {
&& !streq (mc->mnt_dir, "root")) {
if (mounted (mc->mnt_fsname, mc->mnt_dir)) {
if (verbose)
- printf("mount: %s already mounted on %s\n",
+ printf(_("mount: %s already mounted on %s\n"),
mc->mnt_fsname, mc->mnt_dir);
} else {
mtmp = (struct mntentchn *) xmalloc(sizeof(*mtmp));
@@ -960,8 +988,10 @@ mount_all (string_list types, char *options) {
pid_t p = -1;
if (optfork) {
p = fork();
- if (p == -1)
- error("mount: cannot fork: %s", strerror (errno));
+ if (p == -1) {
+ int errsv = errno;
+ error(_("mount: cannot fork: %s"), strerror (errsv));
+ }
else if (p != 0)
cp->pid = p;
}
@@ -1019,18 +1049,14 @@ static struct option longopts[] =
{ NULL, 0, 0, 0 }
};
-const char *usage_string = "\
-Usage: mount [-hV]\n\
- mount -a [-nfFrsvw] [-t vfstypes]\n\
- mount [-nfrsvw] [-o options] special | node\n\
- mount [-nfrsvw] [-t vfstype] [-o options] special node\n\
-A special device can be indicated by -L label or -U uuid .
-";
-
static void
usage (FILE *fp, int n)
{
- fprintf (fp, "%s", usage_string);
+ fprintf (fp, _("Usage: mount [-hV]\n"
+ " mount -a [-nfFrsvw] [-t vfstypes]\n"
+ " mount [-nfrsvw] [-o options] special | node\n"
+ " mount [-nfrsvw] [-t vfstype] [-o options] special node\n"
+ " A special device can be indicated by -L label or -U uuid .\n"));
unlock_mtab();
exit (n);
}
@@ -1045,6 +1071,10 @@ main (int argc, char *argv[]) {
struct mntentchn *mc;
int fd;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
/* People report that a mount called from init without console
writes error messages to /etc/mtab
Let us try to avoid getting fd's 0,1,2 */
@@ -1128,12 +1158,12 @@ main (int argc, char *argv[]) {
suid = 1;
if (types || options || readwrite || nomtab || all || fake ||
(argc + specseen) != 1)
- die (EX_USAGE, "mount: only root can do that");
+ die (EX_USAGE, _("mount: only root can do that"));
}
if (!nomtab && mtab_does_not_exist()) {
if (verbose > 1)
- printf("mount: no %s found - creating it..\n", MOUNTED);
+ printf(_("mount: no %s found - creating it..\n"), MOUNTED);
create_mtab ();
}
@@ -1143,9 +1173,9 @@ main (int argc, char *argv[]) {
else
spec = get_spec_by_volume_label(volumelabel);
if (!spec)
- die (EX_USAGE, "mount: no such partition found");
+ die (EX_USAGE, _("mount: no such partition found"));
if (verbose)
- printf("mount: mounting %s\n", spec);
+ printf(_("mount: mounting %s\n"), spec);
} else
spec = NULL; /* just for gcc */
@@ -1154,7 +1184,7 @@ main (int argc, char *argv[]) {
/* mount -a */
result = mount_all (types, options);
if (result == 0 && verbose)
- error("not mounted anything");
+ error(_("not mounted anything"));
break;
case 1:
@@ -1167,7 +1197,7 @@ main (int argc, char *argv[]) {
if (mc == NULL)
mc = getfsspec (spec);
if (mc == NULL)
- die (EX_USAGE, "mount: cannot find %s in %s",
+ die (EX_USAGE, _("mount: cannot find %s in %s"),
spec, _PATH_FSTAB);
mc->mnt_fsname = spec;
} else {
@@ -1181,7 +1211,7 @@ main (int argc, char *argv[]) {
(mc = getfsfile (*argv)) == NULL &&
/* Try mtab - maybe this was a remount */
(mc = getmntfile (spec)) == NULL)
- die (EX_USAGE, "mount: can't find %s in %s or %s",
+ die (EX_USAGE, _("mount: can't find %s in %s or %s"),
spec, _PATH_FSTAB, MOUNTED);
/* Earlier mtab was tried first, but this would
sometimes try the wrong mount in case mtab had
diff --git a/mount/mount.smb b/mount/mount.smb
new file mode 100644
index 000000000..845f31067
--- /dev/null
+++ b/mount/mount.smb
@@ -0,0 +1,68 @@
+#!/bin/csh
+#
+# /sbin/mount.smb
+# by Greg Galperin, MAR99 <grg@ai.mit.edu>
+# ver 1.1 MAR99 GRG docs update: must escape special chars like $
+# ver 1.0 MAR99 GRG original version
+#
+# Intent is to allow calls to mount with -t smb to work properly
+# (either manually or from an automounter).
+#
+# bugs:
+# -- possible security hole, as this is a shell script called as root...
+# -- arguments other than rw and ro which mount might supply are not handled
+#
+###########################################################################
+#
+# To use this from autofs:
+#
+# have an entry of the form
+# key -fstype=smb,-Uadministrator,-Ppassword ://host/share
+# in the appropriate /etc/auto.mountpoint file.
+#
+# This makes access to /mountpoint/key/ access smb //host/share/
+# as administrator (or another user, if you specify such) with the given
+# password. You may have to supply a -c <unqualified-localhostname>.
+# Special characters need to be 'escaped' with a backslash ('\') -- for
+# instance, if you want to use the default share names with a "$" at the
+# end (e.g., //host/c$), you must enter ://host/c\$
+#
+# Note that mount/autofs is smart enough to figure out how to unmount
+# this without any extra work on our part!
+#
+###########################################################################
+#
+# I get called in the form: /sbin/mount.smb //host/shr /mnt/tmp -o rw,arg1,arg2
+#
+# It looks like mount tacks on either "rw" or "ro" as the first argument,
+# so I'm going to count on having exactly 5 arguments.
+#
+# This has been developed and tested with mount-2.7
+#
+###########################################################################
+
+# test for correct # args
+if ( $# != 4 ) then
+ echo $0 does not know how to handle $# arguments: $*
+ exit -1
+endif
+
+# test for args in the form I expect
+if ( "$3" != "-o" ) then
+ echo $0 does not know how to handle the 3rd argument not \"-o\" : $3
+ exit -1
+endif
+
+setenv COMMAND "/usr/sbin/smbmount $1 $2"
+foreach arg (`echo $4 | /usr/bin/tr ',' ' '`)
+ if ( "$arg" == "rw" ) then
+ setenv COMMAND "$COMMAND -f777 -d777"
+ else if ( "$arg" == "ro" ) then
+ setenv COMMAND "$COMMAND -f555 -d555"
+ else
+ setenv COMMAND "$COMMAND $arg"
+ endif
+end
+
+$COMMAND
+
diff --git a/mount/mount_by_label.c b/mount/mount_by_label.c
index a48c9de19..be37496f8 100644
--- a/mount/mount_by_label.c
+++ b/mount/mount_by_label.c
@@ -1,3 +1,7 @@
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <stdio.h>
#include <string.h>
#include <ctype.h>
@@ -6,6 +10,7 @@
#include "sundries.h" /* for xstrdup */
#include "linux_fs.h"
#include "mount_by_label.h"
+#include "nls.h"
#define PROC_PARTITIONS "/proc/partitions"
#define DEVLABELDIR "/dev"
@@ -133,7 +138,8 @@ get_spec_by_uuid(const char *s) {
return get_spec_by_x(UUID, uuid);
bad_uuid:
- die(EX_USAGE, "mount: bad UUID");
+ die(EX_USAGE, _("mount: bad UUID"));
+ return NULL; /* just for gcc */
}
char *
diff --git a/mount/mount_guess_fstype.c b/mount/mount_guess_fstype.c
index b6b9e6582..8e8207223 100644
--- a/mount/mount_guess_fstype.c
+++ b/mount/mount_guess_fstype.c
@@ -14,7 +14,11 @@
* Wed Nov 11 11:33:55 1998: K.Garloff@ping.de, try /etc/filesystems before
* /proc/filesystems
*
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
* aeb - many changes.
+ *
*/
#include <stdio.h>
@@ -27,6 +31,7 @@
#include "linux_fs.h"
#include "mount_guess_fstype.h"
#include "sundries.h" /* for xstrdup */
+#include "nls.h"
#define ETC_FILESYSTEMS "/etc/filesystems"
#define PROC_FILESYSTEMS "/proc/filesystems"
@@ -60,12 +65,14 @@ swapped(unsigned short a) {
Corrected the test for xiafs - aeb
Added romfs - aeb
Added ufs from a patch by jj. But maybe there are several types of ufs?
+ Added ntfs from a patch by Richard Russon.
+ Added a very weak heuristic for vfat - aeb
- Currently supports: minix, ext, ext2, xiafs, iso9660, romfs, ufs
+ Currently supports: minix, ext, ext2, xiafs, iso9660, romfs, ufs, ntfs, vfat
*/
static char
*magic_known[] = { "minix", "ext", "ext2", "xiafs", "iso9660", "romfs",
- "ufs" };
+ "ufs", "ntfs" };
static int
tested(const char *device) {
@@ -89,6 +96,8 @@ fstype(const char *device) {
union {
struct xiafs_super_block xiasb;
char romfs_magic[8];
+ struct ntfs_super_block ntfssb;
+ struct fat_super_block fatsb;
} xsb;
struct ufs_super_block ufssb;
union {
@@ -132,6 +141,15 @@ fstype(const char *device) {
type = "xiafs";
else if(!strncmp(xsb.romfs_magic, "-rom1fs-", 8))
type = "romfs";
+ else if(!strncmp(xsb.ntfssb.s_magic, NTFS_SUPER_MAGIC,
+ sizeof(xsb.ntfssb.s_magic)))
+ type = "ntfs";
+ else if ((!strncmp(xsb.fatsb.s_os, "MSDOS", 5) ||
+ !strncmp(xsb.fatsb.s_os, "MSWIN", 5))
+ && (!strncmp(xsb.fatsb.s_fs, "FAT12 ", 8) ||
+ !strncmp(xsb.fatsb.s_fs, "FAT16 ", 8) ||
+ !strncmp(xsb.fatsb.s_fs2, "FAT32 ", 8)))
+ type = "vfat"; /* only guessing - might as well be fat or umsdos */
}
if (!type) {
@@ -166,12 +184,12 @@ char *
guess_fstype_from_superblock(const char *spec) {
char *type = fstype(spec);
if (verbose) {
- printf ("mount: you didn't specify a filesystem type for %s\n",
+ printf (_("mount: you didn't specify a filesystem type for %s\n"),
spec);
if (type)
- printf (" I will try type %s\n", type);
+ printf (_(" I will try type %s\n"), type);
else
- printf (" I will try all types mentioned in %s or %s\n",
+ printf (_(" I will try all types mentioned in %s or %s\n"),
ETC_FILESYSTEMS, PROC_FILESYSTEMS);
}
return type;
@@ -197,7 +215,7 @@ procfsopen(void) {
static char *
procfsnext(void) {
char line[100];
- static char fsname[50];
+ static char fsname[100];
while (fgets(line, sizeof(line), procfs)) {
if (sscanf (line, "nodev %[^\n]\n", fsname) == 1) continue;
diff --git a/mount/nfsmount.c b/mount/nfsmount.c
index dd55d75a5..9500ec292 100644
--- a/mount/nfsmount.c
+++ b/mount/nfsmount.c
@@ -20,6 +20,10 @@
*
* Wed Oct 1 23:55:28 1997: Dick Streefland <dick_streefland@tasking.com>
* Implemented the "bg", "fg" and "retry" mount options for NFS.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
/*
@@ -38,6 +42,7 @@
#include <sys/time.h>
#include <sys/utsname.h>
#include <sys/stat.h>
+#include <netinet/in.h>
#include <arpa/inet.h>
#include "sundries.h"
@@ -46,6 +51,9 @@
#include <linux/nfs.h>
#include "mount_constants.h"
#include "nfs_mount3.h"
+#include "nls.h"
+
+#include "../defines.h" /* for HAVE_inet_aton */
static char *nfs_strerror(int stat);
@@ -146,8 +154,8 @@ int nfsmount(const char *spec, const char *node, int *flags,
msock = fsock = -1;
mclient = NULL;
if (strlen(spec) >= sizeof(hostdir)) {
- fprintf(stderr, "mount: "
- "excessively long host:dir argument\n");
+ fprintf(stderr, _("mount: "
+ "excessively long host:dir argument\n"));
goto fail;
}
strcpy(hostdir, spec);
@@ -159,28 +167,28 @@ int nfsmount(const char *spec, const char *node, int *flags,
until they can be fully supported. (mack@sgi.com) */
if ((s = strchr(hostdir, ','))) {
*s = '\0';
- fprintf(stderr, "mount: warning: "
- "multiple hostnames not supported\n");
+ fprintf(stderr, _("mount: warning: "
+ "multiple hostnames not supported\n"));
}
} else {
- fprintf(stderr, "mount: "
- "directory to mount not in host:dir format\n");
+ fprintf(stderr, _("mount: "
+ "directory to mount not in host:dir format\n"));
goto fail;
}
server_addr.sin_family = AF_INET;
-#if 1 /* old libc's do not have inet_aton() -- change 1 to 0 */
+#ifdef HAVE_inet_aton
if (!inet_aton(hostname, &server_addr.sin_addr))
#endif
{
if ((hp = gethostbyname(hostname)) == NULL) {
- fprintf(stderr, "mount: can't get address for %s\n",
+ fprintf(stderr, _("mount: can't get address for %s\n"),
hostname);
goto fail;
} else {
if (hp->h_length > sizeof(struct in_addr)) {
fprintf(stderr,
- "mount: got bad hp->h_length\n");
+ _("mount: got bad hp->h_length\n"));
hp->h_length = sizeof(struct in_addr);
}
memcpy(&server_addr.sin_addr,
@@ -197,8 +205,8 @@ int nfsmount(const char *spec, const char *node, int *flags,
if (!old_opts)
old_opts = "";
if (strlen(old_opts) + strlen(s) + 10 >= sizeof(new_opts)) {
- fprintf(stderr, "mount: "
- "excessively long option argument\n");
+ fprintf(stderr, _("mount: "
+ "excessively long option argument\n"));
goto fail;
}
sprintf(new_opts, "%s%saddr=%s",
@@ -288,19 +296,19 @@ int nfsmount(const char *spec, const char *node, int *flags,
else if (!strncmp(opteq+1, "udp", 3))
tcp = 0;
else
- printf("Warning: Unrecognized proto= option.\n");
+ printf(_("Warning: Unrecognized proto= option.\n"));
} else if (!strcmp(opt, "namlen")) {
#if NFS_MOUNT_VERSION >= 2
if (nfs_mount_version >= 2)
data.namlen = val;
else
#endif
- printf("Warning: Option namlen is not supported.\n");
+ printf(_("Warning: Option namlen is not supported.\n"));
} else if (!strcmp(opt, "addr"))
/* ignore */;
else {
- printf("unknown nfs mount parameter: "
- "%s=%d\n", opt, val);
+ printf(_("unknown nfs mount parameter: "
+ "%s=%d\n"), opt, val);
goto fail;
}
}
@@ -334,11 +342,11 @@ int nfsmount(const char *spec, const char *node, int *flags,
if (nfs_mount_version >= 3)
nolock = !val;
else
- printf("Warning: option nolock is not supported.\n");
+ printf(_("Warning: option nolock is not supported.\n"));
} else {
if (!sloppy) {
- printf("unknown nfs mount option: "
- "%s%s\n", val ? "" : "no", opt);
+ printf(_("unknown nfs mount option: "
+ "%s%s\n"), val ? "" : "no", opt);
goto fail;
}
}
@@ -409,13 +417,13 @@ int nfsmount(const char *spec, const char *node, int *flags,
mount_server_addr.sin_addr.s_addr = inet_addr(hostname);
} else {
if ((hp = gethostbyname(mounthost)) == NULL) {
- fprintf(stderr, "mount: can't get address for %s\n",
+ fprintf(stderr, _("mount: can't get address for %s\n"),
hostname);
goto fail;
} else {
if (hp->h_length > sizeof(struct in_addr)) {
fprintf(stderr,
- "mount: got bad hp->h_length?\n");
+ _("mount: got bad hp->h_length?\n"));
hp->h_length = sizeof(struct in_addr);
}
mount_server_addr.sin_family = AF_INET;
@@ -517,7 +525,7 @@ int nfsmount(const char *spec, const char *node, int *flags,
if (status.fhs_status != 0) {
fprintf(stderr,
- "mount: %s:%s failed, reason given by server: %s\n",
+ _("mount: %s:%s failed, reason given by server: %s\n"),
hostname, dirname, nfs_strerror(status.fhs_status));
goto fail;
}
@@ -528,18 +536,18 @@ int nfsmount(const char *spec, const char *node, int *flags,
if (tcp) {
if (nfs_mount_version < 3) {
- printf("NFS over TCP is not supported.\n");
+ printf(_("NFS over TCP is not supported.\n"));
goto fail;
}
fsock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
} else
fsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (fsock < 0) {
- perror("nfs socket");
+ perror(_("nfs socket"));
goto fail;
}
if (bindresvport(fsock, 0) < 0) {
- perror("nfs bindresvport");
+ perror(_("nfs bindresvport"));
goto fail;
}
if (port == 0) {
@@ -550,11 +558,11 @@ int nfsmount(const char *spec, const char *node, int *flags,
port = NFS_PORT;
#ifdef NFS_MOUNT_DEBUG
else
- printf("used portmapper to find NFS port\n");
+ printf(_("used portmapper to find NFS port\n"));
#endif
}
#ifdef NFS_MOUNT_DEBUG
- printf("using port %d for nfs deamon\n", port);
+ printf(_("using port %d for nfs deamon\n"), port);
#endif
server_addr.sin_port = htons(port);
/*
@@ -565,7 +573,7 @@ int nfsmount(const char *spec, const char *node, int *flags,
if (linux_version_code() <= 66314
&& connect(fsock, (struct sockaddr *) &server_addr,
sizeof (server_addr)) < 0) {
- perror("nfs connect");
+ perror(_("nfs connect"));
goto fail;
}
@@ -654,7 +662,7 @@ static char *nfs_strerror(int stat)
if (nfs_errtbl[i].stat == stat)
return strerror(nfs_errtbl[i].errnum);
}
- sprintf(buf, "unknown nfs status return value: %d", stat);
+ sprintf(buf, _("unknown nfs status return value: %d"), stat);
return buf;
}
diff --git a/mount/sundries.c b/mount/sundries.c
index d7ace1b2d..a844724e9 100644
--- a/mount/sundries.c
+++ b/mount/sundries.c
@@ -3,6 +3,10 @@
* sundries.c,v 1.1.1.1 1993/11/18 08:40:51 jrs Exp
*
* added fcntl locking by Kjetil T. (kjetilho@math.uio.no) - aeb, 950927
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <unistd.h>
#include <stdio.h>
@@ -11,7 +15,7 @@
#include "fstab.h"
#include "sundries.h"
#include "nfsmount.h"
-
+#include "nls.h"
/* String list constructor. (car() and cdr() are defined in "sundries.h"). */
string_list
@@ -33,7 +37,7 @@ xmalloc (size_t size) {
t = malloc (size);
if (t == NULL)
- die (EX_SYSERR, "not enough memory");
+ die (EX_SYSERR, _("not enough memory"));
return t;
}
@@ -48,7 +52,7 @@ xstrdup (const char *s) {
t = strdup (s);
if (t == NULL)
- die (EX_SYSERR, "not enough memory");
+ die (EX_SYSERR, _("not enough memory"));
return t;
}
@@ -58,7 +62,7 @@ xstrndup (const char *s, int n) {
char *t;
if (s == NULL)
- die (EX_SOFTWARE, "bug in xstrndup call");
+ die (EX_SOFTWARE, _("bug in xstrndup call"));
t = xmalloc(n+1);
strncpy(t,s,n);
@@ -156,12 +160,15 @@ die (int err, const char *fmt, ...) {
string_list
parse_list (char *strings) {
string_list list;
- char *t;
+ char *s, *t;
if (strings == NULL)
return NULL;
- list = cons (strtok (strings, ","), NULL);
+ /* strtok() destroys its argument, so we have to use a copy */
+ s = xstrdup(strings);
+
+ list = cons (strtok (s, ","), NULL);
while ((t = strtok (NULL, ",")) != NULL)
list = cons (t, list);
@@ -185,7 +192,7 @@ matching_type (const char *type, string_list types) {
return 1;
if ((notype = alloca (strlen (type) + 3)) == NULL)
- die (EX_SYSERR, "mount: out of memory");
+ die (EX_SYSERR, _("%s: Out of memory!\n"), "mount");
sprintf (notype, "no%s", type);
foundyes = foundno = no = 0;
@@ -214,7 +221,7 @@ canonicalize (const char *path) {
if (path == NULL)
return NULL;
- if (streq(path, "none") || streq(path, "proc"))
+ if (streq(path, "none") || streq(path, "proc") || streq(path, "devpts"))
return xstrdup(path);
canonical = xmalloc (PATH_MAX + 1);
diff --git a/mount/sundries.h b/mount/sundries.h
index cad87a1c8..742d761f4 100644
--- a/mount/sundries.h
+++ b/mount/sundries.h
@@ -46,16 +46,7 @@ char *xstrconcat2 (const char *, const char *);
char *xstrconcat3 (const char *, const char *, const char *);
char *xstrconcat4 (const char *, const char *, const char *, const char *);
-/* Here is some serious cruft. */
-#ifdef __GNUC__
-#if defined(__GNUC_MINOR__) && __GNUC__ == 2 && __GNUC_MINOR__ >= 5
-void die (int errcode, const char *fmt, ...) __attribute__ ((noreturn));
-#else /* GNUC < 2.5 */
-void volatile die (int errcode, const char *fmt, ...);
-#endif /* GNUC < 2.5 */
-#else /* !__GNUC__ */
void die (int errcode, const char *fmt, ...);
-#endif /* !__GNUC__ */
#ifdef HAVE_NFS
int nfsmount (const char *spec, const char *node, int *flags,
diff --git a/mount/swapon.c b/mount/swapon.c
index 41d1f3fce..2e49b627d 100644
--- a/mount/swapon.c
+++ b/mount/swapon.c
@@ -2,6 +2,12 @@
* A swapon(8)/swapoff(8) for Linux 0.99.
* swapon.c,v 1.1.1.1 1993/11/18 08:40:51 jrs Exp
* Added '-s' (Summary option) <Vincent.Renardias@waw.com> 02/1997.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
+ *
*/
#include <stdlib.h>
@@ -13,6 +19,7 @@
#include <sys/stat.h>
#include "swap_constants.h"
#include "swapargs.h"
+#include "nls.h"
#define streq(s, t) (strcmp ((s), (t)) == 0)
@@ -38,17 +45,14 @@ static struct option longopts[] =
{ NULL, 0, 0, 0 }
};
-const char *usage_string = "\
-usage: %s [-hV]\n\
- %s -a [-v]\n\
- %s [-v] [-p priority] special ...\n\
- %s [-s]\n\
-";
-
static void
usage (FILE *fp, int n)
{
- fprintf (fp, usage_string, program_name, program_name, program_name, program_name);
+ fprintf (fp, _("usage: %s [-hV]\n"
+ " %s -a [-v]\n"
+ " %s [-v] [-p priority] special ...\n"
+ " %s [-s]\n"),
+ program_name, program_name, program_name, program_name);
exit (n);
}
@@ -81,24 +85,27 @@ swap (const char *special, int prio)
struct stat st;
if (verbose)
- printf("%s on %s\n", program_name, special);
+ printf(_("%s on %s\n"), program_name, special);
if (streq (program_name, "swapon")) {
if (stat(special, &st) < 0) {
- fprintf (stderr, "swapon: cannot stat %s: %s\n", special, strerror (errno));
+ int errsv = errno;
+ fprintf (stderr, _("swapon: cannot stat %s: %s\n"), special, strerror (errsv));
return -1;
}
- if ((st.st_mode & 07077) != 0) {
- fprintf(stderr, "swapon: warning: %s has insecure permissions %04o, "
- "0600 suggested\n", special, st.st_mode & 07777);
+ /* people generally dislike this warning - now it is printed
+ only when `verbose' is set */
+ if (verbose && (st.st_mode & 07077) != 0) {
+ fprintf(stderr, _("swapon: warning: %s has insecure permissions %04o, "
+ "0600 suggested\n"), special, st.st_mode & 07777);
}
/* test for holes by LBT */
if (S_ISREG(st.st_mode)) {
if (st.st_blocks * 512 < st.st_size) {
fprintf(stderr,
- "swapon: Skipping file %s - it appears to have holes.\n",
+ _("swapon: Skipping file %s - it appears to have holes.\n"),
special);
return -1;
}
@@ -124,8 +131,10 @@ swap (const char *special, int prio)
} else
status = swapoff (special);
- if (status < 0)
- fprintf (stderr, "%s: %s: %s\n", program_name, special, strerror (errno));
+ if (status < 0) {
+ int errsv = errno;
+ fprintf (stderr, "%s: %s: %s\n", program_name, special, strerror (errsv));
+ }
return status;
}
@@ -137,8 +146,9 @@ display_summary(void)
char line[200] ;
if ((swaps = fopen(PROC_SWAPS, "r")) == NULL) {
+ int errsv = errno;
fprintf (stderr, "%s: %s: %s\n", program_name, PROC_SWAPS,
- strerror (errno));
+ strerror (errsv));
return -1 ;
}
while ( fgets(line, sizeof(line), swaps))
@@ -155,6 +165,10 @@ main (int argc, char *argv[])
int all = 0;
int c;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
if (strrchr (argv[0], '/') != NULL)
program_name = strrchr (argv[0], '/') + 1;
else
@@ -195,8 +209,9 @@ main (int argc, char *argv[])
if (all) {
FILE *fp = setmntent(_PATH_FSTAB, "r");
if (fp == NULL) {
- fprintf(stderr, "%s: cannot open %s: %s\n", program_name,
- _PATH_FSTAB, strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("%s: cannot open %s: %s\n"), program_name,
+ _PATH_FSTAB, strerror(errsv));
exit(2);
}
while ((fstab = getmntent(fp)) != NULL) {
diff --git a/mount/umount.8 b/mount/umount.8
index 196bd7f8a..08d39888d 100644
--- a/mount/umount.8
+++ b/mount/umount.8
@@ -82,6 +82,10 @@ specified type. More than one type may be specified in a comma separated
list. The list of file system types can be prefixed with
.B no
to specify the file system types on which no action should be taken.
+.TP
+.B \-f
+Force unmount (in case of an unreachable NFS system).
+(Requires kernel 2.1.116 or later.)
.SH "THE LOOP DEVICE"
The
diff --git a/mount/umount.c b/mount/umount.c
index ac233a70b..36f9407f2 100644
--- a/mount/umount.c
+++ b/mount/umount.c
@@ -36,6 +36,7 @@
#include "lomount.h"
#include "loop.h"
#include "fstab.h"
+#include "nls.h"
#ifdef HAVE_NFS
#include <sys/socket.h>
@@ -48,12 +49,11 @@
#include <arpa/inet.h>
#endif
-static int umount2(const char *path, int flags);
-
#ifdef MNT_FORCE
/* Interesting ... it seems libc knows about MNT_FORCE and presumably
about umount2 as well -- need not do anything */
#else /* MNT_FORCE */
+static int umount2(const char *path, int flags);
/* Does the present kernel source know about umount2? */
#include <linux/unistd.h>
@@ -62,7 +62,7 @@ _syscall2(int, umount2, const char *, path, int, flags);
#else /* __NR_umount2 */
static int
umount2(const char *path, int flags) {
- fprintf(stderr, "umount: compiled without support for -f\n");
+ fprintf(stderr, _("umount: compiled without support for -f\n"));
errno = ENOSYS;
return -1;
}
@@ -112,7 +112,7 @@ nfs_umount_rpc_call(const char *spec, const char *opts)
hostname = xstrndup(spec, p-spec);
dirname = xstrdup(p+1);
#ifdef DEBUG
- printf("host: %s, directory: %s\n", hostname, dirname);
+ printf(_("host: %s, directory: %s\n"), hostname, dirname);
#endif
if (opts && (p = strstr(opts, "addr="))) {
@@ -129,12 +129,12 @@ nfs_umount_rpc_call(const char *spec, const char *opts)
saddr.sin_addr.s_addr = inet_addr(hostname);
else {
if ((hostp = gethostbyname(hostname)) == NULL) {
- fprintf(stderr, "umount: can't get address for %s\n",
+ fprintf(stderr, _("umount: can't get address for %s\n"),
hostname);
return 1;
}
if (hostp->h_length > sizeof(struct in_addr)) {
- fprintf(stderr, "umount: got bad hostp->h_length\n");
+ fprintf(stderr, _("umount: got bad hostp->h_length\n"));
hostp->h_length = sizeof(struct in_addr);
}
memcpy(&saddr.sin_addr, hostp->h_addr, hostp->h_length);
@@ -172,23 +172,23 @@ nfs_umount_rpc_call(const char *spec, const char *opts)
static void complain(int err, const char *dev) {
switch (err) {
case ENXIO:
- error ("umount: %s: invalid block device", dev); break;
+ error (_("umount: %s: invalid block device"), dev); break;
case EINVAL:
- error ("umount: %s: not mounted", dev); break;
+ error (_("umount: %s: not mounted"), dev); break;
case EIO:
- error ("umount: %s: can't write superblock", dev); break;
+ error (_("umount: %s: can't write superblock"), dev); break;
case EBUSY:
/* Let us hope fstab has a line "proc /proc ..."
and not "none /proc ..."*/
- error ("umount: %s: device is busy", dev); break;
+ error (_("umount: %s: device is busy"), dev); break;
case ENOENT:
- error ("umount: %s: not found", dev); break;
+ error (_("umount: %s: not found"), dev); break;
case EPERM:
- error ("umount: %s: must be superuser to umount", dev); break;
+ error (_("umount: %s: must be superuser to umount"), dev); break;
case EACCES:
- error ("umount: %s: block devices not permitted on fs", dev); break;
+ error (_("umount: %s: block devices not permitted on fs"), dev); break;
default:
- error ("umount: %s: %s", dev, strerror (err)); break;
+ error (_("umount: %s: %s"), dev, strerror (err)); break;
}
}
@@ -232,7 +232,7 @@ umount_one (const char *spec, const char *node, const char *type,
perror("umount2");
if (errno == ENOSYS) {
if (verbose)
- printf("no umount2, trying umount...\n");
+ printf(_("no umount2, trying umount...\n"));
res = umount (node);
}
}
@@ -245,7 +245,7 @@ umount_one (const char *spec, const char *node, const char *type,
/* if (umnt_err == ENOENT || umnt_err == EINVAL) */
if (umnt_err != EBUSY && strcmp(node, spec)) {
if (verbose)
- printf ("could not umount %s - trying %s instead\n",
+ printf (_("could not umount %s - trying %s instead\n"),
node, spec);
res = umount (spec);
if (res < 0)
@@ -261,7 +261,7 @@ umount_one (const char *spec, const char *node, const char *type,
res=mount(spec, node, NULL, MS_MGC_VAL | MS_REMOUNT | MS_RDONLY, NULL);
if (res == 0) {
struct mntent remnt;
- fprintf(stderr, "umount: %s busy - remounted read-only\n", spec);
+ fprintf(stderr, _("umount: %s busy - remounted read-only\n"), spec);
remnt.mnt_type = remnt.mnt_fsname = NULL;
remnt.mnt_dir = xstrdup(node);
remnt.mnt_opts = "ro";
@@ -269,7 +269,7 @@ umount_one (const char *spec, const char *node, const char *type,
return 0;
} else if (errno != EBUSY) { /* hmm ... */
perror("remount");
- fprintf(stderr, "umount: could not remount %s read-only\n",
+ fprintf(stderr, _("umount: could not remount %s read-only\n"),
spec);
}
}
@@ -277,7 +277,7 @@ umount_one (const char *spec, const char *node, const char *type,
if (res >= 0) {
/* Umount succeeded, update mtab. */
if (verbose)
- printf ("%s umounted\n", spec);
+ printf (_("%s umounted\n"), spec);
if (!nomtab && mtab_is_writable()) {
/* Special stuff for loop devices */
@@ -360,7 +360,7 @@ umount_all (string_list types) {
hd = mtab_head();
if (!hd->prev)
- die (2, "umount: cannot find list of filesystems to unmount");
+ die (2, _("umount: cannot find list of filesystems to unmount"));
for (mc = hd->prev; mc != hd; mc = mc->prev) {
if (matching_type (mc->mnt_type, types)) {
errors |= umount_one (mc->mnt_fsname, mc->mnt_dir,
@@ -386,16 +386,12 @@ static struct option longopts[] =
{ NULL, 0, 0, 0 }
};
-char *usage_string = "\
-Usage: umount [-hV]\n\
- umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n\
- umount [-f] [-r] [-n] [-v] special | node...\n\
-";
-
static void
usage (FILE *fp, int n)
{
- fprintf (fp, "%s", usage_string);
+ fprintf (fp, _("Usage: umount [-hV]\n"
+ " umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n"
+ " umount [-f] [-r] [-n] [-v] special | node...\n"));
exit (n);
}
@@ -412,6 +408,10 @@ main (int argc, char *argv[])
char *file;
int result = 0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
while ((c = getopt_long (argc, argv, "afhnrt:vV",
longopts, NULL)) != EOF)
switch (c) {
@@ -450,7 +450,7 @@ main (int argc, char *argv[])
{
suid = 1;
if (all || types || nomtab || force)
- die (2, "umount: only root can do that");
+ die (2, _("umount: only root can do that"));
}
argc -= optind;
@@ -458,32 +458,32 @@ main (int argc, char *argv[])
if (all) {
if (types == NULL)
- types = parse_list(xstrdup("noproc"));
+ types = parse_list("noproc");
result = umount_all (types);
} else if (argc < 1) {
usage (stderr, 2);
} else while (argc--) {
file = canonicalize (*argv); /* mtab paths are canonicalized */
if (verbose > 1)
- printf("Trying to umount %s\n", file);
+ printf(_("Trying to umount %s\n"), file);
mc = getmntfilesbackward (file, NULL);
if (!mc && verbose)
- printf("Could not find %s in mtab\n", file);
+ printf(_("Could not find %s in mtab\n"), file);
if (suid) {
if (!mc)
- die (2, "umount: %s is not mounted (according to mtab)", file);
+ die (2, _("umount: %s is not mounted (according to mtab)"), file);
if (getmntfilesbackward (file, mc))
- die (2, "umount: it seems %s is mounted multiple times", file);
+ die (2, _("umount: it seems %s is mounted multiple times"), file);
if (!(fs = getfsspec (file)) && !(fs = getfsfile (file)))
- die (2, "umount: %s is not in the fstab (and you are not root)",
+ die (2, _("umount: %s is not in the fstab (and you are not root)"),
file);
if ((!streq (mc->mnt_fsname, fs->mnt_fsname) &&
!streq (mc->mnt_fsname, canonicalize (fs->mnt_fsname)))
|| (!streq (mc->mnt_dir, fs->mnt_dir) &&
!streq (mc->mnt_dir, canonicalize (fs->mnt_dir)))) {
- die (2, "umount: %s mount disagrees with the fstab", file);
+ die (2, _("umount: %s mount disagrees with the fstab"), file);
}
/* User mounting and unmounting is allowed only
@@ -502,7 +502,7 @@ main (int argc, char *argv[])
options = cdr (options);
}
if (!options)
- die (2, "umount: only root can unmount %s from %s",
+ die (2, _("umount: only root can unmount %s from %s"),
fs->mnt_fsname, fs->mnt_dir);
if (streq (car (options), "user")) {
char *user = getusername();
@@ -512,7 +512,7 @@ main (int argc, char *argv[])
char *co = car (options);
if (!strncmp(co, "user=", 5)) {
if (!user || !streq(co+5,user))
- die(2, "umount: only %s can unmount %s from %s",
+ die(2, _("umount: only %s can unmount %s from %s"),
co+5, fs->mnt_fsname, fs->mnt_dir);
break;
}
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644
index 000000000..d1e14684c
--- /dev/null
+++ b/po/ChangeLog
@@ -0,0 +1,5 @@
+1999-02-22
+ Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - initial release
+ - things work not too well, yet
+
diff --git a/po/GNU.ABOUT-NLS b/po/GNU.ABOUT-NLS
new file mode 100644
index 000000000..28d38c76f
--- /dev/null
+++ b/po/GNU.ABOUT-NLS
@@ -0,0 +1,226 @@
+Notes on the Free Translation Project
+*************************************
+
+ Free software is going international! The Free Translation Project
+is a way to get maintainers of free software, translators, and users all
+together, so that will gradually become able to speak many languages.
+A few packages already provide translations for their messages.
+
+ If you found this `ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU `gettext' internally,
+itself available at your nearest GNU archive site. But you do *not*
+need to install GNU `gettext' prior to configuring, installing or using
+this package with messages translated.
+
+ Installers will find here some useful hints. These notes also
+explain how users should proceed for getting the programs to use the
+available translations. They tell how people wanting to contribute and
+work at translations should contact the appropriate team.
+
+ When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used. The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+One advise in advance
+=====================
+
+ If you want to exploit the full power of internationalization, you
+should configure it using
+
+ ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed. So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias or message inheritance) as the
+implementation here. It is also not possible to offer this additional
+functionality on top of a `catgets' implementation. Future versions of
+GNU `gettext' will very likely convey even more functionality. So it
+might be a good idea to change to GNU `gettext' as soon as possible.
+
+ So you need not provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+INSTALL Matters
+===============
+
+ Some packages are "localizable" when properly installed; the
+programs they contain can be made to speak your own native language.
+Most such packages use GNU `gettext'. Other packages have their own
+ways to internationalization, predating GNU `gettext'.
+
+ By default, this package will be installed to allow translation of
+messages. It will automatically detect whether the system provides
+usable `catgets' (if using this is selected by the installer) or
+`gettext' functions. If neither is available, the GNU `gettext' own
+library will be used. This library is wholly contained within this
+package, usually in the `intl/' subdirectory, so prior installation of
+the GNU `gettext' package is *not* required. Installers may use
+special options at configuration time for changing the default
+behaviour. The commands:
+
+ ./configure --with-included-gettext
+ ./configure --with-catgets
+ ./configure --disable-nls
+
+will respectively bypass any pre-existing `catgets' or `gettext' to use
+the internationalizing routines provided within this package, enable
+the use of the `catgets' functions (if found on the locale system), or
+else, *totally* disable translation of messages.
+
+ When you already have GNU `gettext' installed on your system and run
+configure without an option for your new package, `configure' will
+probably detect the previously built and installed `libintl.a' file and
+will decide to use this. This might be not what is desirable. You
+should use the more recent version of the GNU `gettext' library. I.e.
+if the file `intl/VERSION' shows that the library which comes with this
+package is more recent, you should use
+
+ ./configure --with-included-gettext
+
+to prevent auto-detection.
+
+ By default the configuration process will not test for the `catgets'
+function and therefore they will not be used. The reasons are already
+given above: the emulation on top of `catgets' cannot provide all the
+extensions provided by the GNU `gettext' library. If you nevertheless
+want to use the `catgets' functions use
+
+ ./configure --with-catgets
+
+to enable the test for `catgets' (this causes no harm if `catgets' is
+not available on your system). If you really select this option we
+would like to hear about the reasons because we cannot think of any
+good one ourself.
+
+ Internationalized packages have usually many `po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language. Unless
+translations have been forbidden at `configure' time by using the
+`--disable-nls' switch, all available translations are installed
+together with the package. However, the environment variable `LINGUAS'
+may be set, prior to configuration, to limit the installed set.
+`LINGUAS' should then contain a space separated list of two-letter
+codes, stating which languages are allowed.
+
+Using This Package
+==================
+
+ As a user, if your language has been installed for this package, you
+only have to set the `LANG' environment variable to the appropriate
+ISO 639 `LL' two-letter code prior to using the programs in the
+package. For example, let's suppose that you speak German. At the
+shell prompt, merely execute `setenv LANG de' (in `csh'),
+`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This
+can be done from your `.login' or `.profile' file, once and for all.
+
+ An operating system might already offer message localization for
+many of its programs, while other programs have been installed locally
+with the full capabilities of GNU `gettext'. Just using `gettext'
+extended syntax for `LANG' would break proper localization of already
+available operating system programs. In this case, users should set
+both `LANGUAGE' and `LANG' variables in their environment, as programs
+using GNU `gettext' give preference to `LANGUAGE'. For example, some
+Swedish users would rather read translations in German than English for
+when Swedish is not available. This is easily accomplished by setting
+`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'.
+
+Translating Teams
+=================
+
+ For the Free Translation Project to be a success, we need interested
+people who like their own language and write it well, and who are also
+able to synergize with other translators speaking the same language.
+Each translation team has its own mailing list, courtesy of Linux
+International. You may reach your translation team at the address
+`LL@li.org', replacing LL by the two-letter ISO 639 code for your
+language. Language codes are *not* the same as the country codes given
+in ISO 3166. The following translation teams exist, as of December
+1997:
+
+ Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
+ Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian
+ `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja',
+ Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish
+ `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es',
+ Swedish `sv', and Turkish `tr'.
+
+For example, you may reach the Chinese translation team by writing to
+`zh@li.org'.
+
+ If you'd like to volunteer to *work* at translating messages, you
+should become a member of the translating team for your own language.
+The subscribing address is *not* the same as the list itself, it has
+`-request' appended. For example, speakers of Swedish can send a
+message to `sv-request@li.org', having this message body:
+
+ subscribe
+
+ Keep in mind that team members are expected to participate
+*actively* in translations, or at solving translational difficulties,
+rather than merely lurking around. If your team does not exist yet and
+you want to start one, or if you are unsure about what to do or how to
+get started, please write to `translation@iro.umontreal.ca' to reach the
+coordinator for all translator teams.
+
+ The English team is special. It works at improving and uniformizing
+the terminology in use. Proven linguistic skill are praised more than
+programming skill, here.
+
+Available Packages
+==================
+
+ Languages are not equally supported in all packages. The following
+matrix shows the current state of internationalization, as of December
+1997. The matrix shows, in regard of each package, for which languages
+PO files have been submitted to translation coordination.
+
+ Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv
+ .----------------------------------------------------.
+ bash | [] [] [] | 3
+ bison | [] [] [] | 3
+ clisp | [] [] [] [] | 4
+ cpio | [] [] [] [] [] [] | 6
+ diffutils | [] [] [] [] [] | 5
+ enscript | [] [] [] [] [] [] | 6
+ fileutils | [] [] [] [] [] [] [] [] [] [] | 10
+ findutils | [] [] [] [] [] [] [] [] [] | 9
+ flex | [] [] [] [] | 4
+ gcal | [] [] [] [] [] | 5
+ gettext | [] [] [] [] [] [] [] [] [] [] [] | 12
+ grep | [] [] [] [] [] [] [] [] [] [] | 10
+ hello | [] [] [] [] [] [] [] [] [] [] [] | 11
+ id-utils | [] [] [] | 3
+ indent | [] [] [] [] [] | 5
+ libc | [] [] [] [] [] [] [] | 7
+ m4 | [] [] [] [] [] [] | 6
+ make | [] [] [] [] [] [] | 6
+ music | [] [] | 2
+ ptx | [] [] [] [] [] [] [] [] | 8
+ recode | [] [] [] [] [] [] [] [] [] | 9
+ sh-utils | [] [] [] [] [] [] [] [] | 8
+ sharutils | [] [] [] [] [] [] | 6
+ tar | [] [] [] [] [] [] [] [] [] [] [] | 11
+ texinfo | [] [] [] | 3
+ textutils | [] [] [] [] [] [] [] [] [] | 9
+ wdiff | [] [] [] [] [] [] [] [] | 8
+ `----------------------------------------------------'
+ 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv
+ 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179
+
+ Some counters in the preceding matrix are higher than the number of
+visible blocks let us expect. This is because a few extra PO files are
+used for implementing regional variants of languages, or language
+dialects.
+
+ For a PO file in the matrix above to be effective, the package to
+which it applies should also have been internationalized and
+distributed as such by its maintainer. There might be an observable
+lag between the mere existence a PO file and its wide availability in a
+distribution.
+
+ If December 1997 seems to be old, you may fetch a more recent copy
+of this `ABOUT-NLS' file on most GNU archive sites.
+
diff --git a/po/Makefile b/po/Makefile
new file mode 100644
index 000000000..0e8d6ab83
--- /dev/null
+++ b/po/Makefile
@@ -0,0 +1,148 @@
+PACKAGE = util-linux
+VERSION = 2.9s
+
+include ../make_include
+
+#
+# po2tbl.sed is not taken from /usr/share/gettext/intl
+# Often it is not present.
+# A RedHat 5.2 installation only has po2tbl.sed.in.
+#
+PO2TBL = ./po2tbl.sed
+INTL = /usr/share/gettext/intl
+
+SHELL = /bin/sh
+
+prefix = /usr
+exec_prefix = ${prefix}
+datadir = $(prefix)/share
+localedir = $(datadir)/locale
+gnulocaledir = $(prefix)/share/locale
+gettextsrcdir = $(prefix)/share/gettext/po
+
+# Not giving an explicit path improves the chances of finding this
+INSTALL = install -c
+INSTALL_DATA = ${INSTALL} -m 644
+
+# Not giving an explicit path improves the chances of finding these
+GENCAT = gencat
+MSGFMT = msgfmt
+XGETTEXT = xgettext
+MSGMERGE = msgmerge
+
+
+# .. for <config.h> (if HAVE_CONFIG_H is set)
+# $(INTL) for "libgettext.h"
+INCLUDES = -I.. -I$(INTL)
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+# Enter here all .po files
+POFILES = cs.po de.po fr.po it.po ja.po nl.po pt_BR.po
+# the same but with .gmo
+GMOFILES = cs.gmo de.gmo fr.gmo it.gmo ja.gmo nl.gmo pt_BR.gmo
+
+CATALOGS = $(GMOFILES)
+CATOBJEXT = .gmo
+INSTOBJEXT = .mo
+
+.SUFFIXES:
+.SUFFIXES: .c .o .po .gmo .mo .msg .cat
+
+.c.o:
+ $(COMPILE) $<
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ $(MSGFMT) -o $@ $<
+
+.po.cat:
+ sed -f $(PO2TBL) < $< > $*.msg \
+ && rm -f $@ && $(GENCAT) $@ $*.msg
+
+all: all-$(HAVE_XGETTEXT)
+
+all-yes: cat-id-tbl.c $(CATALOGS)
+all-no:
+
+util-linux.pot:
+ $(XGETTEXT) --default-domain=util-linux --directory=.. \
+ --add-comments --keyword=_ --keyword=N_ \
+ --files-from=POTFILES.in $(FOREIGN)
+ mv util-linux.po util-linux.pot
+
+cat-id-tbl.c: stamp-cat-id
+stamp-cat-id: util-linux.pot
+ rm -f cat-id-tbl.tmp
+ sed -f $(PO2TBL) util-linux.pot \
+ | sed -e "s/@PACKAGE NAME@/util-linux/" > cat-id-tbl.tmp
+ if cmp -s cat-id-tbl.tmp cat-id-tbl.c; then \
+ rm cat-id-tbl.tmp; \
+ else \
+ echo cat-id-tbl.c changed; \
+ rm -f cat-id-tbl.c; \
+ mv cat-id-tbl.tmp cat-id-tbl.c; \
+ fi
+ rm -f stamp-cat-id && echo timestamp > stamp-cat-id
+
+install: install-data-$(HAVE_XGETTEXT)
+install-data-no: all
+install-data-yes: all
+ ../mkinstalldirs $(datadir);
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ case "$$cat" in \
+ *.gmo) destdir=$(gnulocaledir);; \
+ *) destdir=$(localedir);; \
+ esac; \
+ lang=`echo $$cat | sed 's/$(CATOBJEXT)$$//'`; \
+ dir=$$destdir/$$lang/LC_MESSAGES; \
+ ../mkinstalldirs $$dir; \
+ $(INSTALL_DATA) $$cat $$dir/util-linux$(INSTOBJEXT); \
+ echo "installing $$cat as $$dir/util-linux$(INSTOBJEXT)"; \
+ if test -r $$cat.m; then \
+ $(INSTALL_DATA) $$cat.m $$dir/util-linux$(INSTOBJEXT).m; \
+ echo "installing $$cat.m as $$dir/util-linux$(INSTOBJEXT).m"; \
+ fi; \
+ done
+
+uninstall:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ lang=`echo $$cat | sed 's/$(CATOBJEXT)$$//'`; \
+ rm -f $(localedir)/$$lang/LC_MESSAGES/util-linux$(INSTOBJEXT); \
+ rm -f $(localedir)/$$lang/LC_MESSAGES/util-linux$(INSTOBJEXT).m; \
+ rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/util-linux$(INSTOBJEXT); \
+ rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/util-linux$(INSTOBJEXT).m; \
+ done
+ rm -f $(gettextsrcdir)/po-Makefile.in.in
+
+cat-id-tbl.o: $(INTL)/libgettext.h
+
+clean:
+ rm -f core core.* *~ *.o util-linux.pot cat-id-tbl.tmp
+
+distclean: clean
+ rm -f POTFILES *.gmo *.mo *.msg *.cat *.cat.m
+
+update-po:
+ $(MAKE) util-linux.pot
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ lang=`echo $$cat | sed 's/$(CATOBJEXT)$$//'`; \
+ mv $$lang.po $$lang.old.po; \
+ echo "$$lang:"; \
+ if $(MSGMERGE) $$lang.old.po util-linux.pot -o $$lang.po; then \
+ rm -f $$lang.old.po; \
+ else \
+ echo "msgmerge for $$cat failed!"; \
+ rm -f $$lang.po; \
+ mv $$lang.old.po $$lang.po; \
+ fi; \
+ done
+
+POTFILES:
+ ./update-potfiles
+
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 000000000..1d79e757c
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,99 @@
+clock/cmos.c
+clock/hwclock.c
+clock/kd.c
+clock/rtc.c
+clock/shhopt.c
+disk-utils/fdformat.c
+disk-utils/fsck.minix.c
+disk-utils/mkfs.c
+disk-utils/mkfs.minix.c
+disk-utils/mkswap.c
+disk-utils/setfdprm.c
+fdisk/cfdisk.c
+fdisk/fdisk.c
+fdisk/fdiskaixlabel.c
+fdisk/fdiskbsdlabel.c
+fdisk/fdisksgilabel.c
+fdisk/fdisksunlabel.c
+fdisk/i386_sys_types.c
+fdisk/llseek.c
+fdisk/sfdisk.c
+games/banner.c
+getopt-1.0.3b/getopt.c
+lib/env.c
+lib/err.c
+lib/my_reboot.c
+lib/setproctitle.c
+login-utils/agetty.c
+login-utils/checktty.c
+login-utils/chfn.c
+login-utils/chsh.c
+login-utils/cryptocard.c
+login-utils/islocal.c
+login-utils/last.c
+login-utils/login.c
+login-utils/mesg.c
+login-utils/newgrp.c
+login-utils/passwd.c
+login-utils/setpwnam.c
+login-utils/shutdown.c
+login-utils/simpleinit.c
+login-utils/ttymsg.c
+login-utils/vipw.c
+login-utils/wall.c
+misc-utils/cal.c
+misc-utils/ddate.c
+misc-utils/kill.c
+misc-utils/logger.c
+misc-utils/look.c
+misc-utils/mcookie.c
+misc-utils/md5.c
+misc-utils/namei.c
+misc-utils/procs.c
+misc-utils/script.c
+misc-utils/setterm.c
+misc-utils/tsort.c
+misc-utils/whereis.c
+misc-utils/write.c
+mount/fstab.c
+mount/getusername.c
+mount/lomount.c
+mount/losetup.c
+mount/mntent.c
+mount/mount.c
+mount/mount_by_label.c
+mount/mount_guess_fstype.c
+mount/nfsmount.c
+mount/nfsmount_clnt.c
+mount/nfsmount_xdr.c
+mount/realpath.c
+mount/sundries.c
+mount/swapon.c
+mount/umount.c
+mount/version.c
+sys-utils/arch.c
+sys-utils/ctrlaltdel.c
+sys-utils/cytune.c
+sys-utils/dmesg.c
+sys-utils/ipcrm.c
+sys-utils/ipcs.c
+sys-utils/rdev.c
+sys-utils/readprofile.c
+sys-utils/renice.c
+sys-utils/setsid.c
+sys-utils/sln.c
+sys-utils/tunelp.c
+text-utils/col.c
+text-utils/colcrt.c
+text-utils/colrm.c
+text-utils/column.c
+text-utils/conv.c
+text-utils/display.c
+text-utils/hexdump.c
+text-utils/hexsyntax.c
+text-utils/more.c
+text-utils/odsyntax.c
+text-utils/parse.c
+text-utils/rev.c
+text-utils/ul.c
+kbd/kbdrate.c
diff --git a/po/cat-id-tbl.c b/po/cat-id-tbl.c
new file mode 100644
index 000000000..cc679d0b7
--- /dev/null
+++ b/po/cat-id-tbl.c
@@ -0,0 +1,2151 @@
+/* Automatically generated by po2tbl.sed from util-linux.pot. */
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "libgettext.h"
+
+const struct _msg_ent _msg_tbl[] = {
+ {"", 1},
+ {"booted from MILO\n", 2},
+ {"Ruffian BCD clock\n", 3},
+ {"clockport adjusted to 0x%x\n", 4},
+ {"funky TOY!\n", 5},
+ {"%s: atomic %s failed for 1000 iterations!", 6},
+ {"Cannot open /dev/port: %s", 7},
+ {"I failed to get permission because I didnt try.\n", 8},
+ {"%s is unable to get I/O port access: the iopl(3) call failed.\n", 9},
+ {"Probably you need root privileges.\n", 10},
+ {"Last drift adjustment done at %d seconds after 1969\n", 11},
+ {"Last calibration done at %d seconds after 1969\n", 12},
+ {"Waiting for clock tick...\n", 13},
+ {"...got clock tick\n", 14},
+ {"Invalid values in hardware clock: %2d/%.2d/%.2d %.2d:%.2d:%.2d\n", 15},
+ {"Hw clock time : %.2d:%.2d:%.2d = %d seconds since 1969\n", 16},
+ {"Time read from Hardware Clock: %02d:%02d:%02d\n", 17},
+ {"Setting Hardware Clock to %.2d:%.2d:%.2d = %d seconds since 1969\n", 18},
+ {"Clock not changed - testing only.\n", 19},
+ {"\
+Time elapsed since reference time has been %.6f seconds.\n\
+Delaying further to reach the next full second.\n", 20},
+ {"\
+The Hardware Clock registers contain values that are either invalid (e.g. \
+50th day of month) or beyond the range we can handle (e.g. Year 2095).\n", 21},
+ {"%s %.6f seconds\n", 22},
+ {"No --date option specified.\n", 23},
+ {"\
+The value of the --date option is not a valid date.\n\
+In particular, it contains quotation marks.\n", 24},
+ {"Issuing date command: %s\n", 25},
+ {"Unable to run 'date' program in /bin/sh shell. popen() failed", 26},
+ {"response from date command = %s\n", 27},
+ {"\
+The date command issued by %s returned unexpected results.\n\
+The command was:\n\
+ %s\n\
+The response was:\n\
+ %s\n", 28},
+ {"\
+The date command issued by %s returnedsomething other than an integer where \
+the convertedtime value was expected.\n\
+The command was:\n\
+ %s\n\
+The response was:\n\
+ %s\n", 29},
+ {"date string %s equates to %d seconds since 1969.\n", 30},
+ {"\
+The Hardware Clock does not contain a valid time, so we cannot set the \
+System Time from it.\n", 31},
+ {"Calling settimeofday:\n", 32},
+ {"\ttv.tv_sec = %ld, tv.tv_usec = %ld\n", 33},
+ {"\ttz.tz_minuteswest = %ld\n", 34},
+ {"Not setting system clock because running in test mode.\n", 35},
+ {"Must be superuser to set system clock.\n", 36},
+ {"settimeofday() failed", 37},
+ {"\
+Not adjusting drift factor because the Hardware Clock previously contained \
+garbage.\n", 38},
+ {"\
+Not adjusting drift factor because it has been less than a day since the \
+last calibration.\n", 39},
+ {"\
+Clock drifted %d seconds in the past %d seconds in spite of a drift factor \
+of %f seconds/day.\n\
+Adjusting drift factor by %f seconds/day\n", 40},
+ {"Time since last adjustment is %d seconds\n", 41},
+ {"Need to insert %d seconds and refer time back %.6f seconds ago\n", 42},
+ {"Not updating adjtime file because of testing mode.\n", 43},
+ {"\
+Would have written the following to %s:\n\
+%s", 44},
+ {"Drift adjustment parameters not updated.\n", 45},
+ {"\
+The Hardware Clock does not contain a valid time, so we cannot adjust it.\n", 46},
+ {"Needed adjustment is less than one second, so not setting clock.\n", 47},
+ {"Using %s.\n", 48},
+ {"No usable clock interface found.\n", 49},
+ {"Unable to set system clock.\n", 50},
+ {"\
+The kernel keeps an epoch value for the Hardware Clock only on an Alpha \
+machine.\n\
+This copy of hwclock was built for a machine other than Alpha\n\
+(and thus is presumably not running on an Alpha now). No action taken.\n", 51},
+ {"Unable to get the epoch value from the kernel.\n", 52},
+ {"Kernel is assuming an epoch value of %lu\n", 53},
+ {"\
+To set the epoch value, you must use the 'epoch' option to tell to what \
+value to set it.\n", 54},
+ {"Not setting the epoch to %d - testing only.\n", 55},
+ {"Unable to set the epoch value in the kernel.\n", 56},
+ {"%s takes no non-option arguments. You supplied %d.\n", 57},
+ {"\
+You have specified multiple function options.\n\
+You can only perform one function at a time.\n", 58},
+ {"No usable set-to time. Cannot set clock.\n", 59},
+ {"Sorry, only the superuser can change the Hardware Clock.\n", 60},
+ {"\
+Sorry, only the superuser can change the Hardware Clock epoch in the \
+kernel.\n", 61},
+ {"\
+Cannot access the Hardware Clock via any known method. Use --debug option \
+to see the details of our search for an access method.\n", 62},
+ {"%s: %s, errno=%d: %s.\n", 63},
+ {"Waiting in loop for time from KDGHWCLK to change\n", 64},
+ {"KDGHWCLK ioctl to read time failed", 65},
+ {"Timed out waiting for time change.\n", 66},
+ {"KDGHWCLK ioctl to read time failed in loop", 67},
+ {"ioctl() failed to read time from /dev/tty1", 68},
+ {"ioctl() to open /dev/tty1 failed", 69},
+ {"KDGHWCLK ioctl failed", 70},
+ {"Can't open /dev/tty1", 71},
+ {"ioctl() to /dev/rtc to read the time failed.\n", 72},
+ {"Waiting in loop for time from /dev/rtc to change\n", 73},
+ {"open() of /dev/rtc failed", 74},
+ {"/dev/rtc does not have interrupt functions. ", 75},
+ {"read() to /dev/rtc to wait for clock tick failed", 76},
+ {"ioctl() to /dev/rtc to turn off update interrupts failed", 77},
+ {"ioctl() to /dev/rtc to turn on update interrupts failed unexpectedly", 78},
+ {"Unable to open /dev/rtc", 79},
+ {"ioctl() to /dev/rtc to set the time failed.\n", 80},
+ {"ioctl(%s) was successful.\n", 81},
+ {"Open of /dev/rtc failed", 82},
+ {"\
+To manipulate the epoch value in the kernel, we must access the Linux 'rtc' \
+device driver via the device special file /dev/rtc. This file does not \
+exist on this system.\n", 83},
+ {"ioctl(RTC_EPOCH_READ) to /dev/rtc failed", 84},
+ {"we have read epoch %ld from /dev/rtc with RTC_EPOCH_READ ioctl.\n", 85},
+ {"The epoch value may not be less than 1900. You requested %ld\n", 86},
+ {"setting epoch to %ld with RTC_EPOCH_SET ioctl to /dev/rtc.\n", 87},
+ {"\
+The kernel device driver for /dev/rtc does not have the RTC_EPOCH_SET \
+ioctl.\n", 88},
+ {"ioctl(RTC_EPOCH_SET) to /dev/rtc failed", 89},
+ {"invalid number `%s'\n", 90},
+ {"number `%s' to `%s' out of range\n", 91},
+ {"unrecognized option `%s'\n", 92},
+ {"option `%s' requires an argument\n", 93},
+ {"option `%s' doesn't allow an argument\n", 94},
+ {"unrecognized option `-%c'\n", 95},
+ {"Formatting ... ", 96},
+ {"done\n", 97},
+ {"Verifying ... ", 98},
+ {"Read: ", 99},
+ {"Problem reading cylinder %d, expected %d, read %d\n", 100},
+ {"\
+bad data in cyl %d\n\
+Continuing ... ", 101},
+ {"usage: %s [ -n ] device\n", 102},
+ {"%s: not a floppy device\n", 103},
+ {"Could not determine current format type", 104},
+ {"%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n", 105},
+ {"Double", 106},
+ {"Single", 107},
+ {"%s is mounted.\t ", 108},
+ {"Do you really want to continue", 109},
+ {"check aborted.\n", 110},
+ {"Zone nr < FIRSTZONE in file `", 111},
+ {"Zone nr >= ZONES in file `", 112},
+ {"Remove block", 113},
+ {"Read error: unable to seek to block in file '", 114},
+ {"Read error: bad block in file '", 115},
+ {"\
+Internal error: trying to write bad block\n\
+Write request ignored\n", 116},
+ {"Write error: bad block in file '", 117},
+ {"Warning: Firstzone != Norm_firstzone\n", 118},
+ {"%ld inodes\n", 119},
+ {"%ld blocks\n", 120},
+ {"Firstdatazone=%ld (%ld)\n", 121},
+ {"Zonesize=%d\n", 122},
+ {"Maxsize=%ld\n", 123},
+ {"Filesystem state=%d\n", 124},
+ {"\
+namelen=%d\n\
+\n", 125},
+ {"Inode %d marked not used, but used for file '", 126},
+ {"Mark in use", 127},
+ {" has mode %05o\n", 128},
+ {"Warning: inode count too big.\n", 129},
+ {"Block has been used before. Now in file `", 130},
+ {"Clear", 131},
+ {"Block %d in file `", 132},
+ {"' is marked not in use.", 133},
+ {"Correct", 134},
+ {" contains a bad inode number for file '", 135},
+ {" Remove", 136},
+ {": bad directory: '.' isn't first\n", 137},
+ {": bad directory: '..' isn't second\n", 138},
+ {": bad directory: size<32", 139},
+ {": bad directory: size < 32", 140},
+ {"Inode %d mode not cleared.", 141},
+ {"Inode %d not used, marked used in the bitmap.", 142},
+ {"Inode %d used, marked unused in the bitmap.", 143},
+ {"Inode %d (mode = %07o), i_nlinks=%d, counted=%d.", 144},
+ {"Set i_nlinks to count", 145},
+ {"Zone %d: marked in use, no file uses it.", 146},
+ {"Unmark", 147},
+ {"Zone %d: %sin use, counted=%d\n", 148},
+ {"not ", 149},
+ {"Set", 150},
+ {"%s is clean, no check.\n", 151},
+ {"Forcing filesystem check on %s.\n", 152},
+ {"Filesystem on %s is dirty, needs checking.\n", 153},
+ {"\
+\n\
+%6ld inodes used (%ld%%)\n", 154},
+ {"%6ld zones used (%ld%%)\n", 155},
+ {"\
+\n\
+%6d regular files\n\
+%6d directories\n\
+%6d character device files\n\
+%6d block device files\n\
+%6d links\n\
+%6d symbolic links\n\
+------\n\
+%6d files\n", 156},
+ {"\
+----------------------------\n\
+FILE SYSTEM HAS BEEN CHANGED\n\
+----------------------------\n", 157},
+ {"Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n", 158},
+ {"%s: Out of memory!\n", 159},
+ {"mkfs version ", 160},
+ {"Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n", 161},
+ {"%s is mounted; will not make a filesystem here!", 162},
+ {"seek to boot block failed in write_tables", 163},
+ {"unable to clear boot sector", 164},
+ {"seek failed in write_tables", 165},
+ {"unable to write super-block", 166},
+ {"unable to write inode map", 167},
+ {"unable to write zone map", 168},
+ {"unable to write inodes", 169},
+ {"seek failed in write_block", 170},
+ {"write failed in write_block", 171},
+ {"too many bad blocks", 172},
+ {"not enough good blocks", 173},
+ {"unable to allocate buffers for maps", 174},
+ {"unable to allocate buffer for inodes", 175},
+ {"\
+Maxsize=%ld\n\
+\n", 176},
+ {"seek failed during testing of blocks", 177},
+ {"Weird values in do_check: probably bugs\n", 178},
+ {"seek failed in check_blocks", 179},
+ {"bad blocks before data-area: cannot make fs", 180},
+ {"%d bad blocks\n", 181},
+ {"one bad block\n", 182},
+ {"can't open file of bad blocks", 183},
+ {"bad inode size", 184},
+ {"%s: not compiled with minix v2 support\n", 185},
+ {"strtol error: number of blocks not specified", 186},
+ {"unable to open %s", 187},
+ {"unable to stat %s", 188},
+ {"will not try to make filesystem on '%s'", 189},
+ {"Assuming pages of size %d\n", 190},
+ {"one bad page\n", 191},
+ {"%d bad pages\n", 192},
+ {"%s: error: Nowhere to set up swap on?\n", 193},
+ {"%s: error: size %ld is larger than device size %d\n", 194},
+ {"%s: error: unknown version %d\n", 195},
+ {"%s: error: swap area needs to be at least %ldkB\n", 196},
+ {"%s: warning: truncating swap area to %ldkB\n", 197},
+ {"\
+%s: Device '%s' contains a valid Sun disklabel.\n\
+This probably means creating v0 swap would destroy your partition table\n\
+No swap created. If you really want to create swap v0 on that device, use\n\
+the -f option to force it.\n", 198},
+ {"Setting up swapspace version %d, size = %ld bytes\n", 199},
+ {"Invalid number: %s\n", 200},
+ {"Syntax error: '%s'\n", 201},
+ {"No such parameter set: '%s'\n", 202},
+ {"usage: %s [ -p ] dev name\n", 203},
+ {"\
+ %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n", 204},
+ {" %s [ -c | -y | -n | -d ] dev\n", 205},
+ {" %s [ -c | -y | -n ] dev\n", 206},
+ {"Unusable", 207},
+ {"Free Space", 208},
+ {"Linux ext2", 209},
+ {"Linux", 210},
+ {"OS/2 HPFS", 211},
+ {"OS/2 IFS", 212},
+ {"NTFS", 213},
+ {"Disk has been changed.\n", 214},
+ {"Reboot the system to ensure the partition table is correctly updated.\n", 215},
+ {"\
+\n\
+WARNING: If you have created or modified any\n\
+DOS 6.x partitions, please see the cfdisk manual\n\
+page for additional information.\n", 216},
+ {"FATAL ERROR", 217},
+ {"Press any key to exit cfdisk", 218},
+ {"Cannot seek on disk drive", 219},
+ {"Cannot read disk drive", 220},
+ {"Cannot write disk drive", 221},
+ {"Too many partitions", 222},
+ {"Partition begins before sector 0", 223},
+ {"Partition ends before sector 0", 224},
+ {"Partition begins after end-of-disk", 225},
+ {"Partition ends after end-of-disk", 226},
+ {"logical partitions not in disk order", 227},
+ {"logical partitions overlap", 228},
+ {"enlarged logical partitions overlap", 229},
+ {"\
+!!!! Internal error creating logical drive with no extended partition !!!!", 230},
+ {"\
+Cannot create logical drive here -- would create two extended partitions", 231},
+ {"Menu item too long. Menu may look odd.", 232},
+ {"Menu without direction. Defaulting horizontal.", 233},
+ {"Illegal key", 234},
+ {"Press a key to continue", 235},
+ {"Primary", 236},
+ {"Create a new primary partition", 237},
+ {"Logical", 238},
+ {"Create a new logical partition", 239},
+ {"Cancel", 240},
+ {"Don't create a partition", 241},
+ {"!!! Internal error !!!", 242},
+ {"Size (in MB): ", 243},
+ {"Beginning", 244},
+ {"Add partition at beginning of free space", 245},
+ {"End", 246},
+ {"Add partition at end of free space", 247},
+ {"No room to create the extended partition", 248},
+ {"Bad signature on partition table", 249},
+ {"You specified more cylinders than fit on disk", 250},
+ {"Cannot open disk drive", 251},
+ {"Opened disk read-only - you have no permission to write", 252},
+ {"Cannot get disk size", 253},
+ {"Bad primary partition", 254},
+ {"Bad logical partition", 255},
+ {"Warning!! This may destroy data on your disk!", 256},
+ {"Are you sure you want write the partition table to disk? (yes or no): ", 257},
+ {"no", 258},
+ {"Did not write partition table to disk", 259},
+ {"yes", 260},
+ {"Please enter `yes' or `no'", 261},
+ {"Writing partition table to disk...", 262},
+ {"Wrote partition table to disk", 263},
+ {"\
+Wrote partition table, but re-read table failed. Reboot to update table.", 264},
+ {"\
+Not precisely one primary partition is bootable. DOS MBR cannot boot this.", 265},
+ {"Enter filename or press RETURN to display on screen: ", 266},
+ {"Cannot open file '%s'", 267},
+ {"Disk Drive: %s\n", 268},
+ {"Sector 0:\n", 269},
+ {"Sector %d:\n", 270},
+ {" None ", 271},
+ {" Pri/Log", 272},
+ {" Primary", 273},
+ {" Logical", 274},
+ {"Unknown", 275},
+ {"Boot (%02X)", 276},
+ {"Unknown (%02X)", 277},
+ {"None (%02X)", 278},
+ {"Partition Table for %s\n", 279},
+ {" First Last\n", 280},
+ {"\
+ # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n", 281},
+ {"\
+-- ------- -------- --------- ------ --------- ---------------------- \
+---------\n", 282},
+ {" ---Starting--- ----Ending---- Start Number of\n", 283},
+ {" # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n", 284},
+ {"-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n", 285},
+ {"Raw", 286},
+ {"Print the table using raw data format", 287},
+ {"Sectors", 288},
+ {"Print the table ordered by sectors", 289},
+ {"Table", 290},
+ {"Just print the partition table", 291},
+ {"Don't print the table", 292},
+ {"Help Screen for cfdisk", 293},
+ {"This is cfdisk, a curses based disk partitioning program, which", 294},
+ {"allows you to create, delete and modify partitions on your hard", 295},
+ {"disk drive.", 296},
+ {"Copyright (C) 1994-1999 Kevin E. Martin & aeb", 297},
+ {"Command Meaning", 298},
+ {"------- -------", 299},
+ {" b Toggle bootable flag of the current partition", 300},
+ {" d Delete the current partition", 301},
+ {" g Change cylinders, heads, sectors-per-track parameters", 302},
+ {" WARNING: This option should only be used by people who", 303},
+ {" know what they are doing.", 304},
+ {" h Print this screen", 305},
+ {" m Maximize disk usage of the current partition", 306},
+ {" Note: This may make the partition incompatible with", 307},
+ {" DOS, OS/2, ...", 308},
+ {" n Create new partition from free space", 309},
+ {" p Print partition table to the screen or to a file", 310},
+ {" There are several different formats for the partition", 311},
+ {" that you can choose from:", 312},
+ {" r - Raw data (exactly what would be written to disk)", 313},
+ {" s - Table ordered by sectors", 314},
+ {" t - Table in raw format", 315},
+ {" q Quit program without writing partition table", 316},
+ {" t Change the filesystem type", 317},
+ {" u Change units of the partition size display", 318},
+ {" Rotates through MB, sectors and cylinders", 319},
+ {" W Write partition table to disk (must enter upper case W)", 320},
+ {" Since this might destroy data on the disk, you must", 321},
+ {" either confirm or deny the write by entering `yes' or", 322},
+ {" `no'", 323},
+ {"Up Arrow Move cursor to the previous partition", 324},
+ {"Down Arrow Move cursor to the next partition", 325},
+ {"CTRL-L Redraws the screen", 326},
+ {" ? Print this screen", 327},
+ {"Note: All of the commands can be entered with either upper or lower", 328},
+ {"case letters (except for Writes).", 329},
+ {"Cylinders", 330},
+ {"Change cylinder geometry", 331},
+ {"Heads", 332},
+ {"Change head geometry", 333},
+ {"Change sector geometry", 334},
+ {"Done", 335},
+ {"Done with changing geometry", 336},
+ {"Enter the number of cylinders: ", 337},
+ {"Illegal cylinders value", 338},
+ {"Enter the number of heads: ", 339},
+ {"Illegal heads value", 340},
+ {"Enter the number of sectors per track: ", 341},
+ {"Illegal sectors value", 342},
+ {"Enter filesystem type: ", 343},
+ {"Cannot change FS Type to empty", 344},
+ {"Cannot change FS Type to extended", 345},
+ {"Boot", 346},
+ {"Unk(%02X)", 347},
+ {", NC", 348},
+ {"NC", 349},
+ {"Pri/Log", 350},
+ {"Disk Drive: %s", 351},
+ {"Size: %lld bytes", 352},
+ {"Heads: %d Sectors per Track: %d Cylinders: %d", 353},
+ {"Name", 354},
+ {"Flags", 355},
+ {"Part Type", 356},
+ {"FS Type", 357},
+ {"[Label]", 358},
+ {" Sectors", 359},
+ {"Size (MB)", 360},
+ {"Size (GB)", 361},
+ {"Bootable", 362},
+ {"Toggle bootable flag of the current partition", 363},
+ {"Delete", 364},
+ {"Delete the current partition", 365},
+ {"Geometry", 366},
+ {"Change disk geometry (experts only)", 367},
+ {"Help", 368},
+ {"Print help screen", 369},
+ {"Maximize", 370},
+ {"Maximize disk usage of the current partition (experts only)", 371},
+ {"New", 372},
+ {"Create new partition from free space", 373},
+ {"Print", 374},
+ {"Print partition table to the screen or to a file", 375},
+ {"Quit", 376},
+ {"Quit program without writing partition table", 377},
+ {"Type", 378},
+ {"Change the filesystem type (DOS, Linux, OS/2 and so on)", 379},
+ {"Units", 380},
+ {"Change units of the partition size display (MB, sect, cyl)", 381},
+ {"Write", 382},
+ {"Write partition table to disk (this might destroy data)", 383},
+ {"Cannot make this partition bootable", 384},
+ {"Cannot delete an empty partition", 385},
+ {"Cannot maximize this partition", 386},
+ {"This partition is unusable", 387},
+ {"This partition is already in use", 388},
+ {"Cannot change the type of an empty partition", 389},
+ {"No more partitions", 390},
+ {"Illegal command", 391},
+ {"Copyright (C) 1994-1999 Kevin E. Martin & aeb\n", 392},
+ {"\
+\n\
+Usage:\n\
+Print version:\n\
+ %s -v\n\
+Print partition table:\n\
+ %s -P {r|s|t} [options] device\n\
+Interactive use:\n\
+ %s [options] device\n\
+\n\
+Options:\n\
+-a: Use arrow instead of highlighting;\n\
+-z: Start with a zero partition table, instead of reading the pt from disk;\n\
+-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n\
+ the number of heads and the number of sectors/track.\n\
+\n", 393},
+ {"\
+Usage: fdisk [-b SSZ] [-u] DISK Change partition table\n\
+ fdisk -l [-b SSZ] [-u] DISK List partition table(s)\n\
+ fdisk -s PARTITION Give partition size(s) in blocks\n\
+ fdisk -v Give fdisk version\n\
+Here DISK is something like /dev/hdb or /dev/sda\n\
+and PARTITION is something like /dev/hda7\n\
+-u: give Start and End in sector (instead of cylinder) units\n\
+-b 2048: (for certain MO drives) use 2048-byte sectors\n", 394},
+ {"\
+Usage: fdisk [-l] [-b SSZ] [-u] device\n\
+E.g.: fdisk /dev/hda (for the first IDE disk)\n\
+ or: fdisk /dev/sdc (for the third SCSI disk)\n\
+ or: fdisk /dev/eda (for the first PS/2 ESDI drive)\n\
+ or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)\n\
+ ...\n", 395},
+ {"A disk block device is needed.\n", 396},
+ {"\
+Given name does not refer to a partition,\n\
+or maybe not even to a block device.\n", 397},
+ {"Unable to open %s\n", 398},
+ {"Unable to read %s\n", 399},
+ {"Unable to seek on %s\n", 400},
+ {"Unable to write %s\n", 401},
+ {"BLKGETSIZE ioctl failed on %s\n", 402},
+ {"Unable to allocate any more memory\n", 403},
+ {"Fatal error\n", 404},
+ {"Command action", 405},
+ {" a toggle a read only flag", 406},
+ {" b edit bsd disklabel", 407},
+ {" c toggle the mountable flag", 408},
+ {" d delete a partition", 409},
+ {" l list known partition types", 410},
+ {" m print this menu", 411},
+ {" n add a new partition", 412},
+ {" o create a new empty DOS partition table", 413},
+ {" p print the partition table", 414},
+ {" q quit without saving changes", 415},
+ {" s create a new empty Sun disklabel", 416},
+ {" t change a partition's system id", 417},
+ {" u change display/entry units", 418},
+ {" v verify the partition table", 419},
+ {" w write table to disk and exit", 420},
+ {" x extra functionality (experts only)", 421},
+ {" a select bootable partition", 422},
+ {" b edit bootfile entry", 423},
+ {" c select sgi swap partition", 424},
+ {" a toggle a bootable flag", 425},
+ {" c toggle the dos compatibility flag", 426},
+ {" a change number of alternate cylinders", 427},
+ {" c change number of cylinders", 428},
+ {" d print the raw data in the partition table", 429},
+ {" e change number of extra sectors per cylinder", 430},
+ {" h change number of heads", 431},
+ {" i change interleave factor", 432},
+ {" o change rotation speed (rpm)", 433},
+ {" r return to main menu", 434},
+ {" s change number of sectors/track", 435},
+ {" y change number of physical cylinders", 436},
+ {" b move beginning of data in a partition", 437},
+ {" e list extended partitions", 438},
+ {" g create an IRIX partition table", 439},
+ {"You must set", 440},
+ {"heads", 441},
+ {"sectors", 442},
+ {"cylinders", 443},
+ {"\
+%s%s.\n\
+You can do this from the extra functions menu.\n", 444},
+ {" and ", 445},
+ {"Bad offset in primary extended partition\n", 446},
+ {"Warning: deleting partitions after %d\n", 447},
+ {"Warning: extra link pointer in partition table %d\n", 448},
+ {"Warning: ignoring extra data in partition table %d\n", 449},
+ {"\
+Building a new DOS disklabel. Changes will remain in memory only,\n\
+until you decide to write them. After that, of course, the previous\n\
+content won't be recoverable.\n\
+\n", 450},
+ {"You will not be able to write the partition table.\n", 451},
+ {"Note: sector size is %d (not %d)\n", 452},
+ {"\
+Device contains neither a valid DOS partition table, nor Sun or SGI \
+disklabel\n", 453},
+ {"Internal error\n", 454},
+ {"Ignoring extra extended partition %d\n", 455},
+ {"\
+Warning: invalid flag 0x%04x of partition table %d will be corrected by \
+w(rite)\n", 456},
+ {"\
+\n\
+got EOF thrice - exiting..\n", 457},
+ {"Hex code (type L to list codes): ", 458},
+ {"%s (%d-%d, default %d): ", 459},
+ {"Using default value %d\n", 460},
+ {"Value out of range.\n", 461},
+ {"Partition number", 462},
+ {"Warning: partition %d has empty type\n", 463},
+ {"cylinder", 464},
+ {"sector", 465},
+ {"Changing display/entry units to %s\n", 466},
+ {"WARNING: Partition %d is an extended partition\n", 467},
+ {"DOS Compatibility flag is set\n", 468},
+ {"DOS Compatibility flag is not set\n", 469},
+ {"Partition %d does not exist yet!\n", 470},
+ {"\
+Type 0 means free space to many systems\n\
+(but not to Linux). Having partitions of\n\
+type 0 is probably unwise. You can delete\n\
+a partition using the `d' command.\n", 471},
+ {"\
+You cannot change a partition into an extended one or vice versa\n\
+Delete it first.\n", 472},
+ {"\
+Consider leaving partition 3 as Whole disk (5),\n\
+as SunOS/Solaris expects it and even Linux likes it.\n\
+\n", 473},
+ {"\
+Consider leaving partition 9 as volume header (0),\n\
+and partition 11 as entire volume (6)as IRIX expects it.\n\
+\n", 474},
+ {"Changed system type of partition %d to %x (%s)\n", 475},
+ {"Partition %d has different physical/logical beginnings (non-Linux?):\n", 476},
+ {" phys=(%d, %d, %d) ", 477},
+ {"logical=(%d, %d, %d)\n", 478},
+ {"Partition %d has different physical/logical endings:\n", 479},
+ {"Partition %i does not start on cylinder boundary:\n", 480},
+ {"should be (%d, %d, 1)\n", 481},
+ {"Partition %i does not end on cylinder boundary:\n", 482},
+ {"should be (%d, %d, %d)\n", 483},
+ {"\
+\n\
+Disk %s: %d heads, %d sectors, %d cylinders\n\
+Units = %s of %d * %d bytes\n\
+\n", 484},
+ {"%*s Boot Start End Blocks Id System\n", 485},
+ {"Device", 486},
+ {"\
+\n\
+Disk %s: %d heads, %d sectors, %d cylinders\n\
+\n", 487},
+ {"Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n", 488},
+ {"Warning: partition %d contains sector 0\n", 489},
+ {"Partition %d: head %d greater than maximum %d\n", 490},
+ {"Partition %d: sector %d greater than maximum %d\n", 491},
+ {"Partitions %d: cylinder %d greater than maximum %d\n", 492},
+ {"Partition %d: previous sectors %d disagrees with total %d\n", 493},
+ {"Warning: bad start-of-data in partition %d\n", 494},
+ {"Warning: partition %d overlaps partition %d.\n", 495},
+ {"Warning: partition %d is empty\n", 496},
+ {"Logical partition %d not entirely in partition %d\n", 497},
+ {"Total allocated sectors %d greater than the maximum %d\n", 498},
+ {"%d unallocated sectors\n", 499},
+ {"Partition %d is already defined. Delete it before re-adding it.\n", 500},
+ {"First %s", 501},
+ {"Sector %d is already allocated\n", 502},
+ {"No free sectors available\n", 503},
+ {"Last %s or +size or +sizeM or +sizeK", 504},
+ {"Warning: partition %d has an odd number of sectors.\n", 505},
+ {"The maximum number of partitions has been created\n", 506},
+ {"You must delete some partition and add an extended partition first\n", 507},
+ {"\
+Command action\n\
+ %s\n\
+ p primary partition (1-4)\n", 508},
+ {"l logical (5 or over)", 509},
+ {"e extended", 510},
+ {"Invalid partition number for type `%c'\n", 511},
+ {"\
+The partition table has been altered!\n\
+\n", 512},
+ {"Calling ioctl() to re-read partition table.\n", 513},
+ {"Syncing disks.\n", 514},
+ {"\
+Re-read table failed with error %d: %s.\n\
+Reboot your system to ensure the partition table is updated.\n", 515},
+ {"\
+\n\
+WARNING: If you have created or modified any DOS 6.x\n\
+partitions, please see the fdisk manual page for additional\n\
+information.\n", 516},
+ {"Device: %s\n", 517},
+ {"Partition %d has no data area\n", 518},
+ {"New beginning of data", 519},
+ {"Expert command (m for help): ", 520},
+ {"Number of cylinders", 521},
+ {"Number of heads", 522},
+ {"Number of sectors", 523},
+ {"Warning: setting sector offset for DOS compatiblity\n", 524},
+ {"Disk %s doesn't contain a valid partition table\n", 525},
+ {"Cannot open %s\n", 526},
+ {"This kernel finds the sector size itself - -b option ignored\n", 527},
+ {"\
+Warning: the -b (set sector size) option should be used with one specified \
+device\n", 528},
+ {"Command (m for help): ", 529},
+ {"\
+\n\
+The current boot file is: %s\n", 530},
+ {"Please enter the name of the new boot file: ", 531},
+ {"Boot file unchanged\n", 532},
+ {"\
+\n\
+\tSorry, no experts menu for SGI partition tables available.\n\
+\n", 533},
+ {"\
+\n\
+\tThere is a valid AIX label on this disk.\n\
+\tUnfortunately Linux cannot handle these\n\
+\tdisks at the moment. Nevertheless some\n\
+\tadvice:\n\
+\t1. fdisk will destroy its contents on write.\n\
+\t2. Be sure that this disk is NOT a still vital\n\
+\t part of a volume group. (Otherwise you may\n\
+\t erase the other disks as well, if unmirrored.)\n\
+\t3. Before deleting this physical volume be sure\n\
+\t to remove the disk logically from your AIX\n\
+\t machine. (Otherwise you become an AIXpert).", 534},
+ {"\
+\n\
+BSD label for device: %s\n", 535},
+ {" d delete a BSD partition", 536},
+ {" e edit drive data", 537},
+ {" i install bootstrap", 538},
+ {" l list known filesystem types", 539},
+ {" n add a new BSD partition", 540},
+ {" p print BSD partition table", 541},
+ {" s show complete disklabel", 542},
+ {" t change a partition's filesystem id", 543},
+ {" w write disklabel to disk", 544},
+ {" x link BSD partition to non-BSD partition", 545},
+ {"Partition %s%d has invalid starting sector 0.\n", 546},
+ {"Reading disklabel of %s%d at sector %d.\n", 547},
+ {"There is no *BSD partition on %s.\n", 548},
+ {"BSD disklabel command (m for help): ", 549},
+ {"type: %s\n", 550},
+ {"type: %d\n", 551},
+ {"disk: %.*s\n", 552},
+ {"label: %.*s\n", 553},
+ {"flags:", 554},
+ {" removable", 555},
+ {" ecc", 556},
+ {" badsect", 557},
+ {"bytes/sector: %ld\n", 558},
+ {"sectors/track: %ld\n", 559},
+ {"tracks/cylinder: %ld\n", 560},
+ {"sectors/cylinder: %ld\n", 561},
+ {"cylinders: %ld\n", 562},
+ {"rpm: %d\n", 563},
+ {"interleave: %d\n", 564},
+ {"trackskew: %d\n", 565},
+ {"cylinderskew: %d\n", 566},
+ {"headswitch: %ld\t\t# milliseconds\n", 567},
+ {"track-to-track seek: %ld\t# milliseconds\n", 568},
+ {"drivedata: ", 569},
+ {"\
+\n\
+%d partitions:\n", 570},
+ {"# size offset fstype [fsize bsize cpg]\n", 571},
+ {"Writing disklabel to %s%d.\n", 572},
+ {"Writing disklabel to %s.\n", 573},
+ {"%s%d contains no disklabel.\n", 574},
+ {"%s contains no disklabel.\n", 575},
+ {"Do you want to create a disklabel? (y/n) ", 576},
+ {"bytes/sector", 577},
+ {"sectors/track", 578},
+ {"tracks/cylinder", 579},
+ {"sectors/cylinder", 580},
+ {"Must be <= sectors/track * tracks/cylinder (default).\n", 581},
+ {"rpm", 582},
+ {"interleave", 583},
+ {"trackskew", 584},
+ {"cylinderskew", 585},
+ {"headswitch", 586},
+ {"track-to-track seek", 587},
+ {"Bootstrap: %sboot -> boot%s (%s): ", 588},
+ {"Bootstrap overlaps with disk label!\n", 589},
+ {"Bootstrap installed on %s%d.\n", 590},
+ {"Bootstrap installed on %s.\n", 591},
+ {"Partition (a-%c): ", 592},
+ {"This partition already exists.\n", 593},
+ {"Warning: too many partitions (%d, maximum is %d).\n", 594},
+ {"\
+\n\
+Syncing disks.\n", 595},
+ {"SGI volhdr", 596},
+ {"SGI trkrepl", 597},
+ {"SGI secrepl", 598},
+ {"SGI raw", 599},
+ {"SGI bsd", 600},
+ {"SGI sysv", 601},
+ {"SGI volume", 602},
+ {"SGI efs", 603},
+ {"SGI lvol", 604},
+ {"SGI rlvol", 605},
+ {"SGI xfs", 606},
+ {"SGI xlvol", 607},
+ {"SGI rxlvol", 608},
+ {"Linux swap", 609},
+ {"Linux native", 610},
+ {"\
+According to MIPS Computer Systems, Inc the Label must not contain more than \
+512 bytes\n", 611},
+ {"Detected sgi disklabel with wrong checksum.\n", 612},
+ {"\
+\n\
+Disk %s (SGI disk label): %d heads, %d sectors\n\
+%d cylinders, %d physical cylinders\n\
+%d extra sects/cyl, interleave %d:1\n\
+%s\n\
+Units = %s of %d * 512 bytes\n\
+\n", 613},
+ {"\
+\n\
+Disk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n\
+Units = %s of %d * 512 bytes\n\
+\n", 614},
+ {"\
+----- partitions -----\n\
+%*s Info Start End Sectors Id System\n", 615},
+ {"\
+----- bootinfo -----\n\
+Bootfile: %s\n\
+----- directory entries -----\n", 616},
+ {"%2d: %-10s sector%5u size%8u\n", 617},
+ {"\
+\n\
+Invalid Bootfile!\n\
+\tThe bootfile must be an absolute non-zero pathname,\n\
+\te.g. \"/unix\" or \"/unix.save\".\n", 618},
+ {"\
+\n\
+\tName of Bootfile too long: 16 bytes maximum.\n", 619},
+ {"\
+\n\
+\tBootfile must have a fully qualified pathname.\n", 620},
+ {"\
+\n\
+\tBe aware, that the bootfile is not checked for existence.\n\
+\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n", 621},
+ {"\
+\n\
+\tBootfile is changed to \"%s\".\n", 622},
+ {"More than one entire disk entry present.\n", 623},
+ {"No partitions defined\n", 624},
+ {"IRIX likes when Partition 11 covers the entire disk.\n", 625},
+ {"\
+The entire disk partition should start at block 0,\n\
+not at diskblock %d.\n", 626},
+ {"\
+The entire disk partition is only %d diskblock large,\n\
+but the disk is %d diskblocks long.\n", 627},
+ {"One Partition (#11) should cover the entire disk.\n", 628},
+ {"Partition %d does not start on cylinder boundary.\n", 629},
+ {"Partition %d does not end on cylinder boundary.\n", 630},
+ {"The Partition %d and %d overlap by %d sectors.\n", 631},
+ {"Unused gap of %8d sectors - sectors %8d-%d\n", 632},
+ {"\
+\n\
+The boot partition does not exist.\n", 633},
+ {"\
+\n\
+The swap partition does not exist.\n", 634},
+ {"\
+\n\
+The swap partition has no swap type.\n", 635},
+ {"\tYou have chosen an unusual boot file name.\n", 636},
+ {"Sorry You may change the Tag of non-empty partitions.\n", 637},
+ {"\
+It is highly recommended that the partition at offset 0\n\
+is of type \"SGI volhdr\", the IRIX system will rely on it to\n\
+retrieve from its directory standalone tools like sash and fx.\n\
+Only the \"SGI volume\" entire disk section may violate this.\n\
+Type YES if you are sure about tagging this partition differently.\n", 638},
+ {"Do You know, You got a partition overlap on the disk?\n", 639},
+ {"Attempting to generate entire disk entry automatically.\n", 640},
+ {"The entire disk is already covered with partitions.\n", 641},
+ {"You got a partition overlap on the disk. Fix it first!\n", 642},
+ {"\
+It is highly recommended that eleventh partition\n\
+covers the entire disk and is of type `SGI volume'\n", 643},
+ {"You will get a partition overlap on the disk. Fix it first!\n", 644},
+ {" Last %s", 645},
+ {"\
+Building a new SGI disklabel. Changes will remain in memory only,\n\
+until you decide to write them. After that, of course, the previous\n\
+content will be unrecoverable lost.\n\
+\n", 646},
+ {"Trying to keep parameters of partition %d.\n", 647},
+ {"ID=%02x\tSTART=%d\tLENGTH=%d\n", 648},
+ {"Empty", 649},
+ {"SunOS root", 650},
+ {"SunOS swap", 651},
+ {"SunOS usr", 652},
+ {"Whole disk", 653},
+ {"SunOS stand", 654},
+ {"SunOS var", 655},
+ {"SunOS home", 656},
+ {"\
+Detected sun disklabel with wrong checksum.\n\
+Probably you'll have to set all the values,\n\
+e.g. heads, sectors, cylinders and partitions\n\
+or force a fresh label (s command in main menu)\n", 657},
+ {"Autoconfigure found a %s%s%s\n", 658},
+ {"\
+Building a new sun disklabel. Changes will remain in memory only,\n\
+until you decide to write them. After that, of course, the previous\n\
+content won't be recoverable.\n\
+\n", 659},
+ {"\
+Drive type\n\
+ ? auto configure\n\
+ 0 custom (with hardware detected defaults)", 660},
+ {"Select type (? for auto, 0 for custom): ", 661},
+ {"Autoconfigure failed.\n", 662},
+ {"Sectors/track", 663},
+ {"Alternate cylinders", 664},
+ {"Physical cylinders", 665},
+ {"Rotation speed (rpm)", 666},
+ {"Interleave factor", 667},
+ {"Extra sectors per cylinder", 668},
+ {"You may change all the disk params from the x menu", 669},
+ {"3,5\" floppy", 670},
+ {"Linux custom", 671},
+ {"Partition %d doesn't end on cylinder boundary\n", 672},
+ {"Partition %d overlaps with others in sectors %d-%d\n", 673},
+ {"Unused gap - sectors 0-%d\n", 674},
+ {"Unused gap - sectors %d-%d\n", 675},
+ {"\
+Other partitions already cover the whole disk.\n\
+Delete some/shrink them before retry.\n", 676},
+ {"\
+You haven't covered the whole disk with the 3rd partition, but your value\n\
+%d %s covers some other partition. Your entry has been changed\n\
+to %d %s\n", 677},
+ {"\
+If you want to maintain SunOS/Solaris compatibility, consider leaving this\n\
+partition as Whole disk (5), starting at 0, with %u sectors\n", 678},
+ {"\
+It is highly recommended that the partition at offset 0\n\
+is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n\
+there may destroy your partition table and bootblock.\n\
+Type YES if you're very sure you would like that partition\n\
+tagged with 82 (Linux swap): ", 679},
+ {"\
+\n\
+Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n\
+%d cylinders, %d alternate cylinders, %d physical cylinders\n\
+%d extra sects/cyl, interleave %d:1\n\
+%s\n\
+Units = %s of %d * 512 bytes\n\
+\n", 680},
+ {"\
+\n\
+Disk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n\
+Units = %s of %d * 512 bytes\n\
+\n", 681},
+ {"%*s Flag Start End Blocks Id System\n", 682},
+ {"Number of alternate cylinders", 683},
+ {"Number of physical cylinders", 684},
+ {"FAT12", 685},
+ {"XENIX root", 686},
+ {"XENIX usr", 687},
+ {"FAT16 <32M", 688},
+ {"Extended", 689},
+ {"FAT16", 690},
+ {"HPFS/NTFS", 691},
+ {"AIX", 692},
+ {"AIX bootable", 693},
+ {"OS/2 Boot Manager", 694},
+ {"Win95 FAT32", 695},
+ {"Win95 FAT32 (LBA)", 696},
+ {"Win95 FAT16 (LBA)", 697},
+ {"Win95 Ext'd (LBA)", 698},
+ {"OPUS", 699},
+ {"Hidden FAT12", 700},
+ {"Compaq diagnostics", 701},
+ {"Hidden FAT16 <32M", 702},
+ {"Hidden FAT16", 703},
+ {"Hidden HPFS/NTFS", 704},
+ {"AST Windows swapfile", 705},
+ {"Hidden Win95 FAT32", 706},
+ {"Hidden Win95 FAT32 (LBA)", 707},
+ {"Hidden Win95 FAT16 (LBA)", 708},
+ {"NEC DOS", 709},
+ {"PartitionMagic recovery", 710},
+ {"Venix 80286", 711},
+ {"PPC PReP Boot", 712},
+ {"SFS", 713},
+ {"QNX4.x", 714},
+ {"QNX4.x 2nd part", 715},
+ {"QNX4.x 3rd part", 716},
+ {"OnTrack DM", 717},
+ {"OnTrack DM6 Aux1", 718},
+ {"CP/M", 719},
+ {"OnTrack DM6 Aux3", 720},
+ {"OnTrackDM6", 721},
+ {"EZ-Drive", 722},
+ {"Golden Bow", 723},
+ {"Priam Edisk", 724},
+ {"SpeedStor", 725},
+ {"GNU HURD or SysV", 726},
+ {"Novell Netware 286", 727},
+ {"Novell Netware 386", 728},
+ {"DiskSecure Multi-Boot", 729},
+ {"PC/IX", 730},
+ {"Old Minix", 731},
+ {"Minix / old Linux", 732},
+ {"OS/2 hidden C: drive", 733},
+ {"Linux extended", 734},
+ {"NTFS volume set", 735},
+ {"Amoeba", 736},
+ {"Amoeba BBT", 737},
+ {"IBM Thinkpad hibernation", 738},
+ {"BSD/386", 739},
+ {"OpenBSD", 740},
+ {"NeXTSTEP", 741},
+ {"BSDI fs", 742},
+ {"BSDI swap", 743},
+ {"DRDOS/sec (FAT-12)", 744},
+ {"DRDOS/sec (FAT-16 < 32M)", 745},
+ {"DRDOS/sec (FAT-16)", 746},
+ {"Syrinx", 747},
+ {"CP/M / CTOS / ...", 748},
+ {"DOS access", 749},
+ {"DOS R/O", 750},
+ {"BeOS fs", 751},
+ {"DOS secondary", 752},
+ {"Linux raid autodetect", 753},
+ {"LANstep", 754},
+ {"BBT", 755},
+ {"seek error on %s - cannot seek to %lu\n", 756},
+ {"seek error: wanted 0x%08x%08x, got 0x%08x%08x\n", 757},
+ {"out of memory - giving up\n", 758},
+ {"read error on %s - cannot read sector %lu\n", 759},
+ {"ERROR: sector %lu does not have an msdos signature\n", 760},
+ {"write error on %s - cannot write sector %lu\n", 761},
+ {"cannot open partition sector save file (%s)\n", 762},
+ {"write error on %s\n", 763},
+ {"cannot stat partition restore file (%s)\n", 764},
+ {"partition restore file has wrong size - not restoring\n", 765},
+ {"out of memory?\n", 766},
+ {"cannot open partition restore file (%s)\n", 767},
+ {"error reading %s\n", 768},
+ {"cannot open device %s for writing\n", 769},
+ {"error writing sector %lu on %s\n", 770},
+ {"\
+Warning: start=%d - this looks like a partition rather than\n\
+the entire disk. Using fdisk on it is probably meaningless.\n\
+[Use the --force option if you really want this]\n", 771},
+ {"Warning: HDIO_GETGEO says that there are %d heads\n", 772},
+ {"Warning: HDIO_GETGEO says that there are %d sectors\n", 773},
+ {"Warning: HDIO_GETGEO says that there are %d cylinders\n", 774},
+ {"Disk %s: cannot get geometry\n", 775},
+ {"\
+Warning: unlikely number of sectors (%d) - usually at most 63\n\
+This will give problems with all software that uses C/H/S addressing.\n", 776},
+ {"\
+\n\
+Disk %s: %lu cylinders, %lu heads, %lu sectors/track\n", 777},
+ {"\
+%s of partition %s has impossible value for head: %d (should be in 0-%d)\n", 778},
+ {"\
+%s of partition %s has impossible value for sector: %d (should be in 1-%d)\n", 779},
+ {"\
+%s of partition %s has impossible value for cylinders: %d (should be in \
+0-%d)\n", 780},
+ {"\
+Id Name\n\
+\n", 781},
+ {"Re-reading the partition table ...\n", 782},
+ {"\
+The command to re-read the partition table failed\n\
+Reboot your system now, before using mkfs\n", 783},
+ {"Error closing %s\n", 784},
+ {"%s: no such partition\n", 785},
+ {"unrecognized format - using sectors\n", 786},
+ {"# partition table of %s\n", 787},
+ {"\
+unit: sectors\n\
+\n", 788},
+ {"unimplemented format - using %s\n", 789},
+ {"\
+Units = cylinders of %lu bytes, blocks of 1024 bytes, counting from %d\n\
+\n", 790},
+ {" Device Boot Start End #cyls #blocks Id System\n", 791},
+ {"\
+Units = sectors of 512 bytes, counting from %d\n\
+\n", 792},
+ {" Device Boot Start End #sectors Id System\n", 793},
+ {"\
+Units = blocks of 1024 bytes, counting from %d\n\
+\n", 794},
+ {" Device Boot Start End #blocks Id System\n", 795},
+ {"\
+Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from %d\n\
+\n", 796},
+ {" Device Boot Start End MB #blocks Id System\n", 797},
+ {" start=%9lu", 798},
+ {", size=%8lu", 799},
+ {", Id=%2x", 800},
+ {", bootable", 801},
+ {"\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 802},
+ {"\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 803},
+ {"partition ends on cylinder %ld, beyond the end of the disk\n", 804},
+ {"No partitions found\n", 805},
+ {"\
+Warning: The first partition looks like it was made\n\
+ for C/H/S=*/%ld/%ld (instead of %ld/%ld/%ld).\n\
+For this listing I'll assume that geometry.\n", 806},
+ {"no partition table present.\n", 807},
+ {"strange, only %d partitions defined.\n", 808},
+ {"Warning: partition %s has size 0 but is not marked Empty\n", 809},
+ {"Warning: partition %s has size 0 and is bootable\n", 810},
+ {"Warning: partition %s has size 0 and nonzero start\n", 811},
+ {"Warning: partition %s ", 812},
+ {"is not contained in partition %s\n", 813},
+ {"Warning: partitions %s ", 814},
+ {"and %s overlap\n", 815},
+ {"Warning: partition %s contains part of ", 816},
+ {"the partition table (sector %lu),\n", 817},
+ {"and will destroy it when filled\n", 818},
+ {"Warning: partition %s starts at sector 0\n", 819},
+ {"Warning: partition %s extends past end of disk\n", 820},
+ {"Among the primary partitions, at most one can be extended\n", 821},
+ {" (although this is not a problem under Linux)\n", 822},
+ {"Warning: partition %s does not start at a cylinder boundary\n", 823},
+ {"Warning: partition %s does not end at a cylinder boundary\n", 824},
+ {"\
+Warning: more than one primary partition is marked bootable (active)\n\
+This does not matter for LILO, but the DOS MBR will not boot this disk.\n", 825},
+ {"\
+Warning: usually one can boot from primary partitions only\n\
+LILO disregards the `bootable' flag.\n", 826},
+ {"\
+Warning: no primary partition is marked bootable (active)\n\
+This does not matter for LILO, but the DOS MBR will not boot this disk.\n", 827},
+ {"\
+partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 828},
+ {"partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 829},
+ {"partition %s ends on cylinder %ld, beyond the end of the disk\n", 830},
+ {"too many partitions - ignoring those past nr (%d)\n", 831},
+ {"tree of partitions?\n", 832},
+ {"detected Disk Manager - unable to handle that\n", 833},
+ {"DM6 signature found - giving up\n", 834},
+ {"strange..., an extended partition of size 0?\n", 835},
+ {"strange..., a BSD partition of size 0?\n", 836},
+ {" %s: unrecognized partition\n", 837},
+ {"-n flag was given: Nothing changed\n", 838},
+ {"Failed saving the old sectors - aborting\n", 839},
+ {"Failed writing the partition on %s\n", 840},
+ {"long or incomplete input line - quitting\n", 841},
+ {"input error: `=' expected after %s field\n", 842},
+ {"input error: unexpected character %c after %s field\n", 843},
+ {"unrecognized input: %s\n", 844},
+ {"number too big\n", 845},
+ {"trailing junk after number\n", 846},
+ {"no room for partition descriptor\n", 847},
+ {"cannot build surrounding extended partition\n", 848},
+ {"too many input fields\n", 849},
+ {"No room for more\n", 850},
+ {"Illegal type\n", 851},
+ {"Warning: exceeds max allowable size (%lu)\n", 852},
+ {"Warning: empty partition\n", 853},
+ {"Warning: bad partition start (earliest %lu)\n", 854},
+ {"unrecognized bootable flag - choose - or *\n", 855},
+ {"partial c,h,s specification?\n", 856},
+ {"Extended partition not where expected\n", 857},
+ {"bad input\n", 858},
+ {"too many partitions\n", 859},
+ {"\
+Input in the following format; absent fields get a default value.\n\
+<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n\
+Usually you only need to specify <start> and <size> (and perhaps <type>).\n", 860},
+ {"version", 861},
+ {"Usage: %s [options] device ...\n", 862},
+ {"device: something like /dev/hda or /dev/sda", 863},
+ {"useful options:", 864},
+ {" -s [or --show-size]: list size of a partition", 865},
+ {" -c [or --id]: print or change partition Id", 866},
+ {" -l [or --list]: list partitions of each device", 867},
+ {" -d [or --dump]: idem, but in a format suitable for later input", 868},
+ {" -i [or --increment]: number cylinders etc. from 1 instead of from 0", 869},
+ {"\
+ -uS, -uB, -uC, -uM: accept/report in units of \
+sectors/blocks/cylinders/MB", 870},
+ {" -T [or --list-types]:list the known partition types", 871},
+ {" -D [or --DOS]: for DOS-compatibility: waste a little space", 872},
+ {" -R [or --re-read]: make kernel reread partition table", 873},
+ {" -N# : change only the partition with number #", 874},
+ {" -n : do not actually write to disk", 875},
+ {"\
+ -O file : save the sectors that will be overwritten to file", 876},
+ {" -I file : restore these sectors again", 877},
+ {" -v [or --version]: print version", 878},
+ {" -? [or --help]: print this message", 879},
+ {"dangerous options:", 880},
+ {" -g [or --show-geometry]: print the kernel's idea of the geometry", 881},
+ {"\
+ -x [or --show-extended]: also list extended partitions on output\n\
+ or expect descriptors for them on input", 882},
+ {"\
+ -L [or --Linux]: do not complain about things irrelevant for Linux", 883},
+ {" -q [or --quiet]: suppress warning messages", 884},
+ {" You can override the detected geometry using:", 885},
+ {" -C# [or --cylinders #]:set the number of cylinders to use", 886},
+ {" -H# [or --heads #]: set the number of heads to use", 887},
+ {" -S# [or --sectors #]: set the number of sectors to use", 888},
+ {"You can disable all consistency checking with:", 889},
+ {" -f [or --force]: do what I say, even if it is stupid", 890},
+ {"Usage:", 891},
+ {"%s device\t\t list active partitions on device\n", 892},
+ {"%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n", 893},
+ {"%s -An device\t activate partition n, inactivate the other ones\n", 894},
+ {"no command?\n", 895},
+ {"total: %d blocks\n", 896},
+ {"usage: sfdisk --print-id device partition-number\n", 897},
+ {"usage: sfdisk --change-id device partition-number Id\n", 898},
+ {"usage: sfdisk --id device partition-number [Id]\n", 899},
+ {"can specify only one device (except with -l or -s)\n", 900},
+ {"cannot open %s %s\n", 901},
+ {"read-write", 902},
+ {"for reading", 903},
+ {"%s: OK\n", 904},
+ {"%s: %d cylinders, %d heads, %d sectors/track\n", 905},
+ {"%s: unknown geometry\n", 906},
+ {"BLKGETSIZE ioctl failed for %s\n", 907},
+ {"bad active byte: 0x%x instead of 0x80\n", 908},
+ {"\
+Done\n\
+\n", 909},
+ {"\
+You have %d active primary partitions. This does not matter for LILO,\n\
+but the DOS MBR will only boot a disk with 1 active partition.\n", 910},
+ {"partition %s has id %x and is not hidden\n", 911},
+ {"Bad Id %x\n", 912},
+ {"This disk is currently in use.\n", 913},
+ {"Fatal error: cannot find %s\n", 914},
+ {"Warning: %s is not a block device\n", 915},
+ {"Checking that no-one is using this disk right now ...\n", 916},
+ {"\
+\n\
+This disk is currently in use - repartitioning is probably a bad idea.Umount \
+all file systems, and swapoff all swap partitions on this disk.Use the \
+--no-reread flag to suppress this check.\n", 917},
+ {"Use the --force flag to overrule all checks.\n", 918},
+ {"OK", 919},
+ {"Old situation:\n", 920},
+ {"Partition %d does not exist, cannot change it\n", 921},
+ {"New situation:\n", 922},
+ {"\
+I don't like these partitions - nothing changed.\n\
+(If you really want this, use the --force option.)\n", 923},
+ {"I don't like this - probably you should answer No\n", 924},
+ {"Are you satisfied with this? [ynq] ", 925},
+ {"Do you want to write this to disk? [ynq] ", 926},
+ {"\
+\n\
+sfdisk: premature end of input\n", 927},
+ {"Quitting - nothing changed\n", 928},
+ {"Please answer one of y,n,q\n", 929},
+ {"\
+Successfully wrote the new partition table\n\
+\n", 930},
+ {"\
+If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n\
+to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n\
+(See fdisk(8).)\n", 931},
+ {"usage: banner [-w width]\n", 932},
+ {"Message: ", 933},
+ {"The character '%c' is not in my character set", 934},
+ {"Message '%s' is OK\n", 935},
+ {"Try `getopt --help' for more information.\n", 936},
+ {"empty long option after -l or --long argument", 937},
+ {"unknown shell after -s or --shell argument", 938},
+ {"Usage: getopt optstring parameters\n", 939},
+ {" getopt [options] [--] optstring parameters\n", 940},
+ {" getopt [options] -o|--options optstring [options] [--]\n", 941},
+ {" parameters\n", 942},
+ {"\
+ -a, --alternative Allow long options starting with single -\n", 943},
+ {" -h, --help This small usage guide\n", 944},
+ {" -l, --longoptions=longopts Long options to be recognized\n", 945},
+ {"\
+ -n, --name=progname The name under which errors are reported\n", 946},
+ {" -o, --options=optstring Short options to be recognized\n", 947},
+ {" -q, --quiet Disable error reporting by getopt(3)\n", 948},
+ {" -Q, --quiet-output No normal output\n", 949},
+ {" -s, --shell=shell Set shell quoting conventions\n", 950},
+ {" -T, --test Test for getopt(1) version\n", 951},
+ {" -V, --version Output version information\n", 952},
+ {"missing optstring argument", 953},
+ {"getopt (enhanced) 1.0.3\n", 954},
+ {"internal error, contact the author.", 955},
+ {"calling open_tty\n", 956},
+ {"calling termio_init\n", 957},
+ {"writing init string\n", 958},
+ {"before autobaud\n", 959},
+ {"waiting for cr-lf\n", 960},
+ {"read %c\n", 961},
+ {"reading login name\n", 962},
+ {"%s: can't exec %s: %m", 963},
+ {"can't malloc initstring", 964},
+ {"bad timeout value: %s", 965},
+ {"after getopt loop\n", 966},
+ {"exiting parseargs\n", 967},
+ {"entered parse_speeds\n", 968},
+ {"bad speed: %s", 969},
+ {"too many alternate speeds", 970},
+ {"exiting parsespeeds\n", 971},
+ {"%s: open for update: %m", 972},
+ {"%s: no utmp entry", 973},
+ {"/dev: chdir() failed: %m", 974},
+ {"/dev/%s: not a character device", 975},
+ {"open(2)\n", 976},
+ {"/dev/%s: cannot open as standard input: %m", 977},
+ {"%s: not open for read/write", 978},
+ {"duping\n", 979},
+ {"%s: dup problem: %m", 980},
+ {"term_io 2\n", 981},
+ {"user", 982},
+ {"users", 983},
+ {"%s: read: %m", 984},
+ {"%s: input overrun", 985},
+ {"\
+Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] \
+baud_rate,... line [termtype]\n\
+or\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line \
+baud_rate,... [termtype]\n", 986},
+ {"badlogin: %s\n", 987},
+ {"sleepexit %d\n", 988},
+ {"login: memory low, login may fail\n", 989},
+ {"can't malloc for ttyclass", 990},
+ {"can't malloc for grplist", 991},
+ {"Login on %s from %s denied by default.\n", 992},
+ {"Login on %s from %s denied.\n", 993},
+ {"%s: you (user %d) don't exist.\n", 994},
+ {"%s: user \"%s\" does not exist.\n", 995},
+ {"%s: can only change local entries; use yp%s instead.\n", 996},
+ {"Changing finger information for %s.\n", 997},
+ {"Password error.", 998},
+ {"Password: ", 999},
+ {"Incorrect password.", 1000},
+ {"Finger information not changed.\n", 1001},
+ {"Usage: %s [ -f full-name ] [ -o office ] ", 1002},
+ {"\
+[ -p office-phone ]\n\
+\t[ -h home-phone ] ", 1003},
+ {"[ --help ] [ --version ]\n", 1004},
+ {"\
+\n\
+Aborted.\n", 1005},
+ {"field is too long.\n", 1006},
+ {"'%c' is not allowed.\n", 1007},
+ {"Control characters are not allowed.\n", 1008},
+ {"Finger information *NOT* changed. Try again later.\n", 1009},
+ {"Finger information changed.\n", 1010},
+ {"malloc failed", 1011},
+ {"%s: Your shell is not in /etc/shells, shell change denied\n", 1012},
+ {"Changing shell for %s.\n", 1013},
+ {"New shell", 1014},
+ {"Shell not changed.\n", 1015},
+ {"Shell *NOT* changed. Try again later.\n", 1016},
+ {"Shell changed.\n", 1017},
+ {"Usage: %s [ -s shell ] ", 1018},
+ {"[ --list-shells ] [ --help ] [ --version ]\n", 1019},
+ {" [ username ]\n", 1020},
+ {"%s: shell must be a full path name.\n", 1021},
+ {"%s: \"%s\" does not exist.\n", 1022},
+ {"%s: \"%s\" is not executable.\n", 1023},
+ {"%s: '%c' is not allowed.\n", 1024},
+ {"%s: Control characters are not allowed.\n", 1025},
+ {"Warning: \"%s\" is not listed in /etc/shells\n", 1026},
+ {"%s: \"%s\" is not listed in /etc/shells.\n", 1027},
+ {"%s: use -l option to see list\n", 1028},
+ {"Warning: \"%s\" is not listed in /etc/shells.\n", 1029},
+ {"Use %s -l to see list.\n", 1030},
+ {"No known shells.\n", 1031},
+ {"couldn't open /dev/urandom", 1032},
+ {"couldn't read random data from /dev/urandom", 1033},
+ {"can't open %s for reading", 1034},
+ {"can't stat(%s)", 1035},
+ {"%s doesn't have the correct filemodes", 1036},
+ {"can't read data from %s", 1037},
+ {"Can't read %s, exiting.", 1038},
+ {"usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n", 1039},
+ {" still logged in", 1040},
+ {"\
+\n\
+wtmp begins %s", 1041},
+ {"last: malloc failure.\n", 1042},
+ {"last: gethostname", 1043},
+ {"\
+\n\
+interrupted %10.10s %5.5s \n", 1044},
+ {"login: -h for super-user only.\n", 1045},
+ {"usage: login [-fp] [username]\n", 1046},
+ {"login: PAM Failure, aborting: %s\n", 1047},
+ {"Couldn't initialize PAM: %s", 1048},
+ {"FAILED LOGIN %d FROM %s FOR %s, %s", 1049},
+ {"\
+Login incorrect\n\
+\n", 1050},
+ {"TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s", 1051},
+ {"FAILED LOGIN SESSION FROM %s FOR %s, %s", 1052},
+ {"\
+\n\
+Login incorrect\n", 1053},
+ {"Illegal username", 1054},
+ {"%s login refused on this terminal.\n", 1055},
+ {"LOGIN %s REFUSED FROM %s ON TTY %s", 1056},
+ {"LOGIN %s REFUSED ON TTY %s", 1057},
+ {"Login incorrect\n", 1058},
+ {"\
+Too many users logged on already.\n\
+Try again later.\n", 1059},
+ {"You have too many processes running.\n", 1060},
+ {"Warning: no Kerberos tickets issued\n", 1061},
+ {"Sorry -- your password has expired.\n", 1062},
+ {"Warning: your password expires on %s %d, %d\n", 1063},
+ {"Sorry -- your account has expired.\n", 1064},
+ {"Warning: your account expires on %s %d, %d\n", 1065},
+ {"DIALUP AT %s BY %s", 1066},
+ {"ROOT LOGIN ON %s FROM %s", 1067},
+ {"ROOT LOGIN ON %s", 1068},
+ {"LOGIN ON %s BY %s FROM %s", 1069},
+ {"LOGIN ON %s BY %s", 1070},
+ {"You have %smail.\n", 1071},
+ {"new ", 1072},
+ {"login: failure forking: %s", 1073},
+ {"setuid() failed", 1074},
+ {"No directory %s!\n", 1075},
+ {"Logging in with home = \"/\".\n", 1076},
+ {"login: no memory for shell script.\n", 1077},
+ {"login: couldn't exec shell script: %s.\n", 1078},
+ {"login: no shell: %s.\n", 1079},
+ {"\
+\n\
+%s login: ", 1080},
+ {"login name much too long.\n", 1081},
+ {"NAME too long", 1082},
+ {"login names may not start with '-'.\n", 1083},
+ {"too many bare linefeeds.\n", 1084},
+ {"EXCESSIVE linefeeds", 1085},
+ {"Login timed out after %d seconds\n", 1086},
+ {"Last login: %.*s ", 1087},
+ {"from %.*s\n", 1088},
+ {"on %.*s\n", 1089},
+ {"LOGIN FAILURE FROM %s, %s", 1090},
+ {"LOGIN FAILURE ON %s, %s", 1091},
+ {"%d LOGIN FAILURES FROM %s, %s", 1092},
+ {"%d LOGIN FAILURES ON %s, %s", 1093},
+ {"is y\n", 1094},
+ {"is n\n", 1095},
+ {"usage: mesg [y | n]\n", 1096},
+ {"newgrp: Who are you?", 1097},
+ {"newgrp: setgid", 1098},
+ {"newgrp: No such group.", 1099},
+ {"newgrp: Permission denied", 1100},
+ {"newgrp: setuid", 1101},
+ {"No shell", 1102},
+ {"The password must have at least 6 characters, try again.\n", 1103},
+ {"The password must contain characters out of two of the following\n", 1104},
+ {"classes: upper and lower case letters, digits and non alphanumeric\n", 1105},
+ {"characters. See passwd(1) for more information.\n", 1106},
+ {"You cannot reuse the old password.\n", 1107},
+ {"Please don't use something like your username as password!\n", 1108},
+ {"Please don't use something like your realname as password!\n", 1109},
+ {"Usage: passwd [username [password]]\n", 1110},
+ {"Only root may use the one and two argument forms.\n", 1111},
+ {"Usage: passwd [-foqsvV] [user [password]]\n", 1112},
+ {"Can't exec %s: %s\n", 1113},
+ {"Cannot find login name", 1114},
+ {"Only root can change the password for others.\n", 1115},
+ {"Too many arguments.\n", 1116},
+ {"Can't find username anywhere. Is `%s' really a user?", 1117},
+ {"Sorry, I can only change local passwords. Use yppasswd instead.", 1118},
+ {"UID and username does not match, imposter!", 1119},
+ {"Changing password for %s\n", 1120},
+ {"Enter old password: ", 1121},
+ {"Illegal password, imposter.", 1122},
+ {"Enter new password: ", 1123},
+ {"Password not changed.", 1124},
+ {"Re-type new password: ", 1125},
+ {"You misspelled it. Password not changed.", 1126},
+ {"password changed, user %s", 1127},
+ {"ROOT PASSWORD CHANGED", 1128},
+ {"password changed by root, user %s", 1129},
+ {"calling setpwnam to set password.\n", 1130},
+ {"Password *NOT* changed. Try again later.\n", 1131},
+ {"Password changed.\n", 1132},
+ {"Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n", 1133},
+ {"Shutdown process aborted", 1134},
+ {"%s: Only root can shut a system down.\n", 1135},
+ {"That must be tomorrow, can't you wait till then?\n", 1136},
+ {"for maintenance; bounce, bounce", 1137},
+ {"timeout = %d, quiet = %d, reboot = %d\n", 1138},
+ {"The system is being shut down within 5 minutes", 1139},
+ {"Login is therefore prohibited.", 1140},
+ {"%s by %s: %s", 1141},
+ {"rebooted", 1142},
+ {"halted", 1143},
+ {"\
+\n\
+Why am I still alive after reboot?", 1144},
+ {"\
+\n\
+Now you can turn off the power...", 1145},
+ {"Calling kernel power-off facility...\n", 1146},
+ {"Error powering off\t%s\n", 1147},
+ {"Executing the program \"%s\" ...\n", 1148},
+ {"Error executing\t%s\n", 1149},
+ {"URGENT: broadcast message from %s:", 1150},
+ {"System going down IMMEDIATELY!\n", 1151},
+ {"System going down in %d hour%s %d minutes", 1152},
+ {"s", 1153},
+ {"System going down in %d minute%s\n", 1154},
+ {"\t... %s ...\n", 1155},
+ {"Cannot fork for swapoff. Shrug!", 1156},
+ {"Cannot exec swapoff, hoping umount will do the trick.", 1157},
+ {"Cannot fork for umount, trying manually.", 1158},
+ {"Cannot exec %s, trying umount.\n", 1159},
+ {"Cannot exec umount, giving up on umount.", 1160},
+ {"Unmounting any remaining filesystems...", 1161},
+ {"shutdown: Couldn't umount %s\n", 1162},
+ {"Booting to single user mode.\n", 1163},
+ {"exec of single user shell failed\n", 1164},
+ {"fork of single user shell failed\n", 1165},
+ {"\
+\n\
+Wrong password.\n", 1166},
+ {"exec rc failed\n", 1167},
+ {"open of rc file failed\n", 1168},
+ {"fork of rc shell failed\n", 1169},
+ {"fork failed\n", 1170},
+ {"exec failed\n", 1171},
+ {"cannot open inittab\n", 1172},
+ {"no TERM or cannot stat tty\n", 1173},
+ {"too many iov's (change code in wall/ttymsg.c)", 1174},
+ {"excessively long line arg", 1175},
+ {"cannot fork", 1176},
+ {"fork: %s", 1177},
+ {"%s: BAD ERROR", 1178},
+ {"%s: the %s file is busy.\n", 1179},
+ {"%s: the %s file is busy (%s present)\n", 1180},
+ {"%s: can't link %s: %s\n", 1181},
+ {"%s: can't unlock %s: %s (your changes are still in %s)\n", 1182},
+ {"%s: Cannot fork\n", 1183},
+ {"%s: %s unchanged\n", 1184},
+ {"%s: no changes made\n", 1185},
+ {"usage: %s [file]\n", 1186},
+ {"%s: can't open temporary file.\n", 1187},
+ {"Broadcast Message from %s@%s", 1188},
+ {"%s: can't read %s.\n", 1189},
+ {"%s: can't stat temporary file.\n", 1190},
+ {"%s: can't read temporary file.\n", 1191},
+ {"illegal month value: use 1-12", 1192},
+ {"illegal year value: use 1-9999", 1193},
+ {"usage: cal [-mjy] [[month] year]\n", 1194},
+ {"usage: %s [+format] [day month year]\n", 1195},
+ {"St. Tib's Day", 1196},
+ {"%s: unknown signal %s\n", 1197},
+ {"%s: can't find process \"%s\"\n", 1198},
+ {"%s: unknown signal %s; valid signals:\n", 1199},
+ {"usage: %s [ -s signal | -p ] [ -a ] pid ...\n", 1200},
+ {" %s -l [ signal ]\n", 1201},
+ {"logger: %s: %s.\n", 1202},
+ {"logger: unknown facility name: %s.\n", 1203},
+ {"logger: unknown priority name: %s.\n", 1204},
+ {"\
+usage: logger [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n", 1205},
+ {"Out of memory", 1206},
+ {"usage: look [-dfa] [-t char] string [file]\n", 1207},
+ {"Could not open %s\n", 1208},
+ {"Got %d bytes from %s\n", 1209},
+ {"namei: unable to get current directory - %s\n", 1210},
+ {"namei: unable to chdir to %s - %s (%d)\n", 1211},
+ {"usage: namei [-mx] pathname [pathname ...]\n", 1212},
+ {"namei: could not chdir to root!\n", 1213},
+ {"namei: could not stat root!\n", 1214},
+ {" ? could not chdir into %s - %s (%d)\n", 1215},
+ {" ? problems reading symlink %s - %s (%d)\n", 1216},
+ {" *** EXCEEDED UNIX LIMIT OF SYMLINKS ***", 1217},
+ {"namei: unknown file type 0%06o on file %s\n", 1218},
+ {"usage: script [-a] [file]\n", 1219},
+ {"Script started, file is %s\n", 1220},
+ {"Script started on %s", 1221},
+ {"\
+\n\
+Script done on %s", 1222},
+ {"Script done, file is %s\n", 1223},
+ {"openpty failed\n", 1224},
+ {"Out of pty's\n", 1225},
+ {"%s: Argument error, usage\n", 1226},
+ {" [ -term terminal_name ]\n", 1227},
+ {" [ -reset ]\n", 1228},
+ {" [ -initialize ]\n", 1229},
+ {" [ -cursor [on|off] ]\n", 1230},
+ {" [ -snow [on|off] ]\n", 1231},
+ {" [ -softscroll [on|off] ]\n", 1232},
+ {" [ -keyboard pc|olivetti|dutch|extended ]\n", 1233},
+ {" [ -repeat [on|off] ]\n", 1234},
+ {" [ -appcursorkeys [on|off] ]\n", 1235},
+ {" [ -linewrap [on|off] ]\n", 1236},
+ {" [ -default ]\n", 1237},
+ {" [ -foreground black|blue|green|cyan", 1238},
+ {"|red|magenta|yellow|white|default ]\n", 1239},
+ {" [ -background black|blue|green|cyan", 1240},
+ {" [ -ulcolor black|grey|blue|green|cyan", 1241},
+ {"|red|magenta|yellow|white ]\n", 1242},
+ {" [ -ulcolor bright blue|green|cyan", 1243},
+ {" [ -hbcolor black|grey|blue|green|cyan", 1244},
+ {" [ -hbcolor bright blue|green|cyan", 1245},
+ {" [ -standout [ attr ] ]\n", 1246},
+ {" [ -inversescreen [on|off] ]\n", 1247},
+ {" [ -bold [on|off] ]\n", 1248},
+ {" [ -half-bright [on|off] ]\n", 1249},
+ {" [ -blink [on|off] ]\n", 1250},
+ {" [ -reverse [on|off] ]\n", 1251},
+ {" [ -underline [on|off] ]\n", 1252},
+ {" [ -store ]\n", 1253},
+ {" [ -clear [all|rest] ]\n", 1254},
+ {" [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n", 1255},
+ {" [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n", 1256},
+ {" [ -regtabs [1-160] ]\n", 1257},
+ {" [ -blank [0-60] ]\n", 1258},
+ {" [ -dump [1-NR_CONSOLES] ]\n", 1259},
+ {" [ -append [1-NR_CONSOLES] ]\n", 1260},
+ {" [ -file dumpfilename ]\n", 1261},
+ {" [ -msg [on|off] ]\n", 1262},
+ {" [ -msglevel [0-8] ]\n", 1263},
+ {" [ -powersave [on|vsync|hsync|powerdown|off] ]\n", 1264},
+ {" [ -powerdown [0-60] ]\n", 1265},
+ {" [ -blength [0-2000] ]\n", 1266},
+ {" [ -bfreq freqnumber ]\n", 1267},
+ {"keyboard.pc", 1268},
+ {"keyboard.olivetti", 1269},
+ {"keyboard.dutch", 1270},
+ {"keyboard.extended", 1271},
+ {"snow.on", 1272},
+ {"snow.off", 1273},
+ {"softscroll.on", 1274},
+ {"softscroll.off", 1275},
+ {"cannot (un)set powersave mode\n", 1276},
+ {"klogctl error: %s\n", 1277},
+ {"Error reading %s\n", 1278},
+ {"Error writing screendump\n", 1279},
+ {"couldn't read %s, and cannot ioctl dump\n", 1280},
+ {"%s: $TERM is not defined.\n", 1281},
+ {"usage: tsort [ inputfile ]\n", 1282},
+ {"tsort: odd data count.\n", 1283},
+ {"tsort: cycle in data.\n", 1284},
+ {"tsort: internal error -- could not find cycle.\n", 1285},
+ {"whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n", 1286},
+ {"write: can't find your tty's name\n", 1287},
+ {"write: you have write permission turned off.\n", 1288},
+ {"write: %s is not logged in on %s.\n", 1289},
+ {"write: %s has messages disabled on %s\n", 1290},
+ {"usage: write user [tty]\n", 1291},
+ {"write: %s is not logged in\n", 1292},
+ {"write: %s has messages disabled\n", 1293},
+ {"write: %s is logged in more than once; writing to %s\n", 1294},
+ {"Message from %s@%s on %s at %s ...", 1295},
+ {"warning: error reading %s: %s", 1296},
+ {"warning: can't open %s: %s", 1297},
+ {"mount: could not open %s - using %s instead\n", 1298},
+ {"can't create lock file %s: %s (use -n flag to override)", 1299},
+ {"can't link lock file %s: %s (use -n flag to override)", 1300},
+ {"can't open lock file %s: %s (use -n flag to override)", 1301},
+ {"Can't lock lock file %s: %s\n", 1302},
+ {"can't lock lock file %s: %s", 1303},
+ {"timed out", 1304},
+ {"cannot open %s (%s) - mtab not updated", 1305},
+ {"mount: warning: cannot change mounted device with a remount\n", 1306},
+ {"mount: warning: cannot change filesystem type with a remount\n", 1307},
+ {"error writing %s: %s", 1308},
+ {"error changing mode of %s: %s\n", 1309},
+ {"can't rename %s to %s: %s\n", 1310},
+ {"loop: can't open device %s: %s\n", 1311},
+ {"loop: can't get info on device %s: %s\n", 1312},
+ {"%s: [%04x]:%ld (%s) offset %d, %s encryption\n", 1313},
+ {"mount: could not find any device /dev/loop#", 1314},
+ {"\
+mount: Could not find any loop device.\n\
+ Maybe /dev/loop# has a wrong major number?", 1315},
+ {"\
+mount: Could not find any loop device, and, according to %s,\n\
+ this kernel does not know about the loop device.\n\
+ (If so, then recompile or `insmod loop.o'.)", 1316},
+ {"\
+mount: Could not find any loop device. Maybe this kernel does not know\n\
+ about the loop device (then recompile or `insmod loop.o'), or\n\
+ maybe /dev/loop# has the wrong major number?", 1317},
+ {"mount: could not find any free loop device", 1318},
+ {"Unsupported encryption type %s\n", 1319},
+ {"Init (up to 16 hex digits): ", 1320},
+ {"Non-hex digit '%c'.\n", 1321},
+ {"Don't know how to get key for encryption system %d\n", 1322},
+ {"set_loop(%s,%s,%d): success\n", 1323},
+ {"loop: can't delete device %s: %s\n", 1324},
+ {"del_loop(%s): success\n", 1325},
+ {"This mount was compiled without loop support. Please recompile.\n", 1326},
+ {"Cannot get loop info", 1327},
+ {"\
+usage:\n\
+ %s loop_device # give info\n\
+ %s -d loop_device # delete\n\
+ %s [ -e encryption ] [ -o offset ] loop_device file # setup\n", 1328},
+ {"No loop support was available at compile time. Please recompile.\n", 1329},
+ {"[mntent]: warning: no final newline at the end of %s\n", 1330},
+ {"[mntent]: line %d in %s is bad%s\n", 1331},
+ {"; rest of file ignored", 1332},
+ {"mount: according to mtab, %s is already mounted on %s", 1333},
+ {"mount: according to mtab, %s is mounted on %s", 1334},
+ {"mount: can't open %s for writing: %s", 1335},
+ {"mount: error writing %s: %s", 1336},
+ {"mount: error changing mode of %s: %s", 1337},
+ {"mount failed", 1338},
+ {"mount: only root can mount %s on %s", 1339},
+ {"mount: loop device specified twice", 1340},
+ {"mount: type specified twice", 1341},
+ {"mount: skipping the setup of a loop device\n", 1342},
+ {"mount: going to use the loop device %s\n", 1343},
+ {"mount: failed setting up loop device\n", 1344},
+ {"mount: setup loop device successfully\n", 1345},
+ {"mount: this version was compiled without support for the type `nfs'", 1346},
+ {"mount: cannot fork: %s", 1347},
+ {"mount: can't open %s: %s", 1348},
+ {"mount: you must specify the filesystem type", 1349},
+ {"mount: mount point %s is not a directory", 1350},
+ {"mount: permission denied", 1351},
+ {"mount: must be superuser to use mount", 1352},
+ {"mount: %s is busy", 1353},
+ {"mount: proc already mounted", 1354},
+ {"mount: %s already mounted or %s busy", 1355},
+ {"mount: mount point %s does not exist", 1356},
+ {"mount: mount point %s is a symbolic link to nowhere", 1357},
+ {"mount: special device %s does not exist", 1358},
+ {"\
+mount: special device %s does not exist\n\
+ (a path prefix is not a directory)\n", 1359},
+ {"mount: %s not mounted already, or bad option", 1360},
+ {"\
+mount: wrong fs type, bad option, bad superblock on %s,\n\
+ or too many mounted file systems", 1361},
+ {"mount table full", 1362},
+ {"mount: %s: can't read superblock", 1363},
+ {"mount: %s has wrong major or minor number", 1364},
+ {"mount: fs type %s not supported by kernel", 1365},
+ {"mount: probably you meant %s", 1366},
+ {"mount: maybe you meant iso9660 ?", 1367},
+ {"mount: %s has wrong device number or fs type %s not supported", 1368},
+ {"mount: %s is not a block device, and stat fails?", 1369},
+ {"\
+mount: the kernel does not recognize %s as a block device\n\
+ (maybe `insmod driver'?)", 1370},
+ {"mount: %s is not a block device (maybe try `-o loop'?)", 1371},
+ {"mount: %s is not a block device", 1372},
+ {"mount: %s is not a valid block device", 1373},
+ {"mount: block device %s is not permitted on its filesystem", 1374},
+ {"mount: %s%s is write-protected, mounting read-only", 1375},
+ {"block device ", 1376},
+ {"mount: consider mounting %s by %s\n", 1377},
+ {"UUID", 1378},
+ {"label", 1379},
+ {"mount: no such partition found", 1380},
+ {"mount: no type was given - I'll assume nfs because of the colon\n", 1381},
+ {"mount: backgrounding \"%s\"\n", 1382},
+ {"mount: giving up \"%s\"\n", 1383},
+ {"mount: %s already mounted on %s\n", 1384},
+ {"\
+Usage: mount [-hV]\n\
+ mount -a [-nfFrsvw] [-t vfstypes]\n\
+ mount [-nfrsvw] [-o options] special | node\n\
+ mount [-nfrsvw] [-t vfstype] [-o options] special node\n\
+ A special device can be indicated by -L label or -U uuid .\n", 1385},
+ {"mount: only root can do that", 1386},
+ {"mount: no %s found - creating it..\n", 1387},
+ {"mount: mounting %s\n", 1388},
+ {"not mounted anything", 1389},
+ {"mount: cannot find %s in %s", 1390},
+ {"mount: can't find %s in %s or %s", 1391},
+ {"mount: bad UUID", 1392},
+ {"mount: you didn't specify a filesystem type for %s\n", 1393},
+ {" I will try type %s\n", 1394},
+ {" I will try all types mentioned in %s or %s\n", 1395},
+ {"mount: excessively long host:dir argument\n", 1396},
+ {"mount: warning: multiple hostnames not supported\n", 1397},
+ {"mount: directory to mount not in host:dir format\n", 1398},
+ {"mount: can't get address for %s\n", 1399},
+ {"mount: got bad hp->h_length\n", 1400},
+ {"mount: excessively long option argument\n", 1401},
+ {"Warning: Unrecognized proto= option.\n", 1402},
+ {"Warning: Option namlen is not supported.\n", 1403},
+ {"unknown nfs mount parameter: %s=%d\n", 1404},
+ {"Warning: option nolock is not supported.\n", 1405},
+ {"unknown nfs mount option: %s%s\n", 1406},
+ {"mount: got bad hp->h_length?\n", 1407},
+ {"mount: %s:%s failed, reason given by server: %s\n", 1408},
+ {"NFS over TCP is not supported.\n", 1409},
+ {"nfs socket", 1410},
+ {"nfs bindresvport", 1411},
+ {"used portmapper to find NFS port\n", 1412},
+ {"using port %d for nfs deamon\n", 1413},
+ {"nfs connect", 1414},
+ {"unknown nfs status return value: %d", 1415},
+ {"not enough memory", 1416},
+ {"bug in xstrndup call", 1417},
+ {"\
+usage: %s [-hV]\n\
+ %s -a [-v]\n\
+ %s [-v] [-p priority] special ...\n\
+ %s [-s]\n", 1418},
+ {"%s on %s\n", 1419},
+ {"swapon: cannot stat %s: %s\n", 1420},
+ {"swapon: warning: %s has insecure permissions %04o, 0600 suggested\n", 1421},
+ {"swapon: Skipping file %s - it appears to have holes.\n", 1422},
+ {"%s: cannot open %s: %s\n", 1423},
+ {"umount: compiled without support for -f\n", 1424},
+ {"host: %s, directory: %s\n", 1425},
+ {"umount: can't get address for %s\n", 1426},
+ {"umount: got bad hostp->h_length\n", 1427},
+ {"umount: %s: invalid block device", 1428},
+ {"umount: %s: not mounted", 1429},
+ {"umount: %s: can't write superblock", 1430},
+ {"umount: %s: device is busy", 1431},
+ {"umount: %s: not found", 1432},
+ {"umount: %s: must be superuser to umount", 1433},
+ {"umount: %s: block devices not permitted on fs", 1434},
+ {"umount: %s: %s", 1435},
+ {"no umount2, trying umount...\n", 1436},
+ {"could not umount %s - trying %s instead\n", 1437},
+ {"umount: %s busy - remounted read-only\n", 1438},
+ {"umount: could not remount %s read-only\n", 1439},
+ {"%s umounted\n", 1440},
+ {"umount: cannot find list of filesystems to unmount", 1441},
+ {"\
+Usage: umount [-hV]\n\
+ umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n\
+ umount [-f] [-r] [-n] [-v] special | node...\n", 1442},
+ {"umount: only root can do that", 1443},
+ {"Trying to umount %s\n", 1444},
+ {"Could not find %s in mtab\n", 1445},
+ {"umount: %s is not mounted (according to mtab)", 1446},
+ {"umount: it seems %s is mounted multiple times", 1447},
+ {"umount: %s is not in the fstab (and you are not root)", 1448},
+ {"umount: %s mount disagrees with the fstab", 1449},
+ {"umount: only root can unmount %s from %s", 1450},
+ {"umount: only %s can unmount %s from %s", 1451},
+ {"You must be root to set the Ctrl-Alt-Del behaviour.\n", 1452},
+ {"Usage: ctrlaltdel hard|soft\n", 1453},
+ {"\
+File %s, For threshold value %lu, Maximum characters in fifo were %d,\n\
+and the maximum transfer rate in characters/second was %f\n", 1454},
+ {"\
+File %s, For threshold value %lu and timrout value %lu, Maximum characters \
+in fifo were %d,\n\
+and the maximum transfer rate in characters/second was %f\n", 1455},
+ {"Invalid interval value: %s\n", 1456},
+ {"Invalid set value: %s\n", 1457},
+ {"Invalid default value: %s\n", 1458},
+ {"Invalid set time value: %s\n", 1459},
+ {"Invalid default time value: %s\n", 1460},
+ {"\
+Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) \
+[-g|-G] file [file...]\n", 1461},
+ {"Can't open %s: %s\n", 1462},
+ {"Can't set %s to threshold %d: %s\n", 1463},
+ {"Can't set %s to time threshold %d: %s\n", 1464},
+ {"Can't get threshold for %s: %s\n", 1465},
+ {"Can't get timeout for %s: %s\n", 1466},
+ {"%s: %ld %s threshold and %ld %s timeout\n", 1467},
+ {"current", 1468},
+ {"default", 1469},
+ {"Can't set signal handler", 1470},
+ {"gettimeofday failed", 1471},
+ {"Can't issue CYGETMON on %s: %s\n", 1472},
+ {"%s: %lu ints, %lu/%lu chars; ", 1473},
+ {"fifo: %lu thresh, %lu tmout, ", 1474},
+ {"%lu max, %lu now\n", 1475},
+ {" %f int/sec; %f rec, %f send (char/sec)\n", 1476},
+ {"\
+%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n", 1477},
+ {" %f int/sec; %f rec (char/sec)\n", 1478},
+ {"Usage: %s [-c] [-n level] [-s bufsize]\n", 1479},
+ {"usage: %s [shm | msg | sem] id\n", 1480},
+ {"usage: %s [-shm | -msg | -sem] id\n", 1481},
+ {"resource deleted\n", 1482},
+ {"usage : %s -asmq -tclup \n", 1483},
+ {"\t%s [-s -m -q] -i id\n", 1484},
+ {"\t%s -h for help.\n", 1485},
+ {"%s provides information on ipc facilities for", 1486},
+ {" which you have read access.\n", 1487},
+ {"\
+Resource Specification:\n\
+\t-m : shared_mem\n\
+\t-q : messages\n", 1488},
+ {"\
+\t-s : semaphores\n\
+\t-a : all (default)\n", 1489},
+ {"\
+Output Format:\n\
+\t-t : time\n\
+\t-p : pid\n\
+\t-c : creator\n", 1490},
+ {"\
+\t-l : limits\n\
+\t-u : summary\n", 1491},
+ {"-i id [-s -q -m] : details on resource identified by id\n", 1492},
+ {"kernel not configured for shared memory\n", 1493},
+ {"------ Shared Memory Limits --------\n", 1494},
+ {"max number of segments = %d\n", 1495},
+ {"max seg size (kbytes) = %d\n", 1496},
+ {"max total shared memory (kbytes) = %d\n", 1497},
+ {"min seg size (bytes) = %d\n", 1498},
+ {"------ Shared Memory Status --------\n", 1499},
+ {"segments allocated %d\n", 1500},
+ {"pages allocated %ld\n", 1501},
+ {"pages resident %ld\n", 1502},
+ {"pages swapped %ld\n", 1503},
+ {"Swap performance: %ld attempts\t %ld successes\n", 1504},
+ {"------ Shared Memory Segment Creators/Owners --------\n", 1505},
+ {"%-10s%-10s%-10s%-10s%-10s%-10s\n", 1506},
+ {"shmid", 1507},
+ {"perms", 1508},
+ {"cuid", 1509},
+ {"cgid", 1510},
+ {"uid", 1511},
+ {"gid", 1512},
+ {"------ Shared Memory Attach/Detach/Change Times --------\n", 1513},
+ {"%-10s%-10s %-20s%-20s%-20s\n", 1514},
+ {"owner", 1515},
+ {"attached", 1516},
+ {"detached", 1517},
+ {"changed", 1518},
+ {"------ Shared Memory Creator/Last-op --------\n", 1519},
+ {"%-10s%-10s%-10s%-10s\n", 1520},
+ {"cpid", 1521},
+ {"lpid", 1522},
+ {"------ Shared Memory Segments --------\n", 1523},
+ {"%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n", 1524},
+ {"key", 1525},
+ {"bytes", 1526},
+ {"nattch", 1527},
+ {"status", 1528},
+ {"Not set", 1529},
+ {"dest", 1530},
+ {"locked", 1531},
+ {"kernel not configured for semaphores\n", 1532},
+ {"------ Semaphore Limits --------\n", 1533},
+ {"max number of arrays = %d\n", 1534},
+ {"max semaphores per array = %d\n", 1535},
+ {"max semaphores system wide = %d\n", 1536},
+ {"max ops per semop call = %d\n", 1537},
+ {"semaphore max value = %d\n", 1538},
+ {"------ Semaphore Status --------\n", 1539},
+ {"used arrays = %d\n", 1540},
+ {"allocated semaphores = %d\n", 1541},
+ {"------ Semaphore Arrays Creators/Owners --------\n", 1542},
+ {"semid", 1543},
+ {"------ Shared Memory Operation/Change Times --------\n", 1544},
+ {"%-8s%-10s %-26.24s %-26.24s\n", 1545},
+ {"last-op", 1546},
+ {"last-changed", 1547},
+ {"------ Semaphore Arrays --------\n", 1548},
+ {"%-10s%-10s%-10s%-10s%-10s%-12s\n", 1549},
+ {"nsems", 1550},
+ {"------ Messages: Limits --------\n", 1551},
+ {"max queues system wide = %d\n", 1552},
+ {"max size of message (bytes) = %d\n", 1553},
+ {"default max size of queue (bytes) = %d\n", 1554},
+ {"------ Messages: Status --------\n", 1555},
+ {"allocated queues = %d\n", 1556},
+ {"used headers = %d\n", 1557},
+ {"used space = %d bytes\n", 1558},
+ {"------ Message Queues: Creators/Owners --------\n", 1559},
+ {"msqid", 1560},
+ {"------ Message Queues Send/Recv/Change Times --------\n", 1561},
+ {"%-8s%-10s %-20s%-20s%-20s\n", 1562},
+ {"send", 1563},
+ {"recv", 1564},
+ {"change", 1565},
+ {"------ Message Queues PIDs --------\n", 1566},
+ {"lspid", 1567},
+ {"lrpid", 1568},
+ {"------ Message Queues --------\n", 1569},
+ {"%-10s%-10s%-10s%-10s%-12s%-12s\n", 1570},
+ {"used-bytes", 1571},
+ {"messages", 1572},
+ {"\
+\n\
+Shared memory Segment shmid=%d\n", 1573},
+ {"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n", 1574},
+ {"mode=%#o\taccess_perms=%#o\n", 1575},
+ {"bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n", 1576},
+ {"att_time=%s", 1577},
+ {"Not set\n", 1578},
+ {"det_time=%s", 1579},
+ {"change_time=%s", 1580},
+ {"\
+\n\
+Message Queue msqid=%d\n", 1581},
+ {"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n", 1582},
+ {"cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n", 1583},
+ {"send_time=%srcv_time=%schange_time=%s", 1584},
+ {"Not Set\n", 1585},
+ {"\
+\n\
+Semaphore Array semid=%d\n", 1586},
+ {"uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n", 1587},
+ {"mode=%#o, access_perms=%#o\n", 1588},
+ {"nsems = %d\n", 1589},
+ {"otime = %s", 1590},
+ {"ctime = %s", 1591},
+ {"%-10s%-10s%-10s%-10s%-10s\n", 1592},
+ {"semnum", 1593},
+ {"value", 1594},
+ {"ncount", 1595},
+ {"zcount", 1596},
+ {"pid", 1597},
+ {"usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]", 1598},
+ {"\
+ rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device", 1599},
+ {" rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2", 1600},
+ {" rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)", 1601},
+ {" rdev -s /dev/fd0 /dev/hda2 set the SWAP device", 1602},
+ {" rdev -r /dev/fd0 627 set the RAMDISK size", 1603},
+ {" rdev -v /dev/fd0 1 set the bootup VIDEOMODE", 1604},
+ {" rdev -o N ... use the byte offset N", 1605},
+ {" rootflags ... same as rdev -R", 1606},
+ {" swapdev ... same as rdev -s", 1607},
+ {" ramsize ... same as rdev -r", 1608},
+ {" vidmode ... same as rdev -v", 1609},
+ {"\
+Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,...", 1610},
+ {" use -R 1 to mount root readonly, -R 0 for read/write.", 1611},
+ {"\
+%s: Usage: \"%s [options]\n\
+\t -m <mapfile> (default = \"%s\")\n\
+\t -p <pro-file> (default = \"%s\")\n\
+\t -i print only info about the sampling step\n\
+\t -v print verbose data\n\
+\t -a print all symbols, even if count is 0\n\
+\t -r reset all the counters (root only)\n\
+\t -V print version and exit\n", 1612},
+ {"%s Version %s\n", 1613},
+ {"anything\n", 1614},
+ {"Sampling_step: %i\n", 1615},
+ {"%s: %s(%i): wrong map line\n", 1616},
+ {"%s: can't find \"_stext\" in %s\n", 1617},
+ {"total", 1618},
+ {"\
+usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]\n", 1619},
+ {"renice: %s: unknown user\n", 1620},
+ {"renice: %s: bad value\n", 1621},
+ {"getpriority", 1622},
+ {"setpriority", 1623},
+ {"%d: old priority %d, new priority %d\n", 1624},
+ {"usage: %s program [arg ...]\n", 1625},
+ {"\
+Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n\
+ -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s | \n\
+ -T [on|off] ]\n", 1626},
+ {"malloc error", 1627},
+ {"sscanf error", 1628},
+ {"%s: %s not an lp device.\n", 1629},
+ {"%s status is %d", 1630},
+ {", busy", 1631},
+ {", ready", 1632},
+ {", out of paper", 1633},
+ {", on-line", 1634},
+ {", error", 1635},
+ {"LPGETIRQ error", 1636},
+ {"%s using IRQ %d\n", 1637},
+ {"%s using polling\n", 1638},
+ {"col: bad -l argument %s.\n", 1639},
+ {"usage: col [-bfx] [-l nline]\n", 1640},
+ {"col: write error.\n", 1641},
+ {"col: warning: can't back up %s.\n", 1642},
+ {"past first line", 1643},
+ {"-- line already flushed", 1644},
+ {"usage: %s [ - ] [ -2 ] [ file ... ]\n", 1645},
+ {"line too long", 1646},
+ {"usage: column [-tx] [-c columns] [file ...]\n", 1647},
+ {"hexdump: bad length value.\n", 1648},
+ {"hexdump: bad skip value.\n", 1649},
+ {"\
+hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n", 1650},
+ {"usage: %s [-dfln] [+linenum | +/pattern] name1 name2 ...\n", 1651},
+ {"\
+\n\
+*** %s: directory ***\n\
+\n", 1652},
+ {"\
+\n\
+******** %s: Not a text file ********\n\
+\n", 1653},
+ {"[Use q or Q to quit]", 1654},
+ {"--More--", 1655},
+ {"(Next file: %s)", 1656},
+ {"[Press space to continue, 'q' to quit.]", 1657},
+ {"...back %d page", 1658},
+ {"...skipping %d line", 1659},
+ {"\
+\n\
+***Back***\n\
+\n", 1660},
+ {"Can't open help file", 1661},
+ {"[Press 'h' for instructions.]", 1662},
+ {"\"%s\" line %d", 1663},
+ {"[Not a file] line %d", 1664},
+ {" Overflow\n", 1665},
+ {"...skipping\n", 1666},
+ {"Regular expression botch", 1667},
+ {"\
+\n\
+Pattern not found\n", 1668},
+ {"Pattern not found", 1669},
+ {"can't fork\n", 1670},
+ {"\
+\n\
+...Skipping ", 1671},
+ {"...Skipping ", 1672},
+ {"to file ", 1673},
+ {"back to file ", 1674},
+ {"Line too long", 1675},
+ {"No previous command to substitute for", 1676},
+ {"od: od(1) has been deprecated for hexdump(1).\n", 1677},
+ {"od: hexdump(1) compatibility doesn't support the -%c option%s\n", 1678},
+ {"; see strings(1).", 1679},
+ {"hexdump: can't read %s.\n", 1680},
+ {"hexdump: line too long.\n", 1681},
+ {"hexdump: byte count with multiple conversion characters.\n", 1682},
+ {"hexdump: bad byte count for conversion character %s.\n", 1683},
+ {"hexdump: %%s requires a precision or a byte count.\n", 1684},
+ {"hexdump: bad format {%s}\n", 1685},
+ {"hexdump: bad conversion character %%%s.\n", 1686},
+ {"Unable to allocate bufferspace\n", 1687},
+ {"usage: rev [file ...]\n", 1688},
+ {"usage: %s [ -i ] [ -tTerm ] file...\n", 1689},
+ {"trouble reading terminfo", 1690},
+ {"Unknown escape sequence in input: %o, %o\n", 1691},
+ {"Unable to allocate buffer.\n", 1692},
+ {"Input line too long.\n", 1693},
+ {"Out of memory when growing buffer.\n", 1694},
+ {"Typematic Rate set to %.1f cps (delay = %d ms)\n", 1695},
+ {"Cannot open /dev/port", 1696},
+};
+
+int _msg_tbl_length = 1696;
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 000000000..87ee5b5de
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,8545 @@
+# Czech translation of util-linux.
+# Jiří Pavlovský <pavlovsk@ff.cuni.cz>, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: util-linux-2.9u\n"
+"POT-Creation-Date: 1999-07-10 16:38+0200\n"
+"PO-Revision-Date: 1999-07-13 23:44+0200\n"
+"Last-Translator: Jiří Pavlovský <pavlovsk@ff.cuni.cz>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: clock/cmos.c:146
+msgid "booted from MILO\n"
+msgstr "spuštěn pomocí MILO\n"
+
+#: clock/cmos.c:154
+msgid "Ruffian BCD clock\n"
+msgstr "hodnoty uloženy v BCD tvaru\n"
+
+#: clock/cmos.c:170
+#, c-format
+msgid "clockport adjusted to 0x%x\n"
+msgstr "vstupně/výstupní port pro přístup k hodinám nastaven na 0x%x\n"
+
+#: clock/cmos.c:180
+msgid "funky TOY!\n"
+msgstr "použit přepínač --funky-toy!\n"
+
+#: clock/cmos.c:234
+#, c-format
+msgid "%s: atomic %s failed for 1000 iterations!"
+msgstr "%s: 1000 neúspěšných pokusů o atomické provedení %s!"
+
+#: clock/cmos.c:558
+#, c-format
+msgid "Cannot open /dev/port: %s"
+msgstr "/dev/port nelze otevřít: %s"
+
+#: clock/cmos.c:565
+msgid "I failed to get permission because I didnt try.\n"
+msgstr "Jelikož jsem se nesnažil, nepodařilo se mi získat práva pro přístup.\n"
+
+#: clock/cmos.c:568
+#, c-format
+msgid "%s is unable to get I/O port access: the iopl(3) call failed.\n"
+msgstr "%s: přístup k portu nelze získat: volání iopl(3) selhalo.\n"
+
+#: clock/cmos.c:571
+msgid "Probably you need root privileges.\n"
+msgstr "Pravděpodobně je třeba mít práva superuživatele.\n"
+
+#: clock/hwclock.c:253
+#, c-format
+msgid "Last drift adjustment done at %d seconds after 1969\n"
+msgstr "Poslední oprava posunu proběhla %d vteřin od roku 1969.\n"
+
+#: clock/hwclock.c:255
+#, c-format
+msgid "Last calibration done at %d seconds after 1969\n"
+msgstr "Poslední kalibrace proběhla %d vteřin od roku 1969.\n"
+
+#. -----------------------------------------------------------------------------
+#. Wait until the falling edge of the Hardware Clock's update flag so
+#. that any time that is read from the clock immediately after we
+#. return will be exact.
+#.
+#. The clock only has 1 second precision, so it gives the exact time only
+#. once per second, right on the falling edge of the update flag.
+#.
+#. We wait (up to one second) either blocked waiting for an rtc device
+#. or in a CPU spin loop. The former is probably not very accurate.
+#.
+#. Return *retcode_p == 0 if it worked, nonzero if it didn't.
+#.
+#. -----------------------------------------------------------------------------
+#: clock/hwclock.c:278
+msgid "Waiting for clock tick...\n"
+msgstr "čekám na tiknutí hodin...\n"
+
+#: clock/hwclock.c:282
+msgid "...got clock tick\n"
+msgstr "...hodiny tikly\n"
+
+#: clock/hwclock.c:334
+#, c-format
+msgid "Invalid values in hardware clock: %2d/%.2d/%.2d %.2d:%.2d:%.2d\n"
+msgstr ""
+"Hodiny reálného času obsahují chybné hodnoty: %2d/%.2d/%.2d %.2d:%.2d:%.2d\n"
+
+#: clock/hwclock.c:343
+#, c-format
+msgid "Hw clock time : %.2d:%.2d:%.2d = %d seconds since 1969\n"
+msgstr "Hodiny reálného času ukazují %.2d:%.2d:%.2d = %d vteřin od roku 1969\n"
+
+#: clock/hwclock.c:369
+#, c-format
+msgid "Time read from Hardware Clock: %02d:%02d:%02d\n"
+msgstr "Hodiny reálného času ukazují %02d:%02d:%02d\n"
+
+#: clock/hwclock.c:395
+#, c-format
+msgid "Setting Hardware Clock to %.2d:%.2d:%.2d = %d seconds since 1969\n"
+msgstr ""
+"Nastavuji hodiny reálného času na %.2d:%.2d:%.2d = %d vteřin od roku 1969\n"
+
+#: clock/hwclock.c:401
+msgid "Clock not changed - testing only.\n"
+msgstr "Testovací režim - Čas nezměněn.\n"
+
+#: clock/hwclock.c:449
+#, c-format
+msgid ""
+"Time elapsed since reference time has been %.6f seconds.\n"
+"Delaying further to reach the next full second.\n"
+msgstr ""
+"Počet vteřin uplynulých od referenčního času: %.6f.\n"
+"Čekám, dokud neuplyne další celá vteřina.\n"
+
+#: clock/hwclock.c:473
+msgid ""
+"The Hardware Clock registers contain values that are either invalid (e.g. "
+"50th day of month) or beyond the range we can handle (e.g. Year 2095).\n"
+msgstr ""
+"Registry hodin reálného času obsahují hodnoty, které jsou buď chybné (např.\n"
+"50tý den v měsíci), či mimo přípustný rozsah (např. rok 2095).\n"
+
+#. Address of static storage containing time string
+#. For some strange reason, ctime() is designed to include a newline
+#. character at the end. We have to remove that.
+#.
+#. Compute display value for time
+#. Cut off trailing newline
+#: clock/hwclock.c:485
+#, c-format
+msgid "%s %.6f seconds\n"
+msgstr "%s %.6f vteřiny\n"
+
+#: clock/hwclock.c:519
+msgid "No --date option specified.\n"
+msgstr "Přepínač --date vyžaduje argument.\n"
+
+#. Quotation marks in date_opt would ruin the date command we construct.
+#.
+#: clock/hwclock.c:524
+msgid ""
+"The value of the --date option is not a valid date.\n"
+"In particular, it contains quotation marks.\n"
+msgstr ""
+"Argument přepínače --date není platným datem. Konkrétně obsahuje uvozovky.\n"
+
+#: clock/hwclock.c:530
+#, c-format
+msgid "Issuing date command: %s\n"
+msgstr "Spouštím příkaz 'date': %s\n"
+
+#: clock/hwclock.c:534
+msgid "Unable to run 'date' program in /bin/sh shell. popen() failed"
+msgstr "Příkaz 'date' nelze v shellu /bin/sh spustit. Volání popen() selhalo."
+
+#: clock/hwclock.c:540
+#, c-format
+msgid "response from date command = %s\n"
+msgstr "odpověď příkazu 'date' = %s\n"
+
+#: clock/hwclock.c:542
+#, c-format
+msgid ""
+"The date command issued by %s returned unexpected results.\n"
+"The command was:\n"
+" %s\n"
+"The response was:\n"
+" %s\n"
+msgstr ""
+"Od příkazu 'date' spuštěného programem %s, přišla nečekaná odpověď.\n"
+"Příkaz:\n"
+" %s\n"
+"Odpověď:\n"
+" %s\n"
+
+#: clock/hwclock.c:551
+#, c-format
+msgid ""
+"The date command issued by %s returnedsomething other than an integer where "
+"the convertedtime value was expected.\n"
+"The command was:\n"
+" %s\n"
+"The response was:\n"
+" %s\n"
+msgstr ""
+"Příkaz 'date' spuštěný programem %s místo převedeného času vrátil něco,\n"
+"co není celým číslem.\n"
+"Příkaz:\n"
+" %s\n"
+"Odpověď:\n"
+" %s\n"
+
+#: clock/hwclock.c:561
+#, c-format
+msgid "date string %s equates to %d seconds since 1969.\n"
+msgstr "Datum %s odpovídá %d vteřinám od roku 1969.\n"
+
+#: clock/hwclock.c:596
+msgid ""
+"The Hardware Clock does not contain a valid time, so we cannot set the "
+"System Time from it.\n"
+msgstr ""
+"Systémový čas nelze podle hodin reálného času nastavit, protože neukazují\n"
+"platný čas.\n"
+
+#: clock/hwclock.c:612
+msgid "Calling settimeofday:\n"
+msgstr "Volám settimeofday:\n"
+
+#: clock/hwclock.c:613
+#, c-format
+msgid "\ttv.tv_sec = %ld, tv.tv_usec = %ld\n"
+msgstr "\ttv.tv_sec = %ld, tv.tv_usec = %ld\n"
+
+#: clock/hwclock.c:615
+#, c-format
+msgid "\ttz.tz_minuteswest = %ld\n"
+msgstr "\ttz.tz_minuteswest = %ld\n"
+
+#: clock/hwclock.c:618
+msgid "Not setting system clock because running in test mode.\n"
+msgstr "Testovací režim - systémový čas nezměněn.\n"
+
+#: clock/hwclock.c:630
+msgid "Must be superuser to set system clock.\n"
+msgstr "Nastavit systémový čas může pouze superuživatel.\n"
+
+#: clock/hwclock.c:632
+msgid "settimeofday() failed"
+msgstr "volání settimeofday() selhalo"
+
+#: clock/hwclock.c:665
+msgid ""
+"Not adjusting drift factor because the Hardware Clock previously contained "
+"garbage.\n"
+msgstr ""
+"Neopravuji míru posunu, protože hodiny reálného času posledně obsahovaly\n"
+"neplatné hodnoty.\n"
+
+#: clock/hwclock.c:669
+msgid ""
+"Not adjusting drift factor because it has been less than a day since the "
+"last calibration.\n"
+msgstr ""
+"Neopravuji míru posunu, protože poslední kalibrace ještě neuplynul celý "
+"den.\n"
+
+#: clock/hwclock.c:678
+#, c-format
+msgid ""
+"Clock drifted %d seconds in the past %d seconds in spite of a drift factor "
+"of %f seconds/day.\n"
+"Adjusting drift factor by %f seconds/day\n"
+msgstr ""
+"Hodiny se za posledních %2$d vteřin rozešly o %1$d vteřin, přestože míra "
+"posunu\n"
+"je nastavena na %3$f vteřin/den.\n"
+"Opravuji míru posunu o %4$f vteřin.\n"
+
+#: clock/hwclock.c:729
+#, c-format
+msgid "Time since last adjustment is %d seconds\n"
+msgstr "Počet vteřin od poslední opravy: %d\n"
+
+#: clock/hwclock.c:731
+#, c-format
+msgid "Need to insert %d seconds and refer time back %.6f seconds ago\n"
+msgstr "Potřebná změna času: vteřin vpřed: %d ; vteřin zpět: %.6f\n"
+
+#: clock/hwclock.c:759
+msgid "Not updating adjtime file because of testing mode.\n"
+msgstr "Testovací režim - soubor adjtime nezměněn.\n"
+
+#: clock/hwclock.c:760
+#, c-format
+msgid ""
+"Would have written the following to %s:\n"
+"%s"
+msgstr ""
+"Do %s by bylo uloženo následující:\n"
+"%s"
+
+#: clock/hwclock.c:784
+msgid "Drift adjustment parameters not updated.\n"
+msgstr "Parametry opravy posunu nezměněny.\n"
+
+#: clock/hwclock.c:825
+msgid ""
+"The Hardware Clock does not contain a valid time, so we cannot adjust it.\n"
+msgstr "Hodiny reálného času obsahují neplatný čas, tudíž jej nelze opravit.\n"
+
+#: clock/hwclock.c:849
+msgid "Needed adjustment is less than one second, so not setting clock.\n"
+msgstr "Potřebná oprava je menší než 1 vteřina, proto hodiny nenastavuji.\n"
+
+#: clock/hwclock.c:875
+#, c-format
+msgid "Using %s.\n"
+msgstr "Používám %s.\n"
+
+#: clock/hwclock.c:877
+msgid "No usable clock interface found.\n"
+msgstr "Nebylo nalezeno žádné použitelné rozhraní k hodinám.\n"
+
+#: clock/hwclock.c:965
+msgid "Unable to set system clock.\n"
+msgstr "Systémový čas nelze nastavit.\n"
+
+#: clock/hwclock.c:994
+msgid ""
+"The kernel keeps an epoch value for the Hardware Clock only on an Alpha "
+"machine.\n"
+"This copy of hwclock was built for a machine other than Alpha\n"
+"(and thus is presumably not running on an Alpha now). No action taken.\n"
+msgstr ""
+"Jádro obsahuje hodnotu počátku epochy pro hodiny reálného času pouze na "
+"Alpha\n"
+"systémech.\n"
+"Tento program nebyl přeložen pro Alpha systém ( a tudíž pravděpodobně nyní\n"
+"neběží na Alphě). Ignorováno.\n"
+
+#: clock/hwclock.c:1003
+msgid "Unable to get the epoch value from the kernel.\n"
+msgstr "Počátek epochy nelze z jádra zjistit.\n"
+
+#: clock/hwclock.c:1005
+#, c-format
+msgid "Kernel is assuming an epoch value of %lu\n"
+msgstr "Jádro pokládá za počátek epochy %lu.\n"
+
+#: clock/hwclock.c:1008
+msgid ""
+"To set the epoch value, you must use the 'epoch' option to tell to what "
+"value to set it.\n"
+msgstr "Počátek epochy nastavíte pomocí přepínačů epoch a setepoch.\n"
+
+#: clock/hwclock.c:1011
+#, c-format
+msgid "Not setting the epoch to %d - testing only.\n"
+msgstr "Testovací režim - počátek epochy na %d neměním.\n"
+
+#: clock/hwclock.c:1014
+msgid "Unable to set the epoch value in the kernel.\n"
+msgstr "Hodnotu počátku epochy v jádře nelze nastavit.\n"
+
+#: clock/hwclock.c:1094
+#, c-format
+msgid "%s takes no non-option arguments. You supplied %d.\n"
+msgstr ""
+"%s akceptuje pouze přepínače. Zadáno argumentů, které nejsou přepínači: %d\n"
+
+#: clock/hwclock.c:1102
+msgid ""
+"You have specified multiple function options.\n"
+"You can only perform one function at a time.\n"
+msgstr ""
+"Zadal jste vícero funkčních přepínačů. Program může provést maximálně jednu\n"
+"funkci najednou.\n"
+
+#: clock/hwclock.c:1115
+msgid "No usable set-to time. Cannot set clock.\n"
+msgstr "Nebyl zadán platný čas, který mám nastavit. Hodiny nelze nastavit.\n"
+
+#: clock/hwclock.c:1130
+msgid "Sorry, only the superuser can change the Hardware Clock.\n"
+msgstr "Hodiny reálného času může nastavit pouze superuživatel.\n"
+
+#: clock/hwclock.c:1134
+msgid ""
+"Sorry, only the superuser can change the Hardware Clock epoch in the "
+"kernel.\n"
+msgstr "Hodnotu počátku epochy v jádře může nastavit pouze superuživatel.\n"
+
+#: clock/hwclock.c:1150
+msgid ""
+"Cannot access the Hardware Clock via any known method. Use --debug option "
+"to see the details of our search for an access method.\n"
+msgstr ""
+"Žádným ze známých způsobů nelze získat přístup k hodinám reálného času.\n"
+"Pro zjištění podrobností použijte přepínač --debug.\n"
+
+#: clock/hwclock.c:1164
+#, c-format
+msgid "%s: %s, errno=%d: %s.\n"
+msgstr "%s: %s, errno=%d: %s.\n"
+
+#: clock/kd.c:40
+msgid "Waiting in loop for time from KDGHWCLK to change\n"
+msgstr "Ve smyčce se pokouším zjistit čas pomocí KDGHWCLK.\n"
+
+#: clock/kd.c:43
+msgid "KDGHWCLK ioctl to read time failed"
+msgstr "volání KDGHWCLK ioctl selhalo."
+
+#: clock/kd.c:50 clock/rtc.c:144
+msgid "Timed out waiting for time change.\n"
+msgstr "V Časovém limitu se nepodařilo zjistit čas.\n"
+
+#: clock/kd.c:54
+msgid "KDGHWCLK ioctl to read time failed in loop"
+msgstr "volání KDGHWCLK ioctl ve smyčce selhalo."
+
+#: clock/kd.c:76
+msgid "ioctl() failed to read time from /dev/tty1"
+msgstr "čas se pomocí volání ioctl() pro /dev/tty1 nepodařilo zjistit"
+
+#: clock/kd.c:112
+msgid "ioctl() to open /dev/tty1 failed"
+msgstr "volání ioctl() pro /dev/tty1 selhalo"
+
+#: clock/kd.c:142
+msgid "KDGHWCLK ioctl failed"
+msgstr "volání ioctl KDGHWCLK selhalo"
+
+#: clock/kd.c:146
+msgid "Can't open /dev/tty1"
+msgstr "/dev/tty1 nelze otevřít"
+
+#: clock/rtc.c:98
+msgid "ioctl() to /dev/rtc to read the time failed.\n"
+msgstr "čas se pomocí volání ioctl() pro /dev/rtc nepodařilo zjistit\n"
+
+#: clock/rtc.c:129
+msgid "Waiting in loop for time from /dev/rtc to change\n"
+msgstr "Ve smyčce se pokouším zjistit čas z /dev/rtc.\n"
+
+#: clock/rtc.c:165 clock/rtc.c:222
+msgid "open() of /dev/rtc failed"
+msgstr "/dev/rtc nelze otevřít - volání open() selhalo"
+
+#. This rtc device doesn't have interrupt functions. This is typical
+#. on an Alpha, where the Hardware Clock interrupts are used by the
+#. kernel for the system clock, so aren't at the user's disposal.
+#.
+#: clock/rtc.c:182
+msgid "/dev/rtc does not have interrupt functions. "
+msgstr "/dev/rtc nemá přerušovací funkce. "
+
+#: clock/rtc.c:191
+msgid "read() to /dev/rtc to wait for clock tick failed"
+msgstr "tikání hodin nelze z /dev/rtc číst - volání read() selhalo"
+
+#: clock/rtc.c:199
+msgid "ioctl() to /dev/rtc to turn off update interrupts failed"
+msgstr ""
+"obnovovací přerušení nelze vypnout - volání ioctl() pro /dev/rtc selhalo"
+
+#: clock/rtc.c:202
+msgid "ioctl() to /dev/rtc to turn on update interrupts failed unexpectedly"
+msgstr ""
+"obnovovací přerušení nelze zapnout - volání ioctl() pro /dev/rtc selhalo"
+
+#: clock/rtc.c:245 clock/rtc.c:324 clock/rtc.c:369
+msgid "Unable to open /dev/rtc"
+msgstr "/dev/rtc nelze otevřít."
+
+#: clock/rtc.c:268
+msgid "ioctl() to /dev/rtc to set the time failed.\n"
+msgstr "Čas nelze nastavit - volání ioctl() pro /dev/rtc selhalo.\n"
+
+#: clock/rtc.c:272
+#, c-format
+msgid "ioctl(%s) was successful.\n"
+msgstr "Volání ioctl(%s) bylo úspěšné.\n"
+
+#: clock/rtc.c:302
+msgid "Open of /dev/rtc failed"
+msgstr "/dev/rtc nelze otevřít."
+
+#: clock/rtc.c:320 clock/rtc.c:365
+msgid ""
+"To manipulate the epoch value in the kernel, we must access the Linux 'rtc' "
+"device driver via the device special file /dev/rtc. This file does not "
+"exist on this system.\n"
+msgstr ""
+"Pro změnu hodnoty počátku epochy v jádře je nutné mít přístup ke zvláštnímu\n"
+"souboru /dev/rtc. Tento soubor neexistuje.\n"
+
+#: clock/rtc.c:331
+msgid "ioctl(RTC_EPOCH_READ) to /dev/rtc failed"
+msgstr "volání(RTC_EPOCH_READ) pro /dev/rtc selhalo"
+
+#: clock/rtc.c:337
+#, c-format
+msgid "we have read epoch %ld from /dev/rtc with RTC_EPOCH_READ ioctl.\n"
+msgstr ""
+"Z /dev/rtc byl pomocí RTC_EPOCH_READ ioctl zjištěn počátek epochy (%ld).\n"
+
+#. kernel would not accept this epoch value
+#. Hmm - bad habit, deciding not to do what the user asks
+#. just because one believes that the kernel might not like it.
+#: clock/rtc.c:357
+#, c-format
+msgid "The epoch value may not be less than 1900. You requested %ld\n"
+msgstr "Hodnota počátku epochy nesmí být menší než 1900 (požadováno %ld).\n"
+
+#: clock/rtc.c:374
+#, c-format
+msgid "setting epoch to %ld with RTC_EPOCH_SET ioctl to /dev/rtc.\n"
+msgstr ""
+"Nastavuji pomocí RTC_EPOCH_SET ioctl pro /dev/rtc počátek epochy na %ld.\n"
+
+#: clock/rtc.c:379
+msgid ""
+"The kernel device driver for /dev/rtc does not have the RTC_EPOCH_SET "
+"ioctl.\n"
+msgstr "Ovladač jádra pro /dev/rtc nepodporuje RTC_EPOCH_SET ioctl.\n"
+
+#: clock/rtc.c:382
+msgid "ioctl(RTC_EPOCH_SET) to /dev/rtc failed"
+msgstr "volání ioctl(RTC_EPOCH_SET) pro /dev/rtc selhalo"
+
+#: clock/shhopt.c:255 clock/shhopt.c:281
+#, c-format
+msgid "invalid number `%s'\n"
+msgstr "Chybné číslo `%s'\n"
+
+#: clock/shhopt.c:258 clock/shhopt.c:284
+#, c-format
+msgid "number `%s' to `%s' out of range\n"
+msgstr "Číslo `%s' na `%s'. Hodnota je mimo meze.\n"
+
+#: clock/shhopt.c:398
+#, c-format
+msgid "unrecognized option `%s'\n"
+msgstr "neznámý přepínač `%s'\n"
+
+#: clock/shhopt.c:411 clock/shhopt.c:449
+#, c-format
+msgid "option `%s' requires an argument\n"
+msgstr "přepínač `%s' vyžaduje argument\n"
+
+#: clock/shhopt.c:417
+#, c-format
+msgid "option `%s' doesn't allow an argument\n"
+msgstr "přepínač `%s' musí být zadán bez argumentu\n"
+
+#: clock/shhopt.c:439
+#, c-format
+msgid "unrecognized option `-%c'\n"
+msgstr "neznámý přepínač `-%c'\n"
+
+#: disk-utils/fdformat.c:33
+msgid "Formatting ... "
+msgstr "Formátuji ... "
+
+#: disk-utils/fdformat.c:51 disk-utils/fdformat.c:86
+msgid "done\n"
+msgstr "hotovo\n"
+
+#: disk-utils/fdformat.c:62
+msgid "Verifying ... "
+msgstr "Ověřuji ... "
+
+#: disk-utils/fdformat.c:73
+msgid "Read: "
+msgstr "Chyba při čtení: "
+
+#: disk-utils/fdformat.c:75
+#, c-format
+msgid "Problem reading cylinder %d, expected %d, read %d\n"
+msgstr "Chyba při čtení cylindru %d, předpoklad %d, přečteno %d\n"
+
+#: disk-utils/fdformat.c:81
+#, c-format
+msgid ""
+"bad data in cyl %d\n"
+"Continuing ... "
+msgstr ""
+"chybná data v cylindru %d\n"
+"Pokračuji ... "
+
+#: disk-utils/fdformat.c:96
+#, c-format
+msgid "usage: %s [ -n ] device\n"
+msgstr "Použití: %s [ -n ] zařízení\n"
+
+#: disk-utils/fdformat.c:122
+#, c-format
+msgid "%s: not a floppy device\n"
+msgstr "%s není zařízením pružného disku\n"
+
+#: disk-utils/fdformat.c:128
+msgid "Could not determine current format type"
+msgstr "Typ formátu nelze zjistit"
+
+#: disk-utils/fdformat.c:129
+#, c-format
+msgid "%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"
+msgstr "stran: %s, stop: %d, sekt/stopu %d. Celková kapacita %d kB.\n"
+
+#: disk-utils/fdformat.c:130
+msgid "Double"
+msgstr "2"
+
+#: disk-utils/fdformat.c:130
+msgid "Single"
+msgstr "1"
+
+#: disk-utils/fsck.minix.c:288
+#, c-format
+msgid "%s is mounted.\t "
+msgstr "%s je již připojeno.\t"
+
+#: disk-utils/fsck.minix.c:290
+msgid "Do you really want to continue"
+msgstr "Chcete opravdu pokračovat"
+
+#: disk-utils/fsck.minix.c:294
+msgid "check aborted.\n"
+msgstr "prohlídka ukončena.\n"
+
+#: disk-utils/fsck.minix.c:311 disk-utils/fsck.minix.c:331
+msgid "Zone nr < FIRSTZONE in file `"
+msgstr "číslo Zóny < FIRSTZONE v souboru `"
+
+#: disk-utils/fsck.minix.c:313 disk-utils/fsck.minix.c:333
+msgid "Zone nr >= ZONES in file `"
+msgstr "číslo Zóny >= počet ZÓN v souboru `"
+
+#: disk-utils/fsck.minix.c:318 disk-utils/fsck.minix.c:338
+msgid "Remove block"
+msgstr "Odstranit blok"
+
+#: disk-utils/fsck.minix.c:356
+msgid "Read error: unable to seek to block in file '"
+msgstr "Chyba při čtení: nelze posunout ukazovátko na blok v souboru '"
+
+#: disk-utils/fsck.minix.c:362
+msgid "Read error: bad block in file '"
+msgstr "Chyba při čtení: chybný blok v souboru '"
+
+#: disk-utils/fsck.minix.c:378
+msgid ""
+"Internal error: trying to write bad block\n"
+"Write request ignored\n"
+msgstr ""
+"Vnitřní chyba: pokus o zápis chybného bloku.\n"
+"Žádost o zápis ignorována.\n"
+
+#: disk-utils/fsck.minix.c:386
+msgid "Write error: bad block in file '"
+msgstr "Chyba při zápisu: chybný blok v souboru '"
+
+#: disk-utils/fsck.minix.c:607
+msgid "Warning: Firstzone != Norm_firstzone\n"
+msgstr "Varování: Firstzone != Norm_firstzone\n"
+
+#: disk-utils/fsck.minix.c:612 disk-utils/mkfs.minix.c:528
+#, c-format
+msgid "%ld inodes\n"
+msgstr "i-uzlů: %ld\n"
+
+#: disk-utils/fsck.minix.c:613 disk-utils/mkfs.minix.c:529
+#, c-format
+msgid "%ld blocks\n"
+msgstr "bloků: %ld\n"
+
+#: disk-utils/fsck.minix.c:614 disk-utils/mkfs.minix.c:530
+#, c-format
+msgid "Firstdatazone=%ld (%ld)\n"
+msgstr "Firstdatazone=%ld (%ld)\n"
+
+#: disk-utils/fsck.minix.c:615 disk-utils/mkfs.minix.c:531
+#, c-format
+msgid "Zonesize=%d\n"
+msgstr "Velikost zóny=%d\n"
+
+#: disk-utils/fsck.minix.c:616
+#, c-format
+msgid "Maxsize=%ld\n"
+msgstr "Maxvelikost=%ld\n"
+
+#: disk-utils/fsck.minix.c:617
+#, c-format
+msgid "Filesystem state=%d\n"
+msgstr "Stav systému souborů=%d\n"
+
+#: disk-utils/fsck.minix.c:618
+#, c-format
+msgid ""
+"namelen=%d\n"
+"\n"
+msgstr "namelen=%d\n"
+
+#: disk-utils/fsck.minix.c:632 disk-utils/fsck.minix.c:684
+#, c-format
+msgid "Inode %d marked not used, but used for file '"
+msgstr "I-uzel %d je označen jako nepoužívaný, ale je použit pro soubor '"
+
+#: disk-utils/fsck.minix.c:637 disk-utils/fsck.minix.c:688
+msgid "Mark in use"
+msgstr "Označen jako používaný"
+
+#: disk-utils/fsck.minix.c:659 disk-utils/fsck.minix.c:708
+#, c-format
+msgid " has mode %05o\n"
+msgstr " mód je %05o\n"
+
+#: disk-utils/fsck.minix.c:665 disk-utils/fsck.minix.c:713
+msgid "Warning: inode count too big.\n"
+msgstr "Varování: počet i-uzlů je příliš veliký.\n"
+
+#: disk-utils/fsck.minix.c:749 disk-utils/fsck.minix.c:783
+msgid "Block has been used before. Now in file `"
+msgstr "Blok byl použit již předtím. Nyní v souboru `"
+
+#: disk-utils/fsck.minix.c:752 disk-utils/fsck.minix.c:786
+#: disk-utils/fsck.minix.c:1114 disk-utils/fsck.minix.c:1123
+#: disk-utils/fsck.minix.c:1167 disk-utils/fsck.minix.c:1176
+msgid "Clear"
+msgstr "Smazat"
+
+#: disk-utils/fsck.minix.c:761 disk-utils/fsck.minix.c:795
+#, c-format
+msgid "Block %d in file `"
+msgstr "Blok %d v souboru `"
+
+#: disk-utils/fsck.minix.c:763 disk-utils/fsck.minix.c:797
+msgid "' is marked not in use."
+msgstr " je označen jako nepoužívaný."
+
+#: disk-utils/fsck.minix.c:764 disk-utils/fsck.minix.c:798
+msgid "Correct"
+msgstr "Opravit"
+
+#: disk-utils/fsck.minix.c:948 disk-utils/fsck.minix.c:1012
+msgid " contains a bad inode number for file '"
+msgstr " obsahuje chybné číslo i-uzlu pro soubor '"
+
+#: disk-utils/fsck.minix.c:950 disk-utils/fsck.minix.c:1014
+msgid " Remove"
+msgstr " Odstranit"
+
+#: disk-utils/fsck.minix.c:964 disk-utils/fsck.minix.c:1028
+msgid ": bad directory: '.' isn't first\n"
+msgstr ": chybný adresář: '.' není první\n"
+
+#: disk-utils/fsck.minix.c:971 disk-utils/fsck.minix.c:1036
+msgid ": bad directory: '..' isn't second\n"
+msgstr ": chybný adresář: '..' není druhý\n"
+
+#: disk-utils/fsck.minix.c:1071
+msgid ": bad directory: size<32"
+msgstr ": chybný adresář: velikost<32"
+
+#: disk-utils/fsck.minix.c:1090
+msgid ": bad directory: size < 32"
+msgstr ": chybný adresář: velikost < 32"
+
+#: disk-utils/fsck.minix.c:1113 disk-utils/fsck.minix.c:1166
+#, c-format
+msgid "Inode %d mode not cleared."
+msgstr "Mód I-uzlu %d není smazán."
+
+#: disk-utils/fsck.minix.c:1122 disk-utils/fsck.minix.c:1175
+#, c-format
+msgid "Inode %d not used, marked used in the bitmap."
+msgstr "I-uzel %d není používán a v bitmapě označen jako používaný."
+
+#: disk-utils/fsck.minix.c:1128 disk-utils/fsck.minix.c:1181
+#, c-format
+msgid "Inode %d used, marked unused in the bitmap."
+msgstr "I-uzel %d je používán a v bitmapě označen jako nepoužívaný."
+
+#: disk-utils/fsck.minix.c:1134 disk-utils/fsck.minix.c:1186
+#, c-format
+msgid "Inode %d (mode = %07o), i_nlinks=%d, counted=%d."
+msgstr "I-uzel %d (mode = %07o), i_nlinks=%d, napočítáno=%d."
+
+#: disk-utils/fsck.minix.c:1136 disk-utils/fsck.minix.c:1188
+msgid "Set i_nlinks to count"
+msgstr "Nastavit i_nlinks na počet"
+
+#: disk-utils/fsck.minix.c:1148 disk-utils/fsck.minix.c:1200
+#, c-format
+msgid "Zone %d: marked in use, no file uses it."
+msgstr "Zóna %d je označena jako používaná a žádné soubory ji nepoužívají."
+
+#: disk-utils/fsck.minix.c:1149 disk-utils/fsck.minix.c:1201
+msgid "Unmark"
+msgstr "Odznačit"
+
+#: disk-utils/fsck.minix.c:1153 disk-utils/fsck.minix.c:1205
+#, c-format
+msgid "Zone %d: %sin use, counted=%d\n"
+msgstr "Zóna %d: %spoužívaná, napočítáno=%d\n"
+
+#: disk-utils/fsck.minix.c:1154 disk-utils/fsck.minix.c:1206
+msgid "not "
+msgstr "není "
+
+#: disk-utils/fsck.minix.c:1182
+msgid "Set"
+msgstr "Nastavit"
+
+#: disk-utils/fsck.minix.c:1296
+#, c-format
+msgid "%s is clean, no check.\n"
+msgstr "%s je 'čisté', ověřování vynecháno.\n"
+
+#: disk-utils/fsck.minix.c:1300
+#, c-format
+msgid "Forcing filesystem check on %s.\n"
+msgstr "Kontrola systému souborů na %s vynucena.\n"
+
+#: disk-utils/fsck.minix.c:1302
+#, c-format
+msgid "Filesystem on %s is dirty, needs checking.\n"
+msgstr "Systém souborů na %s je 'špinavý', je třeba jej zkontrolovat.\n"
+
+#: disk-utils/fsck.minix.c:1331
+msgid ""
+"\n"
+"%6ld inodes used (%ld%%)\n"
+msgstr ""
+"\n"
+"používaných i-uzlů: %6ld (%ld%%)\n"
+
+#: disk-utils/fsck.minix.c:1336
+msgid "%6ld zones used (%ld%%)\n"
+msgstr "používaných zón: %6ld (%ld%%)\n"
+
+#: disk-utils/fsck.minix.c:1338
+#, c-format
+msgid ""
+"\n"
+"%6d regular files\n"
+"%6d directories\n"
+"%6d character device files\n"
+"%6d block device files\n"
+"%6d links\n"
+"%6d symbolic links\n"
+"------\n"
+"%6d files\n"
+msgstr ""
+"\n"
+" obyčejných souborů: %6d\n"
+" adresářů: %6d\n"
+" znakových zařízení: %6d\n"
+" blokových zařízení: %6d\n"
+" odkazů: %6d\n"
+" symbolických odkazů: %6d\n"
+"------\n"
+"souborů: %6d\n"
+
+#: disk-utils/fsck.minix.c:1351
+msgid ""
+"----------------------------\n"
+"FILE SYSTEM HAS BEEN CHANGED\n"
+"----------------------------\n"
+msgstr ""
+"----------------------------\n"
+"SOUBOROVÝ SYSTÉM BYL ZMĚNĚN \n"
+"----------------------------\n"
+
+#: disk-utils/mkfs.c:66
+msgid "Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n"
+msgstr "Použití: mkfs [-V] [-t sstyp] [ss-volby] zařízení [velikost]\n"
+
+#: disk-utils/mkfs.c:80 fdisk/cfdisk.c:330 getopt-1.0.3b/getopt.c:85
+#: getopt-1.0.3b/getopt.c:95 login-utils/wall.c:221 mount/sundries.c:195
+#, c-format
+msgid "%s: Out of memory!\n"
+msgstr "%s: Nedostatek paměti!\n"
+
+#: disk-utils/mkfs.c:89
+msgid "mkfs version "
+msgstr "mkfs verze "
+
+#: disk-utils/mkfs.minix.c:186
+#, c-format
+msgid "Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
+msgstr "Použití: %s [ -n ] [-c | -l soubor] [-nXX] [-iXX] /dev/jméno [bloky]\n"
+
+#: disk-utils/mkfs.minix.c:210
+#, c-format
+msgid "%s is mounted; will not make a filesystem here!"
+msgstr "%s je připojeno; systém souborů zde vytvářet nebudu!"
+
+#: disk-utils/mkfs.minix.c:271
+msgid "seek to boot block failed in write_tables"
+msgstr "chyba při posunu ukazovátka na startovací blok ve write_tables"
+
+#: disk-utils/mkfs.minix.c:273
+msgid "unable to clear boot sector"
+msgstr "startovací blok nelze smazat"
+
+#: disk-utils/mkfs.minix.c:275
+msgid "seek failed in write_tables"
+msgstr "chyba při posunu ukazovátka ve write_tables"
+
+#: disk-utils/mkfs.minix.c:277
+msgid "unable to write super-block"
+msgstr "superblok nelze zapsat"
+
+#: disk-utils/mkfs.minix.c:279
+msgid "unable to write inode map"
+msgstr "mapu i-uzlů nelze zapsat"
+
+#: disk-utils/mkfs.minix.c:281
+msgid "unable to write zone map"
+msgstr "mapu zón nelze zapsat"
+
+#: disk-utils/mkfs.minix.c:283
+msgid "unable to write inodes"
+msgstr "i-uzly nelze zapsat"
+
+#: disk-utils/mkfs.minix.c:290
+msgid "seek failed in write_block"
+msgstr "chyba při posunu ukazovátka ve write_block"
+
+#: disk-utils/mkfs.minix.c:292
+msgid "write failed in write_block"
+msgstr "chyba při zápisu ve write_block"
+
+#. Could make triple indirect block here
+#: disk-utils/mkfs.minix.c:300 disk-utils/mkfs.minix.c:374
+#: disk-utils/mkfs.minix.c:425
+msgid "too many bad blocks"
+msgstr "příliš mnoho chybných bloků"
+
+#: disk-utils/mkfs.minix.c:308
+msgid "not enough good blocks"
+msgstr "nedostatek korektních bloků"
+
+#: disk-utils/mkfs.minix.c:517
+msgid "unable to allocate buffers for maps"
+msgstr "buffery pro mapy nelze alokovat"
+
+#: disk-utils/mkfs.minix.c:526
+msgid "unable to allocate buffer for inodes"
+msgstr "buffery pro i-uzly nelze alokovat"
+
+#: disk-utils/mkfs.minix.c:532
+#, c-format
+msgid ""
+"Maxsize=%ld\n"
+"\n"
+msgstr ""
+"Maxvelikost=%ld\n"
+"\n"
+
+#: disk-utils/mkfs.minix.c:546
+msgid "seek failed during testing of blocks"
+msgstr "chyba při posunu ukazovátka v průběhu kontroly bloků"
+
+#: disk-utils/mkfs.minix.c:554
+msgid "Weird values in do_check: probably bugs\n"
+msgstr "Nesprávné hodnoty v do_check: pravděpodobně chyby\n"
+
+#: disk-utils/mkfs.minix.c:585
+msgid "seek failed in check_blocks"
+msgstr "chyba při posunu ukazovátka v check_blocks"
+
+#: disk-utils/mkfs.minix.c:594
+msgid "bad blocks before data-area: cannot make fs"
+msgstr "chybné bloky před datovou oblastí: systém souborů nelze vytvořit"
+
+#: disk-utils/mkfs.minix.c:600 disk-utils/mkfs.minix.c:622
+#, c-format
+msgid "%d bad blocks\n"
+msgstr "chybných bloků: %d\n"
+
+#: disk-utils/mkfs.minix.c:602 disk-utils/mkfs.minix.c:624
+msgid "one bad block\n"
+msgstr "chybných bloků: 1\n"
+
+#: disk-utils/mkfs.minix.c:614
+msgid "can't open file of bad blocks"
+msgstr "soubor chybných bloků nelze otevřít"
+
+#: disk-utils/mkfs.minix.c:637 disk-utils/mkfs.minix.c:640
+msgid "bad inode size"
+msgstr "chybná velikost i-uzlu"
+
+#: disk-utils/mkfs.minix.c:669
+#, c-format
+msgid "%s: not compiled with minix v2 support\n"
+msgstr "při překladu %s nebyla zvolena podpora minix v2\n"
+
+#: disk-utils/mkfs.minix.c:685
+msgid "strtol error: number of blocks not specified"
+msgstr "chyba strtol: počet bloků nebyl zadán"
+
+#: disk-utils/mkfs.minix.c:717
+#, c-format
+msgid "unable to open %s"
+msgstr "%s nelze otevřít"
+
+#: disk-utils/mkfs.minix.c:719
+#, c-format
+msgid "unable to stat %s"
+msgstr "o %s nelze získat informace"
+
+#: disk-utils/mkfs.minix.c:723
+#, c-format
+msgid "will not try to make filesystem on '%s'"
+msgstr "nebudu se pokoušet vytvořit systém souborů na '%s'"
+
+#: disk-utils/mkswap.c:101
+#, c-format
+msgid "Assuming pages of size %d\n"
+msgstr "Předpokládám velikost stránek %d\n"
+
+#: disk-utils/mkswap.c:234
+msgid "one bad page\n"
+msgstr "chybných stránek: 1\n"
+
+#: disk-utils/mkswap.c:236
+#, c-format
+msgid "%d bad pages\n"
+msgstr "chybných stránek: %d\n"
+
+#: disk-utils/mkswap.c:340
+#, c-format
+msgid "%s: error: Nowhere to set up swap on?\n"
+msgstr "%s: chyba: Kde mám vytvořit odkládací prostor?\n"
+
+#: disk-utils/mkswap.c:349
+#, c-format
+msgid "%s: error: size %ld is larger than device size %d\n"
+msgstr "%s: chyba: zadaná velikost (%ld) je větší než velikost zařízení (%d)\n"
+
+#: disk-utils/mkswap.c:367
+#, c-format
+msgid "%s: error: unknown version %d\n"
+msgstr "%s: chyba: neznámá verze %d\n"
+
+#: disk-utils/mkswap.c:373
+#, c-format
+msgid "%s: error: swap area needs to be at least %ldkB\n"
+msgstr "%s: chyba: minimální velikost odkládacího prostoru je %ldkB\n"
+
+#: disk-utils/mkswap.c:392
+#, c-format
+msgid "%s: warning: truncating swap area to %ldkB\n"
+msgstr "%s: varování: odkládací prostor useknut na %ldkB\n"
+
+#: disk-utils/mkswap.c:419
+#, c-format
+msgid ""
+"%s: Device '%s' contains a valid Sun disklabel.\n"
+"This probably means creating v0 swap would destroy your partition table\n"
+"No swap created. If you really want to create swap v0 on that device, use\n"
+"the -f option to force it.\n"
+msgstr ""
+"%s: Zařízení '%s' obsahuje korektní 'Sun popis disku'.\n"
+"To znamená, že vytvoření odkládacího prostoru v0 by pravděpodobně zničilo\n"
+"Vaší tabulku rozdělení disku. Odkládací prostor nebyl vytvořen. Pokud "
+"opravdu\n"
+"chcete vytvořit odkládací prostor v0, použijte přepínač -f pro vynucení.\n"
+
+#: disk-utils/mkswap.c:444
+#, c-format
+msgid "Setting up swapspace version %d, size = %ld bytes\n"
+msgstr "Vytvářím odkládací prostor verze %d, velikost (v bajtech) = %ld\n"
+
+#: disk-utils/setfdprm.c:30
+#, c-format
+msgid "Invalid number: %s\n"
+msgstr "Chybné číslo: %s\n"
+
+#: disk-utils/setfdprm.c:80
+#, c-format
+msgid "Syntax error: '%s'\n"
+msgstr "Syntaktická chyba: '%s'\n"
+
+#: disk-utils/setfdprm.c:90
+#, c-format
+msgid "No such parameter set: '%s'\n"
+msgstr "Chybný argument: '%s'\n"
+
+#: disk-utils/setfdprm.c:100
+#, c-format
+msgid "usage: %s [ -p ] dev name\n"
+msgstr "Použití: %s [ -p ] jméno zařízení\n"
+
+#: disk-utils/setfdprm.c:101
+#, c-format
+msgid ""
+" %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n"
+msgstr ""
+" %s [ -p ] zařízení velikost sekt hlavy stopy stretch gap rychlost\n"
+" spec1 fmt_gap\n"
+
+#: disk-utils/setfdprm.c:104
+#, c-format
+msgid " %s [ -c | -y | -n | -d ] dev\n"
+msgstr " %s [ -c | -y | -n | -d ] zařízení\n"
+
+#: disk-utils/setfdprm.c:106
+#, c-format
+msgid " %s [ -c | -y | -n ] dev\n"
+msgstr " %s [ -c | -y | -n ] zařízení\n"
+
+#: fdisk/cfdisk.c:355 fdisk/cfdisk.c:1860
+msgid "Unusable"
+msgstr "Nepoužitelné"
+
+#: fdisk/cfdisk.c:357 fdisk/cfdisk.c:1862
+msgid "Free Space"
+msgstr "Volný prostor"
+
+#: fdisk/cfdisk.c:360
+msgid "Linux ext2"
+msgstr "Linux ext2"
+
+#. also Solaris
+#: fdisk/cfdisk.c:362 fdisk/i386_sys_types.c:56
+msgid "Linux"
+msgstr "Linux"
+
+#: fdisk/cfdisk.c:365
+msgid "OS/2 HPFS"
+msgstr "OS/2 HPFS"
+
+#: fdisk/cfdisk.c:367
+msgid "OS/2 IFS"
+msgstr "OS/2 IFS"
+
+#: fdisk/cfdisk.c:371
+msgid "NTFS"
+msgstr "NTFS"
+
+#: fdisk/cfdisk.c:382
+msgid "Disk has been changed.\n"
+msgstr "Na disku byly provedeny změny.\n"
+
+#: fdisk/cfdisk.c:383
+msgid "Reboot the system to ensure the partition table is correctly updated.\n"
+msgstr ""
+"Restartujte systém, aby byla jistota, že tabulka rozdělení disku byla\n"
+"korektně změněna.\n"
+
+#: fdisk/cfdisk.c:386
+msgid ""
+"\n"
+"WARNING: If you have created or modified any\n"
+"DOS 6.x partitions, please see the cfdisk manual\n"
+"page for additional information.\n"
+msgstr ""
+"\n"
+"VAROVÁNÍ: Pokud jste vytvořil či změnil nějaké\n"
+"DOS 6.x diskové oddíly, přečtěte si prosím manuál\n"
+"programu cfdisk, abyste získal dodatečné informace.\n"
+
+#: fdisk/cfdisk.c:481
+msgid "FATAL ERROR"
+msgstr "OSUDOVÁ CHYBA"
+
+#: fdisk/cfdisk.c:490
+msgid "Press any key to exit cfdisk"
+msgstr "Stiskněte jakoukoliv klávesu pro ukončení programu cfdisk"
+
+#: fdisk/cfdisk.c:526 fdisk/cfdisk.c:534
+msgid "Cannot seek on disk drive"
+msgstr "Nelze posunout ukazovátko na disku"
+
+#: fdisk/cfdisk.c:528
+msgid "Cannot read disk drive"
+msgstr "Z disku nelze číst"
+
+#: fdisk/cfdisk.c:536
+msgid "Cannot write disk drive"
+msgstr "Nelze zapisovat na disk"
+
+#: fdisk/cfdisk.c:773
+msgid "Too many partitions"
+msgstr "příliš mnoho diskových oddílů"
+
+#: fdisk/cfdisk.c:778
+msgid "Partition begins before sector 0"
+msgstr "Diskový oddíl začíná před sektorem 0"
+
+#: fdisk/cfdisk.c:783
+msgid "Partition ends before sector 0"
+msgstr "Diskový oddíl končí před sektorem 0"
+
+#: fdisk/cfdisk.c:788
+msgid "Partition begins after end-of-disk"
+msgstr "Diskový oddíl začíná za koncem disku"
+
+#: fdisk/cfdisk.c:793
+msgid "Partition ends after end-of-disk"
+msgstr "Diskový oddíl končí za koncem disku"
+
+#: fdisk/cfdisk.c:816
+msgid "logical partitions not in disk order"
+msgstr "logické diskový oddíl jsou chybně seřazeny"
+
+#: fdisk/cfdisk.c:819
+msgid "logical partitions overlap"
+msgstr "logické diskové oddíly se vzájemně překrývají"
+
+#: fdisk/cfdisk.c:821
+msgid "extended logical partitions overlap"
+msgstr "rozšířené diskové oddíly se vzájemně překrývají"
+
+#: fdisk/cfdisk.c:851
+msgid ""
+"!!!! Internal error creating logical drive with no extended partition !!!!"
+msgstr ""
+"!!!! Vnitřní chyba při vytváření logického disku bez rozšířených diskových "
+"oddílů !!!!"
+
+#: fdisk/cfdisk.c:862 fdisk/cfdisk.c:874
+msgid ""
+"Cannot create logical drive here -- would create two extended partitions"
+msgstr ""
+"Zde nelze vytvořit logický disk -- vznikly by dva rozšířené diskové oddíly"
+
+#: fdisk/cfdisk.c:1024
+msgid "Menu item too long. Menu may look odd."
+msgstr "Položka nabídky je příliš dlouhá. Nabídka může vypadat podivně."
+
+#: fdisk/cfdisk.c:1080
+msgid "Menu without direction. Defaulting horizontal."
+msgstr "Nabídka nemá zadaný směr. Používám horizontální."
+
+#: fdisk/cfdisk.c:1210
+msgid "Illegal key"
+msgstr "Chybná klávesa"
+
+#: fdisk/cfdisk.c:1233
+msgid "Press a key to continue"
+msgstr "Stiskněte klávesu pro pokračování"
+
+#: fdisk/cfdisk.c:1280 fdisk/cfdisk.c:1831 fdisk/cfdisk.c:2354
+#: fdisk/cfdisk.c:2356
+msgid "Primary"
+msgstr "Primární"
+
+#: fdisk/cfdisk.c:1280
+msgid "Create a new primary partition"
+msgstr "Vytvořit nový primární diskový oddíl"
+
+#: fdisk/cfdisk.c:1281 fdisk/cfdisk.c:1831 fdisk/cfdisk.c:2353
+#: fdisk/cfdisk.c:2356
+msgid "Logical"
+msgstr "Logický"
+
+#: fdisk/cfdisk.c:1281
+msgid "Create a new logical partition"
+msgstr "Vytvořit nový logický diskový oddíl"
+
+#: fdisk/cfdisk.c:1282 fdisk/cfdisk.c:1335 fdisk/cfdisk.c:2043
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: fdisk/cfdisk.c:1282 fdisk/cfdisk.c:1335
+msgid "Don't create a partition"
+msgstr "Nevytvářet diskový oddíl"
+
+#: fdisk/cfdisk.c:1298
+msgid "!!! Internal error !!!"
+msgstr "!!! Vnitřní chyba !!!"
+
+#: fdisk/cfdisk.c:1301
+msgid "Size (in MB): "
+msgstr "Velikost (v MB): "
+
+#: fdisk/cfdisk.c:1333
+msgid "Beginning"
+msgstr "Začátek"
+
+#: fdisk/cfdisk.c:1333
+msgid "Add partition at beginning of free space"
+msgstr "Vytvořit diskový oddíl na začátku volného prostoru"
+
+#: fdisk/cfdisk.c:1334
+msgid "End"
+msgstr "Konec"
+
+#: fdisk/cfdisk.c:1334
+msgid "Add partition at end of free space"
+msgstr "Vytvořit diskový oddíl na konci volného prostoru"
+
+#: fdisk/cfdisk.c:1352
+msgid "No room to create the extended partition"
+msgstr "Pro rozšířený diskový oddíl není dostatek místa"
+
+#. probably a file or cdrom
+#: fdisk/cfdisk.c:1384
+msgid "Cannot read disk drive geometry"
+msgstr "Geometrii disku nelze zjistit"
+
+#: fdisk/cfdisk.c:1399
+msgid "Bad signature on partition table"
+msgstr "Chybný podpis na tabulce rozdělení disku"
+
+#: fdisk/cfdisk.c:1402
+msgid "Cannot get disk size"
+msgstr "Velikost disku nelze zjistit"
+
+#: fdisk/cfdisk.c:1420
+msgid "Cannot derive a geometry from an empty partition table"
+msgstr "Z prázdné tabulky rozdělení disku nelze odvodit geometrii."
+
+#: fdisk/cfdisk.c:1428
+msgid "Cannot derive a geometry from the partition table"
+msgstr "Z tabulky rozdělení disku nelze odvodit geometrii."
+
+#: fdisk/cfdisk.c:1461
+msgid "Cannot open disk drive"
+msgstr "Disk nelze otevřít"
+
+#: fdisk/cfdisk.c:1463 fdisk/cfdisk.c:1647
+msgid "Opened disk read-only - you have no permission to write"
+msgstr "Disk byl otevřen pouze pro čtení - nemáte práva pro zápis"
+
+#. avoid snprintf - it does not exist on ancient systems
+#: fdisk/cfdisk.c:1506
+msgid "Bad primary partition"
+msgstr "Chybný primární diskový oddíl"
+
+#. avoid snprintf
+#: fdisk/cfdisk.c:1537
+msgid "Bad logical partition"
+msgstr "Chybný logický diskový oddíl"
+
+#: fdisk/cfdisk.c:1659
+msgid "Warning!! This may destroy data on your disk!"
+msgstr "Varování!! Toto může vést ke zničení dat na Vašem disku!"
+
+#: fdisk/cfdisk.c:1663
+msgid "Are you sure you want write the partition table to disk? (yes or no): "
+msgstr ""
+"Jste si jist, že chcete uložit tabulku rozdělení disku na disk? (yes či no):"
+
+#: fdisk/cfdisk.c:1669
+msgid "no"
+msgstr "ne"
+
+#: fdisk/cfdisk.c:1670
+msgid "Did not write partition table to disk"
+msgstr "Neukládat tabulku rozdělení disku na disk"
+
+#: fdisk/cfdisk.c:1672
+msgid "yes"
+msgstr "ano"
+
+#: fdisk/cfdisk.c:1675
+msgid "Please enter `yes' or `no'"
+msgstr "Zadejte `yes' či `no'"
+
+#: fdisk/cfdisk.c:1679
+msgid "Writing partition table to disk..."
+msgstr "Ukládám tabulku rozdělení disku na disk"
+
+#: fdisk/cfdisk.c:1704 fdisk/cfdisk.c:1708
+msgid "Wrote partition table to disk"
+msgstr "Tabulka rozdělení disku byla uložena na disk"
+
+#: fdisk/cfdisk.c:1706
+msgid ""
+"Wrote partition table, but re-read table failed. Reboot to update table."
+msgstr ""
+"Tabulka byla uložena, ale nepodařilo se ji znovu načíst. Restartujte systém."
+
+#: fdisk/cfdisk.c:1716
+msgid ""
+"Not precisely one primary partition is bootable. DOS MBR cannot boot this."
+msgstr ""
+"Více než 1 primární diskový oddíl je startovací. DOS MBR takto nenastartuje."
+
+#: fdisk/cfdisk.c:1774 fdisk/cfdisk.c:1892 fdisk/cfdisk.c:1984
+msgid "Enter filename or press RETURN to display on screen: "
+msgstr "Zadejte jméno souboru či stiskněte RETURN pro zobrazení: "
+
+#: fdisk/cfdisk.c:1782 fdisk/cfdisk.c:1900 fdisk/cfdisk.c:1992
+#, c-format
+msgid "Cannot open file '%s'"
+msgstr "Soubor '%s' nelze otevřít"
+
+#: fdisk/cfdisk.c:1793
+#, c-format
+msgid "Disk Drive: %s\n"
+msgstr "Disk: %s\n"
+
+#: fdisk/cfdisk.c:1795
+msgid "Sector 0:\n"
+msgstr "Sektor 0:\n"
+
+#: fdisk/cfdisk.c:1802
+#, c-format
+msgid "Sector %d:\n"
+msgstr "Sektor %d:\n"
+
+#: fdisk/cfdisk.c:1822
+msgid " None "
+msgstr " Žádný "
+
+#: fdisk/cfdisk.c:1824
+msgid " Pri/Log"
+msgstr " Pri/Log"
+
+#: fdisk/cfdisk.c:1826
+msgid " Primary"
+msgstr " Primární"
+
+#: fdisk/cfdisk.c:1828
+msgid " Logical"
+msgstr " Logický"
+
+#. odd flag on end
+#. type id
+#. type name
+#: fdisk/cfdisk.c:1866 fdisk/fdisk.c:1080 fdisk/fdisk.c:1229
+#: fdisk/fdisksgilabel.c:224 fdisk/fdisksunlabel.c:646 fdisk/sfdisk.c:560
+msgid "Unknown"
+msgstr "Neznámý"
+
+#: fdisk/cfdisk.c:1872
+#, c-format
+msgid "Boot (%02X)"
+msgstr "Startovací (%02X)"
+
+#: fdisk/cfdisk.c:1874 fdisk/cfdisk.c:2362
+#, c-format
+msgid "Unknown (%02X)"
+msgstr "Neznámý (%02X)"
+
+#: fdisk/cfdisk.c:1876
+#, c-format
+msgid "None (%02X)"
+msgstr "Žádný (%02X)"
+
+#: fdisk/cfdisk.c:1911 fdisk/cfdisk.c:2003
+#, c-format
+msgid "Partition Table for %s\n"
+msgstr "Tabulka rozdělení disku pro %s\n"
+
+#: fdisk/cfdisk.c:1913
+msgid " First Last\n"
+msgstr " První Poslední\n"
+
+#: fdisk/cfdisk.c:1914
+msgid ""
+" # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n"
+msgstr ""
+" # Typ Sektor Sektor Posun Délka ID systému souborů "
+"Příznaky\n"
+
+#: fdisk/cfdisk.c:1915
+msgid ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+msgstr ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+
+#: fdisk/cfdisk.c:2005
+msgid " ---Starting--- ----Ending---- Start Number of\n"
+msgstr " ---Počátek--- ----Konec---- Počáteční\n"
+
+#: fdisk/cfdisk.c:2006
+msgid " # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n"
+msgstr " # Příz Hlav Sekt Cyl ID Hlav Sekt Cyl sektor Sektorů\n"
+
+#: fdisk/cfdisk.c:2007
+msgid "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+msgstr "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+
+#: fdisk/cfdisk.c:2040
+msgid "Raw"
+msgstr "Přímý"
+
+#: fdisk/cfdisk.c:2040
+msgid "Print the table using raw data format"
+msgstr "Vytisknout tabulku v přímém datovém formátu"
+
+#: fdisk/cfdisk.c:2041 fdisk/cfdisk.c:2143
+msgid "Sectors"
+msgstr "Sektory"
+
+#: fdisk/cfdisk.c:2041
+msgid "Print the table ordered by sectors"
+msgstr "Vytisknout tabulku seřazenou dle sektorů"
+
+#: fdisk/cfdisk.c:2042
+msgid "Table"
+msgstr "Tabulka"
+
+#: fdisk/cfdisk.c:2042
+msgid "Just print the partition table"
+msgstr "Vytisknout pouze tabulku rozdělení disku"
+
+#: fdisk/cfdisk.c:2043
+msgid "Don't print the table"
+msgstr "Netisknout tabulku"
+
+#: fdisk/cfdisk.c:2071
+msgid "Help Screen for cfdisk"
+msgstr "Nápověda pro cfdisk"
+
+#: fdisk/cfdisk.c:2073
+msgid "This is cfdisk, a curses based disk partitioning program, which"
+msgstr "Toto je cfdisk, program pro vytváření diskových oddílů založený"
+
+#: fdisk/cfdisk.c:2074
+msgid "allows you to create, delete and modify partitions on your hard"
+msgstr "na knihovně curses. Umožňuje vytváření, mazání a modifikaci"
+
+#: fdisk/cfdisk.c:2075
+msgid "disk drive."
+msgstr "diskových oddílů na Vašem pevném disku."
+
+#: fdisk/cfdisk.c:2077
+msgid "Copyright (C) 1994-1999 Kevin E. Martin & aeb"
+msgstr "Copyright (C) 1994-1999 Kevin E. Martin & aeb"
+
+#: fdisk/cfdisk.c:2079
+msgid "Command Meaning"
+msgstr "Příkaz Význam"
+
+#: fdisk/cfdisk.c:2080
+msgid "------- -------"
+msgstr "------- -------"
+
+#: fdisk/cfdisk.c:2081
+msgid " b Toggle bootable flag of the current partition"
+msgstr " b Přepne aktuálnímu oddílu příznak startovatelnosti"
+
+#: fdisk/cfdisk.c:2082
+msgid " d Delete the current partition"
+msgstr " d Smaže aktuální oddíl"
+
+#: fdisk/cfdisk.c:2083
+msgid " g Change cylinders, heads, sectors-per-track parameters"
+msgstr " g Změní geometrii"
+
+#: fdisk/cfdisk.c:2084
+msgid " WARNING: This option should only be used by people who"
+msgstr " VAROVÁNÍ: Tato volba by měla být používána pouze lidmi,"
+
+#: fdisk/cfdisk.c:2085
+msgid " know what they are doing."
+msgstr " kteří vědí, co činí."
+
+#: fdisk/cfdisk.c:2086
+msgid " h Print this screen"
+msgstr " h Vypíše tuto nápovědu"
+
+#: fdisk/cfdisk.c:2087
+msgid " m Maximize disk usage of the current partition"
+msgstr " m Maximálně zvětší aktuální diskový oddíl "
+
+#: fdisk/cfdisk.c:2088
+msgid " Note: This may make the partition incompatible with"
+msgstr " Poznámka: Toto může učinit oddíl nekompatibilní s"
+
+#: fdisk/cfdisk.c:2089
+msgid " DOS, OS/2, ..."
+msgstr " DOS, OS/2 ..."
+
+#: fdisk/cfdisk.c:2090
+msgid " n Create new partition from free space"
+msgstr " n Vytvořit na volném místě nový oddíl"
+
+#: fdisk/cfdisk.c:2091
+msgid " p Print partition table to the screen or to a file"
+msgstr " p Vypíše tabulku rozdělení disku na obrazovku či do souboru"
+
+#: fdisk/cfdisk.c:2092
+msgid " There are several different formats for the partition"
+msgstr " Při výpisu tabulky rozdělení disku si můžete zvolit"
+
+#: fdisk/cfdisk.c:2093
+msgid " that you can choose from:"
+msgstr " z několika formátů:"
+
+#: fdisk/cfdisk.c:2094
+msgid " r - Raw data (exactly what would be written to disk)"
+msgstr " r - Přímý (přesně to, co by bylo zapsáno na disk)"
+
+#: fdisk/cfdisk.c:2095
+msgid " s - Table ordered by sectors"
+msgstr " s - Tabulka seřazená dle sektorů"
+
+#: fdisk/cfdisk.c:2096
+msgid " t - Table in raw format"
+msgstr " t - Tabulka v přímém formátu"
+
+#: fdisk/cfdisk.c:2097
+msgid " q Quit program without writing partition table"
+msgstr " q Ukončí program bez uložení tabulky rozdělení disku"
+
+#: fdisk/cfdisk.c:2098
+msgid " t Change the filesystem type"
+msgstr " t Změní typ systému souborů"
+
+#: fdisk/cfdisk.c:2099
+msgid " u Change units of the partition size display"
+msgstr " u Změní jednotky pro zobrazení velikosti oddílu"
+
+#: fdisk/cfdisk.c:2100
+msgid " Rotates through Mb, sectors and cylinders"
+msgstr " Cykluje mezi MB, sektory a cylindry"
+
+#: fdisk/cfdisk.c:2101
+msgid " W Write partition table to disk (must enter upper case W)"
+msgstr " W Uloží tabulku rozdělení disku (pouze velké W)"
+
+#: fdisk/cfdisk.c:2102
+msgid " Since this might destroy data on the disk, you must"
+msgstr " Jelikož to může zničit na disku, musíte to potvrdit"
+
+#: fdisk/cfdisk.c:2103
+msgid " either confirm or deny the write by entering `yes' or"
+msgstr " nebo odmítnout napsáním `yes' nebo"
+
+#: fdisk/cfdisk.c:2104
+msgid " `no'"
+msgstr " `no'"
+
+#: fdisk/cfdisk.c:2105
+msgid "Up Arrow Move cursor to the previous partition"
+msgstr "Nahoru Přesune kurzor na předcházející oddíl."
+
+#: fdisk/cfdisk.c:2106
+msgid "Down Arrow Move cursor to the next partition"
+msgstr "Dolů Přesune kurzor na další oddíl."
+
+#: fdisk/cfdisk.c:2107
+msgid "CTRL-L Redraws the screen"
+msgstr "CTRL-L Překreslí obrazovku"
+
+#: fdisk/cfdisk.c:2108
+msgid " ? Print this screen"
+msgstr " ? Vypíše tuto nápovědu"
+
+#: fdisk/cfdisk.c:2110
+msgid "Note: All of the commands can be entered with either upper or lower"
+msgstr "Poznámka: Všechny příkazy mohou být zadány malými i velkými písmeny"
+
+#: fdisk/cfdisk.c:2111
+msgid "case letters (except for Writes)."
+msgstr "(s vyjímkou zápisu - W)."
+
+#: fdisk/cfdisk.c:2141 fdisk/cfdisk.c:2443 fdisk/fdisksunlabel.c:305
+#: fdisk/fdisksunlabel.c:307
+msgid "Cylinders"
+msgstr "Cylindry"
+
+#: fdisk/cfdisk.c:2141
+msgid "Change cylinder geometry"
+msgstr "Změní geometrii cylindrů"
+
+#: fdisk/cfdisk.c:2142 fdisk/fdisksunlabel.c:302
+msgid "Heads"
+msgstr "Hlavy"
+
+#: fdisk/cfdisk.c:2142
+msgid "Change head geometry"
+msgstr "Změní geometrii hlav"
+
+#: fdisk/cfdisk.c:2143
+msgid "Change sector geometry"
+msgstr "Změní geometrii sektorů"
+
+#: fdisk/cfdisk.c:2144
+msgid "Done"
+msgstr "Hotovo"
+
+#: fdisk/cfdisk.c:2144
+msgid "Done with changing geometry"
+msgstr "Geometrie změněna"
+
+#: fdisk/cfdisk.c:2157
+msgid "Enter the number of cylinders: "
+msgstr "Zadejte počet cylindrů: "
+
+#: fdisk/cfdisk.c:2164 fdisk/cfdisk.c:2707
+msgid "Illegal cylinders value"
+msgstr "Chybný počet cylindrů"
+
+#: fdisk/cfdisk.c:2170
+msgid "Enter the number of heads: "
+msgstr "Zadejte počet hlav: "
+
+#: fdisk/cfdisk.c:2177 fdisk/cfdisk.c:2717
+msgid "Illegal heads value"
+msgstr "Chybný počet hlav"
+
+#: fdisk/cfdisk.c:2183
+msgid "Enter the number of sectors per track: "
+msgstr "Zadejte počet sektorů na stopu: "
+
+#: fdisk/cfdisk.c:2190 fdisk/cfdisk.c:2724
+msgid "Illegal sectors value"
+msgstr "Chybný počet sektorů"
+
+#: fdisk/cfdisk.c:2289
+msgid "Enter filesystem type: "
+msgstr "Zadejte typ systému souborů: "
+
+#: fdisk/cfdisk.c:2307
+msgid "Cannot change FS Type to empty"
+msgstr "Nelze nastavit typ SS na prázdný"
+
+#: fdisk/cfdisk.c:2309
+msgid "Cannot change FS Type to extended"
+msgstr "Nelze nastavit typ SS na rozšířený"
+
+#: fdisk/cfdisk.c:2331 fdisk/fdisksunlabel.c:44
+msgid "Boot"
+msgstr "Startovací"
+
+#: fdisk/cfdisk.c:2333
+#, c-format
+msgid "Unk(%02X)"
+msgstr "Nez(%02X)"
+
+#: fdisk/cfdisk.c:2336 fdisk/cfdisk.c:2339
+msgid ", NC"
+msgstr ", NC"
+
+#: fdisk/cfdisk.c:2344 fdisk/cfdisk.c:2347
+msgid "NC"
+msgstr "NC"
+
+#: fdisk/cfdisk.c:2355
+msgid "Pri/Log"
+msgstr "Pri/Log"
+
+#: fdisk/cfdisk.c:2429
+#, c-format
+msgid "Disk Drive: %s"
+msgstr "Disk: %s"
+
+#: fdisk/cfdisk.c:2431
+#, c-format
+msgid "Heads: %d Sectors per Track: %d Cylinders: %d"
+msgstr "Hlav: %d Sektorů na stopu: %d Cylindrů: %d"
+
+#: fdisk/cfdisk.c:2435
+msgid "Name"
+msgstr "Jméno"
+
+#: fdisk/cfdisk.c:2436
+msgid "Flags"
+msgstr "Příznaky"
+
+#: fdisk/cfdisk.c:2437
+msgid "Part Type"
+msgstr "Typ oddílu"
+
+#: fdisk/cfdisk.c:2438
+msgid "FS Type"
+msgstr "Typ SS"
+
+#: fdisk/cfdisk.c:2439
+msgid "[Label]"
+msgstr "[Jméno]"
+
+#: fdisk/cfdisk.c:2441
+msgid " Sectors"
+msgstr " Sektory"
+
+#: fdisk/cfdisk.c:2445
+msgid "Size (MB)"
+msgstr "Velikost (MB)"
+
+#: fdisk/cfdisk.c:2500
+msgid "Bootable"
+msgstr "Start"
+
+#: fdisk/cfdisk.c:2500
+msgid "Toggle bootable flag of the current partition"
+msgstr "Přepne příznak startovatelnosti aktuálnímu diskovému oddílu"
+
+#: fdisk/cfdisk.c:2501
+msgid "Delete"
+msgstr "Smazat"
+
+#: fdisk/cfdisk.c:2501
+msgid "Delete the current partition"
+msgstr "Smaže aktuální diskový oddíl"
+
+#: fdisk/cfdisk.c:2502
+msgid "Geometry"
+msgstr "Geometrie"
+
+#: fdisk/cfdisk.c:2502
+msgid "Change disk geometry (experts only)"
+msgstr "Změní geometrii disku (pouze pro odborníky)"
+
+#: fdisk/cfdisk.c:2503
+msgid "Help"
+msgstr "Nápověda"
+
+#: fdisk/cfdisk.c:2503
+msgid "Print help screen"
+msgstr "Vypíše nápovědu"
+
+#: fdisk/cfdisk.c:2504
+msgid "Maximize"
+msgstr "Zvětšení"
+
+#: fdisk/cfdisk.c:2504
+msgid "Maximize disk usage of the current partition (experts only)"
+msgstr ""
+"Zvětší velikost aktuálního diskového oddílu na maximum (pouze pro odborníky)"
+
+#: fdisk/cfdisk.c:2505
+msgid "New"
+msgstr "Nový"
+
+#: fdisk/cfdisk.c:2505
+msgid "Create new partition from free space"
+msgstr "Vytvoří nový diskový oddíl ve volném prostoru"
+
+#: fdisk/cfdisk.c:2506
+msgid "Print"
+msgstr "Tisk"
+
+#: fdisk/cfdisk.c:2506
+msgid "Print partition table to the screen or to a file"
+msgstr "Vypíše tabulku rozdělení disku (na obrazovku či do souboru)"
+
+#: fdisk/cfdisk.c:2507
+msgid "Quit"
+msgstr "Konec"
+
+#: fdisk/cfdisk.c:2507
+msgid "Quit program without writing partition table"
+msgstr "Ukončí program bez uložení tabulky rozdělení disku"
+
+#: fdisk/cfdisk.c:2508
+msgid "Type"
+msgstr "Druh"
+
+#: fdisk/cfdisk.c:2508
+msgid "Change the filesystem type (DOS, Linux, OS/2 and so on)"
+msgstr "Změní typ systému souborů (DOS, Linux, OS/2 atd.)"
+
+#: fdisk/cfdisk.c:2509
+msgid "Units"
+msgstr "Jednotky"
+
+#: fdisk/cfdisk.c:2509
+msgid "Change units of the partition size display (MB, sect, cyl)"
+msgstr "Změní jednotky, ve kterých je udávána velikost diskového oddílu"
+
+#: fdisk/cfdisk.c:2510
+msgid "Write"
+msgstr "Uložit"
+
+#: fdisk/cfdisk.c:2510
+msgid "Write partition table to disk (this might destroy data)"
+msgstr "Uloží tabulku rozdělení disku na disk (může zničit data)"
+
+#: fdisk/cfdisk.c:2556
+msgid "Cannot make this partition bootable"
+msgstr "Tento oddíl nelze nastavit jako startovací."
+
+#: fdisk/cfdisk.c:2566
+msgid "Cannot delete an empty partition"
+msgstr "Prázdný diskový oddíl nelze smazat."
+
+#: fdisk/cfdisk.c:2586 fdisk/cfdisk.c:2588
+msgid "Cannot maximize this partition"
+msgstr "Tento diskový oddíl nelze zvětšit."
+
+#: fdisk/cfdisk.c:2596
+msgid "This partition is unusable"
+msgstr "Tento diskový oddíl je nepoužitelný."
+
+#: fdisk/cfdisk.c:2598
+msgid "This partition is already in use"
+msgstr "Tento diskový oddíl je již používán."
+
+#: fdisk/cfdisk.c:2615
+msgid "Cannot change the type of an empty partition"
+msgstr "Typ prázdného diskového oddílu nelze změnit."
+
+#: fdisk/cfdisk.c:2640 fdisk/cfdisk.c:2646
+msgid "No more partitions"
+msgstr "Žádné další diskové oddíly"
+
+#: fdisk/cfdisk.c:2653
+msgid "Illegal command"
+msgstr "Chybný příkaz"
+
+#: fdisk/cfdisk.c:2663
+msgid "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+msgstr "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+
+#. Unfortunately, xgettext does not handle multi-line strings
+#. so, let's use explicit \n's instead
+#: fdisk/cfdisk.c:2670
+#, c-format
+msgid ""
+"\n"
+"Usage:\n"
+"Print version:\n"
+" %s -v\n"
+"Print partition table:\n"
+" %s -P {r|s|t} [options] device\n"
+"Interactive use:\n"
+" %s [options] device\n"
+"\n"
+"Options:\n"
+"-a: Use arrow instead of highlighting;\n"
+"-z: Start with a zero partition table, instead of reading the pt from disk;\n"
+"-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n"
+" the number of heads and the number of sectors/track.\n"
+"\n"
+msgstr ""
+"\n"
+"Použití:\n"
+"Vypíše informace o verzi:\n"
+" %s -v\n"
+"Vypíše tabulku rozdělení disku:\n"
+" %s -P {r|s|t} [přepínače] zařízení\n"
+"Interaktivní režim:\n"
+" %s [přepínače] zařízení\n"
+"\n"
+"Přepínače:\n"
+"-a: Namísto zvýrazňování použije šipku;\n"
+"-z: Začne s nulovou tabulkou rozdělení disku místo, aby ji četl z disku;\n"
+"-c C -h H -s S: Zadání geometrie disku (má přednost před údaji, které "
+"udržuje\n"
+" jádro.\n"
+"\n"
+
+#: fdisk/fdisk.c:248
+msgid ""
+"Usage: fdisk [-b SSZ] [-u] DISK Change partition table\n"
+" fdisk -l [-b SSZ] [-u] DISK List partition table(s)\n"
+" fdisk -s PARTITION Give partition size(s) in blocks\n"
+" fdisk -v Give fdisk version\n"
+"Here DISK is something like /dev/hdb or /dev/sda\n"
+"and PARTITION is something like /dev/hda7\n"
+"-u: give Start and End in sector (instead of cylinder) units\n"
+"-b 2048: (for certain MO drives) use 2048-byte sectors\n"
+msgstr ""
+"Použití: fdisk [-b SSZ] [-u] DISK Změní tabulku rozdělení disku\n"
+" fdisk -l [-b SSZ] [-u] DISK Vypíše tabulku rozdělení disku\n"
+" fdisk -s ODDÍL Vypíše velikost diskového oddílu\n"
+" v blocích\n"
+" fdisk -v Vypíše informace o verzi\n"
+"DISK je něco jako /dev/hdb či /dev/sda a ODDÍL je něco jako /dev/hda7\n"
+"-u: zadání Začátku a Konce v sektorech (místo cylindrech)\n"
+"-b 2048: (pro některé MO jednotky) použije 2048bajtové sektory\n"
+
+#: fdisk/fdisk.c:260
+msgid ""
+"Usage: fdisk [-l] [-b SSZ] [-u] device\n"
+"E.g.: fdisk /dev/hda (for the first IDE disk)\n"
+" or: fdisk /dev/sdc (for the third SCSI disk)\n"
+" or: fdisk /dev/eda (for the first PS/2 ESDI drive)\n"
+" or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)\n"
+" ...\n"
+msgstr ""
+"Použití: fdisk [-l] [-b SSZ] [-u] zařízení\n"
+"Např: fdisk /dev/hda (pro první IDE disk)\n"
+" či: fdisk /dev/sdc (pro třetí SCSI disk)\n"
+" či: fdisk /dev/eda (pro první PS/2 ESDI disk)\n"
+" či: fdisk /dev/rd/c0d0 či: fdisk /dev/ida/c0d0 (pro RAID zařízení)\n"
+" ...\n"
+
+#: fdisk/fdisk.c:268
+msgid "A disk block device is needed.\n"
+msgstr "Je třeba blokové zařízení disku.\n"
+
+#: fdisk/fdisk.c:271
+msgid ""
+"Given name does not refer to a partition,\n"
+"or maybe not even to a block device.\n"
+msgstr ""
+"Zadané jméno neodpovídá diskovému oddílu,\n"
+" a možná ani blokovému zařízení.\n"
+
+#: fdisk/fdisk.c:275
+#, c-format
+msgid "Unable to open %s\n"
+msgstr "%s nelze otevřít\n"
+
+#: fdisk/fdisk.c:278
+#, c-format
+msgid "Unable to read %s\n"
+msgstr "%s nelze číst\n"
+
+#: fdisk/fdisk.c:281
+#, c-format
+msgid "Unable to seek on %s\n"
+msgstr "Ukazovátko nelze posunout na %s.\n"
+
+#: fdisk/fdisk.c:284
+#, c-format
+msgid "Unable to write %s\n"
+msgstr "%s nelze uložit\n"
+
+#: fdisk/fdisk.c:287
+#, c-format
+msgid "BLKGETSIZE ioctl failed on %s\n"
+msgstr "volání BLKGETSIZE ioctl pro %s selhalo\n"
+
+#: fdisk/fdisk.c:291
+msgid "Unable to allocate any more memory\n"
+msgstr "Nelze alokovat více paměti\n"
+
+#: fdisk/fdisk.c:293
+msgid "Fatal error\n"
+msgstr "Fatální chyba\n"
+
+#: fdisk/fdisk.c:304 fdisk/fdisk.c:323 fdisk/fdisk.c:341 fdisk/fdisk.c:348
+#: fdisk/fdisk.c:371 fdisk/fdisk.c:389 fdisk/fdiskbsdlabel.c:105
+msgid "Command action"
+msgstr "Příkazy"
+
+#: fdisk/fdisk.c:305
+msgid " a toggle a read only flag"
+msgstr " a přepne příznak \"pouze pro čtení\""
+
+#. sun
+#: fdisk/fdisk.c:306 fdisk/fdisk.c:350
+msgid " b edit bsd disklabel"
+msgstr " b úprava bsd popisu disku"
+
+#: fdisk/fdisk.c:307
+msgid " c toggle the mountable flag"
+msgstr " c přepne příznak \"připojitelný\""
+
+#. sun
+#: fdisk/fdisk.c:308 fdisk/fdisk.c:327 fdisk/fdisk.c:352
+msgid " d delete a partition"
+msgstr " d smaže diskový oddíl"
+
+#: fdisk/fdisk.c:309 fdisk/fdisk.c:328 fdisk/fdisk.c:353
+msgid " l list known partition types"
+msgstr " l vypíše známé typy diskových oddílů"
+
+#. sun
+#: fdisk/fdisk.c:310 fdisk/fdisk.c:329 fdisk/fdisk.c:342 fdisk/fdisk.c:354
+#: fdisk/fdisk.c:379 fdisk/fdisk.c:396 fdisk/fdiskbsdlabel.c:110
+msgid " m print this menu"
+msgstr " m vypíše tuto nabídku"
+
+#: fdisk/fdisk.c:311 fdisk/fdisk.c:330 fdisk/fdisk.c:355
+msgid " n add a new partition"
+msgstr " n vytvoří nový diskový oddíl"
+
+#: fdisk/fdisk.c:312 fdisk/fdisk.c:331 fdisk/fdisk.c:343 fdisk/fdisk.c:356
+msgid " o create a new empty DOS partition table"
+msgstr " o vytvoří prázdný DOSOVÝ diskový oddíl"
+
+#: fdisk/fdisk.c:313 fdisk/fdisk.c:332 fdisk/fdisk.c:357 fdisk/fdisk.c:380
+#: fdisk/fdisk.c:397
+msgid " p print the partition table"
+msgstr " p vypíše tabulku rozdělení disku"
+
+#: fdisk/fdisk.c:314 fdisk/fdisk.c:333 fdisk/fdisk.c:344 fdisk/fdisk.c:358
+#: fdisk/fdisk.c:381 fdisk/fdisk.c:398 fdisk/fdiskbsdlabel.c:113
+msgid " q quit without saving changes"
+msgstr " q ukončí program bez uložení změn"
+
+#: fdisk/fdisk.c:315 fdisk/fdisk.c:334 fdisk/fdisk.c:345 fdisk/fdisk.c:359
+msgid " s create a new empty Sun disklabel"
+msgstr " s vytvoří prázdný Sun popis disku"
+
+#. sun
+#: fdisk/fdisk.c:316 fdisk/fdisk.c:335 fdisk/fdisk.c:360
+msgid " t change a partition's system id"
+msgstr " t změní id diskového oddílu"
+
+#: fdisk/fdisk.c:317 fdisk/fdisk.c:336 fdisk/fdisk.c:361
+msgid " u change display/entry units"
+msgstr " u změní jednotky v nichž jsou vypisovány informace"
+
+#: fdisk/fdisk.c:318 fdisk/fdisk.c:337 fdisk/fdisk.c:362 fdisk/fdisk.c:384
+#: fdisk/fdisk.c:401
+msgid " v verify the partition table"
+msgstr " v ověří tabulku rozdělení disku"
+
+#: fdisk/fdisk.c:319 fdisk/fdisk.c:338 fdisk/fdisk.c:363 fdisk/fdisk.c:385
+#: fdisk/fdisk.c:402
+msgid " w write table to disk and exit"
+msgstr " w uloží tabulku rozdělení disku a ukončí program"
+
+#: fdisk/fdisk.c:320 fdisk/fdisk.c:364
+msgid " x extra functionality (experts only)"
+msgstr " x rozšiřující funkce (pouze pro odborníky)"
+
+#: fdisk/fdisk.c:324
+msgid " a select bootable partition"
+msgstr " a nastaví startovací diskový oddíl"
+
+#. sgi flavour
+#: fdisk/fdisk.c:325
+msgid " b edit bootfile entry"
+msgstr " b úprava položky startovacího souboru"
+
+#. sgi
+#: fdisk/fdisk.c:326
+msgid " c select sgi swap partition"
+msgstr " c nastaví sgi odkládací diskový oddíl"
+
+#: fdisk/fdisk.c:349
+msgid " a toggle a bootable flag"
+msgstr " a přepne příznak \"startovací\""
+
+#: fdisk/fdisk.c:351
+msgid " c toggle the dos compatibility flag"
+msgstr " c přepne příznak \"DOS kompatibilní\""
+
+#: fdisk/fdisk.c:372
+msgid " a change number of alternate cylinders"
+msgstr " a změní množství alternativních cylindrů"
+
+#. sun
+#: fdisk/fdisk.c:373 fdisk/fdisk.c:391
+msgid " c change number of cylinders"
+msgstr " c změní množství cylindrů"
+
+#: fdisk/fdisk.c:374 fdisk/fdisk.c:392
+msgid " d print the raw data in the partition table"
+msgstr " d vypíše tabulku rozdělení disku (tak jak je uložena na disku)"
+
+#: fdisk/fdisk.c:375
+msgid " e change number of extra sectors per cylinder"
+msgstr " e změní množství extra sektorů na stopu"
+
+#. sun
+#: fdisk/fdisk.c:376 fdisk/fdisk.c:395
+msgid " h change number of heads"
+msgstr " h změní množství hlav"
+
+#: fdisk/fdisk.c:377
+msgid " i change interleave factor"
+msgstr " i změní prokládací faktor"
+
+#. sun
+#: fdisk/fdisk.c:378
+msgid " o change rotation speed (rpm)"
+msgstr " o změní rychlost otáčení"
+
+#: fdisk/fdisk.c:382 fdisk/fdisk.c:399 fdisk/fdiskbsdlabel.c:115
+msgid " r return to main menu"
+msgstr " r návrat do hlavní nabídky"
+
+#: fdisk/fdisk.c:383 fdisk/fdisk.c:400
+msgid " s change number of sectors/track"
+msgstr " s změní počet sektorů/stopu"
+
+#: fdisk/fdisk.c:386
+msgid " y change number of physical cylinders"
+msgstr " y změní počet fyzických cylindrů"
+
+#: fdisk/fdisk.c:390
+msgid " b move beginning of data in a partition"
+msgstr " b posune počátek dat v diskovém oddílu"
+
+#: fdisk/fdisk.c:393
+msgid " e list extended partitions"
+msgstr " e vypíše rozšířené diskové oddíly"
+
+#. !sun
+#: fdisk/fdisk.c:394
+msgid " g create an IRIX partition table"
+msgstr " g vytvoří IRIX tabulku rozdělení disku"
+
+#: fdisk/fdisk.c:490
+msgid "You must set"
+msgstr "Musíte nastavit"
+
+#: fdisk/fdisk.c:504
+msgid "heads"
+msgstr "hlavy"
+
+#: fdisk/fdisk.c:506 fdisk/fdisk.c:914 fdisk/sfdisk.c:843
+msgid "sectors"
+msgstr "sektory"
+
+#: fdisk/fdisk.c:508 fdisk/fdisk.c:914 fdisk/fdiskbsdlabel.c:441
+#: fdisk/sfdisk.c:843
+msgid "cylinders"
+msgstr "cylindry"
+
+#: fdisk/fdisk.c:512
+#, c-format
+msgid ""
+"%s%s.\n"
+"You can do this from the extra functions menu.\n"
+msgstr ""
+"%s%s.\n"
+"Můžete tak učinit z nabídky rozšiřujících funkcí.\n"
+
+#: fdisk/fdisk.c:513
+msgid " and "
+msgstr " a "
+
+#: fdisk/fdisk.c:547
+msgid "Bad offset in primary extended partition\n"
+msgstr "Chybný posun v primárním diskovém oddílu\n"
+
+#: fdisk/fdisk.c:554
+#, c-format
+msgid "Warning: deleting partitions after %d\n"
+msgstr "Varování: mažu diskový oddíl za %d\n"
+
+#: fdisk/fdisk.c:575
+#, c-format
+msgid "Warning: extra link pointer in partition table %d\n"
+msgstr "Varování: nadbytečný ukazatel na link v tabulce rozdělení disku %d.\n"
+
+#: fdisk/fdisk.c:583
+#, c-format
+msgid "Warning: ignoring extra data in partition table %d\n"
+msgstr "Varování: nadbytečná data v tabulce rozdělení disku %d ignorována.\n"
+
+#: fdisk/fdisk.c:609
+msgid ""
+"Building a new DOS disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+"Vytvářím novou DOSOVOU tabulku rozdělení disku. Změny budou uloženy pouze "
+"do\n"
+"paměti, dokud se nerozhodnete je uložit na disk. Poté již nebudou stará "
+"data\n"
+"pochopitelně dostupná.\n"
+
+#: fdisk/fdisk.c:645
+msgid "You will not be able to write the partition table.\n"
+msgstr "Nebudete moci uložit tabulku rozdělení disku.\n"
+
+#: fdisk/fdisk.c:654
+#, c-format
+msgid "Note: sector size is %d (not %d)\n"
+msgstr "Pozor: velikost sektoru je %d (nikoliv %d)\n"
+
+#: fdisk/fdisk.c:702
+msgid ""
+"Device contains neither a valid DOS partition table, nor Sun or SGI "
+"disklabel\n"
+msgstr ""
+"Zařízení neobsahuje ani DOSOVOU tabulku rozdělení disku, ani SUN či SGI "
+"popis\n"
+"disku\n"
+
+#: fdisk/fdisk.c:718
+msgid "Internal error\n"
+msgstr "Vnitřní chyba\n"
+
+#: fdisk/fdisk.c:728
+#, c-format
+msgid "Ignoring extra extended partition %d\n"
+msgstr "Nadbytečný rozšířený diskový oddíl %d ignorován.\n"
+
+#: fdisk/fdisk.c:735
+#, c-format
+msgid ""
+"Warning: invalid flag 0x%04x of partition table %d will be corrected by "
+"w(rite)\n"
+msgstr ""
+"Varování: chybný příznak 0x%04x tabulky rozdělení disku %d bude opraven "
+"zápisem(w)\n"
+
+#: fdisk/fdisk.c:756
+msgid ""
+"\n"
+"got EOF thrice - exiting..\n"
+msgstr ""
+"\n"
+"třikrát jsem nalezl EOF - končím..\n"
+
+#: fdisk/fdisk.c:793
+msgid "Hex code (type L to list codes): "
+msgstr "Šestnáctkově (L vypíše kódy):"
+
+#: fdisk/fdisk.c:832
+#, c-format
+msgid "%s (%d-%d, default %d): "
+msgstr "%s (%d-%d, implicitně %d): "
+
+#: fdisk/fdisk.c:886
+#, c-format
+msgid "Using default value %d\n"
+msgstr "Používám implicitní hodnotu %d\n"
+
+#: fdisk/fdisk.c:890
+msgid "Value out of range.\n"
+msgstr "Hodnota je mimo meze.\n"
+
+#: fdisk/fdisk.c:897
+msgid "Partition number"
+msgstr "Číslo diskového oddílu"
+
+#: fdisk/fdisk.c:905
+#, c-format
+msgid "Warning: partition %d has empty type\n"
+msgstr "Varování: diskový oddíl %d nemá určen typ\n"
+
+#: fdisk/fdisk.c:912
+msgid "cylinder"
+msgstr "cylindr"
+
+#: fdisk/fdisk.c:912
+msgid "sector"
+msgstr "sektor"
+
+#: fdisk/fdisk.c:921
+#, c-format
+msgid "Changing display/entry units to %s\n"
+msgstr "Měním jednotky v nichž jsou vypisovány informace na %sy\n"
+
+#: fdisk/fdisk.c:931
+#, c-format
+msgid "WARNING: Partition %d is an extended partition\n"
+msgstr "VAROVÁNÍ: diskový oddíl %d je rozšířeným diskovým oddílem\n"
+
+#: fdisk/fdisk.c:944
+msgid "DOS Compatibility flag is set\n"
+msgstr "Příznak DOSOVÉ kompatibility je nastaven.\n"
+
+#: fdisk/fdisk.c:948
+msgid "DOS Compatibility flag is not set\n"
+msgstr "Příznak DOSOVÉ kompatibility není nastaven.\n"
+
+#: fdisk/fdisk.c:1034
+#, c-format
+msgid "Partition %d does not exist yet!\n"
+msgstr "Diskový oddíl %d zatím neexistuje!\n"
+
+#: fdisk/fdisk.c:1039
+msgid ""
+"Type 0 means free space to many systems\n"
+"(but not to Linux). Having partitions of\n"
+"type 0 is probably unwise. You can delete\n"
+"a partition using the `d' command.\n"
+msgstr ""
+"Na mnoha systémech (ale ne na Linuxu) typ 0 označuje\n"
+"volný prostor. Vytvářet diskové oddíly typu 0 není moudré.\n"
+"Diskový oddíl můžete smazat pomocí příkazu `d'.\n"
+
+#: fdisk/fdisk.c:1048
+msgid ""
+"You cannot change a partition into an extended one or vice versa\n"
+"Delete it first.\n"
+msgstr ""
+"Nemůžete měnit běžné diskové oddíly na rozšířené a zpět. Nejdříve jej "
+"smažte.\n"
+
+#: fdisk/fdisk.c:1057
+msgid ""
+"Consider leaving partition 3 as Whole disk (5),\n"
+"as SunOS/Solaris expects it and even Linux likes it.\n"
+"\n"
+msgstr ""
+"Zvažte zda by nebylo vhodné ponechat diskový oddíl 3 jako Celý disk (5),\n"
+"neboť SunOS/Solaris to očekává a i Linux tomu dává přednost.\n"
+"\n"
+
+#: fdisk/fdisk.c:1063
+msgid ""
+"Consider leaving partition 9 as volume header (0),\n"
+"and partition 11 as entire volume (6)as IRIX expects it.\n"
+"\n"
+msgstr ""
+"Zvažte zda by nebylo vhodné ponechat diskový oddíl 9 jako hlavičku svazku "
+"(0),\n"
+"a diskový oddíl 11 jako celý svazek (6), neboť IRIX to očekává.\n"
+"\n"
+
+#: fdisk/fdisk.c:1077
+#, c-format
+msgid "Changed system type of partition %d to %x (%s)\n"
+msgstr "Typ diskového oddílu %d byl změněn na %x (%s).\n"
+
+#: fdisk/fdisk.c:1130
+#, c-format
+msgid "Partition %d has different physical/logical beginnings (non-Linux?):\n"
+msgstr ""
+"Diskový oddíl %d má rozdílný fyzický a logický začátek (nelinuxový?):\n"
+
+#: fdisk/fdisk.c:1132 fdisk/fdisk.c:1140 fdisk/fdisk.c:1149 fdisk/fdisk.c:1158
+#, c-format
+msgid " phys=(%d, %d, %d) "
+msgstr " fyz=(%d, %d, %d) "
+
+#: fdisk/fdisk.c:1133 fdisk/fdisk.c:1141
+#, c-format
+msgid "logical=(%d, %d, %d)\n"
+msgstr "logický=(%d, %d, %d)\n"
+
+#: fdisk/fdisk.c:1138
+#, c-format
+msgid "Partition %d has different physical/logical endings:\n"
+msgstr "Diskový oddíl %d má rozdílný fyzický a logický konec:\n"
+
+#: fdisk/fdisk.c:1147
+#, c-format
+msgid "Partition %i does not start on cylinder boundary:\n"
+msgstr "Diskový oddíl %i nezačíná na hranici cylindru:\n"
+
+#: fdisk/fdisk.c:1150
+#, c-format
+msgid "should be (%d, %d, 1)\n"
+msgstr "mělo by být (%d, %d, 1)\n"
+
+#: fdisk/fdisk.c:1156
+#, c-format
+msgid "Partition %i does not end on cylinder boundary:\n"
+msgstr "Diskový oddíl %i nekončí na hranici cylindru:\n"
+
+#: fdisk/fdisk.c:1159
+#, c-format
+msgid "should be (%d, %d, %d)\n"
+msgstr "mělo by být (%d, %d, %d)\n"
+
+#: fdisk/fdisk.c:1166
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * %d bytes\n"
+"\n"
+msgstr ""
+"\n"
+"Disk %s: hlav: %d, sektorů: %d, cylindrů: %d\n"
+"Jednotky = %sy po %d * %d bajtech\n"
+
+#. FIXME! let's see how this shows up with other languagues
+#. acme@conectiva.com.br
+#: fdisk/fdisk.c:1203
+#, c-format
+msgid "%*s Boot Start End Blocks Id System\n"
+msgstr "%*s Boot Začátek Konec Bloky Id Systém\n"
+
+#: fdisk/fdisk.c:1204 fdisk/fdisksgilabel.c:207 fdisk/fdisksunlabel.c:631
+msgid "Device"
+msgstr "Zařízení"
+
+#: fdisk/fdisk.c:1244
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"\n"
+msgstr ""
+"\n"
+"Disk %s: hlav: %d, sektorů: %d, cylindrů: %d\n"
+"\n"
+
+#: fdisk/fdisk.c:1246
+msgid "Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n"
+msgstr "Č AF Hd Sek Cyl Hd Sek Cyl Start Vel ID\n"
+
+#: fdisk/fdisk.c:1285
+#, c-format
+msgid "Warning: partition %d contains sector 0\n"
+msgstr "Varování: diskový oddíl %d obsahuje sektor 0\n"
+
+#: fdisk/fdisk.c:1288
+#, c-format
+msgid "Partition %d: head %d greater than maximum %d\n"
+msgstr "Diskový oddíl %d: hlava %d má větší číslo než je maximum %d\n"
+
+#: fdisk/fdisk.c:1291
+#, c-format
+msgid "Partition %d: sector %d greater than maximum %d\n"
+msgstr "Diskový oddíl %d: sektor %d má větší číslo než je maximum %d\n"
+
+#: fdisk/fdisk.c:1294
+#, c-format
+msgid "Partitions %d: cylinder %d greater than maximum %d\n"
+msgstr "Diskový oddíl %d: cylindr %d má větší číslo než je maximum %d\n"
+
+#: fdisk/fdisk.c:1298
+#, c-format
+msgid "Partition %d: previous sectors %d disagrees with total %d\n"
+msgstr "Diskový oddíl %d: předchozí sektory %d nesouhlasí s úhrnem %d\n"
+
+#: fdisk/fdisk.c:1328
+#, c-format
+msgid "Warning: bad start-of-data in partition %d\n"
+msgstr "Varování: chybný počátek dat v diskovém oddílu %d\n"
+
+#: fdisk/fdisk.c:1336
+#, c-format
+msgid "Warning: partition %d overlaps partition %d.\n"
+msgstr "Varování: diskový oddíl %d přesahuje do diskového oddílu %d.\n"
+
+#: fdisk/fdisk.c:1354
+#, c-format
+msgid "Warning: partition %d is empty\n"
+msgstr "Varování: diskový oddíl %d je prázdný.\n"
+
+#: fdisk/fdisk.c:1359
+#, c-format
+msgid "Logical partition %d not entirely in partition %d\n"
+msgstr "Logický diskový oddíl %d přesahuje mimo diskový oddíl %d.\n"
+
+#: fdisk/fdisk.c:1365
+#, c-format
+msgid "Total allocated sectors %d greater than the maximum %d\n"
+msgstr "Celkový počet alokovaných sektorů (%d) je větší než maximum (%d).\n"
+
+#: fdisk/fdisk.c:1368
+#, c-format
+msgid "%d unallocated sectors\n"
+msgstr "nealokovaných sektorů: %d\n"
+
+#: fdisk/fdisk.c:1380 fdisk/fdisksgilabel.c:684 fdisk/fdisksunlabel.c:479
+#, c-format
+msgid "Partition %d is already defined. Delete it before re-adding it.\n"
+msgstr ""
+"Diskový oddíl %d je již definován. Před opětovným vytvořením jej musíte\n"
+"nejprve smazat.\n"
+
+#: fdisk/fdisk.c:1401 fdisk/fdiskbsdlabel.c:252 fdisk/fdisksgilabel.c:706
+#: fdisk/fdisksunlabel.c:494
+#, c-format
+msgid "First %s"
+msgstr "První %s"
+
+#: fdisk/fdisk.c:1416 fdisk/fdisksunlabel.c:519
+#, c-format
+msgid "Sector %d is already allocated\n"
+msgstr "Sektor %d je již alokován\n"
+
+#: fdisk/fdisk.c:1448
+msgid "No free sectors available\n"
+msgstr "Nejsou žádné volné sektory.\n"
+
+#: fdisk/fdisk.c:1458 fdisk/fdiskbsdlabel.c:256 fdisk/fdisksunlabel.c:529
+#, c-format
+msgid "Last %s or +size or +sizeM or +sizeK"
+msgstr "Poslední %s či +velikost či +velikostM či velikostK"
+
+#: fdisk/fdisk.c:1488
+#, c-format
+msgid "Warning: partition %d has an odd number of sectors.\n"
+msgstr "Varování: diskový oddíl %d má lichý počet sektorů.\n"
+
+#: fdisk/fdisk.c:1525 fdisk/fdiskbsdlabel.c:590
+msgid "The maximum number of partitions has been created\n"
+msgstr "Již bylo vytvořeno maximální množství diskových oddílů.\n"
+
+#: fdisk/fdisk.c:1535
+msgid "You must delete some partition and add an extended partition first\n"
+msgstr "Musíte nejprve některé smazat a přidat rozšířený diskový oddíl.\n"
+
+#: fdisk/fdisk.c:1539
+#, c-format
+msgid ""
+"Command action\n"
+" %s\n"
+" p primary partition (1-4)\n"
+msgstr ""
+"Příkaz\n"
+" %s\n"
+" p primární diskový oddíl (1-4)\n"
+
+#: fdisk/fdisk.c:1541
+msgid "l logical (5 or over)"
+msgstr "l logický (5 a více)"
+
+#: fdisk/fdisk.c:1541
+msgid "e extended"
+msgstr "e rozšířený"
+
+#: fdisk/fdisk.c:1558
+#, c-format
+msgid "Invalid partition number for type `%c'\n"
+msgstr "Chybné číslo diskového oddílu pro typ `%c'.\n"
+
+#: fdisk/fdisk.c:1590
+msgid ""
+"The partition table has been altered!\n"
+"\n"
+msgstr "Tabulka rozdělení disku byla změněna!\n"
+
+#: fdisk/fdisk.c:1592
+msgid "Calling ioctl() to re-read partition table.\n"
+msgstr "Volám ioctl() pro znovunačtení tabulky rozdělení disku.\n"
+
+#: fdisk/fdisk.c:1609
+msgid "Syncing disks.\n"
+msgstr "Synchronizují se disky.\n"
+
+#: fdisk/fdisk.c:1614
+#, c-format
+msgid ""
+"Re-read table failed with error %d: %s.\n"
+"Reboot your system to ensure the partition table is updated.\n"
+msgstr ""
+"Opětovné načtení tabulky rozdělení disku skončilo s chybou %d: %s.\n"
+"Restartujte systém, aby tabulka byla změněna.\n"
+
+#: fdisk/fdisk.c:1620
+msgid ""
+"\n"
+"WARNING: If you have created or modified any DOS 6.x\n"
+"partitions, please see the fdisk manual page for additional\n"
+"information.\n"
+msgstr ""
+"\n"
+"VAROVÁNÍ: Pokud jste vytvořil či změnil nějaké\n"
+"DOS 6.x diskové oddíly, přečtěte si prosím manuálovou\n"
+"stránku programu fdisk, abyste získal dodatečné informace.\n"
+
+#: fdisk/fdisk.c:1651
+#, c-format
+msgid "Device: %s\n"
+msgstr "Zařízení: %s\n"
+
+#: fdisk/fdisk.c:1666
+#, c-format
+msgid "Partition %d has no data area\n"
+msgstr "Diskový oddíl %d neobsahuje datovou oblast.\n"
+
+#: fdisk/fdisk.c:1672
+msgid "New beginning of data"
+msgstr "Nový začátek dat"
+
+#: fdisk/fdisk.c:1686
+msgid "Expert command (m for help): "
+msgstr "Příkaz pro odborníky (m pro nápovědu): "
+
+#: fdisk/fdisk.c:1697
+msgid "Number of cylinders"
+msgstr "Počet cylindrů"
+
+#: fdisk/fdisk.c:1718
+msgid "Number of heads"
+msgstr "Počet hlav"
+
+#: fdisk/fdisk.c:1743
+msgid "Number of sectors"
+msgstr "Počet sektorů"
+
+#: fdisk/fdisk.c:1746
+msgid "Warning: setting sector offset for DOS compatiblity\n"
+msgstr "Varování: nastaven posun sektoru kvůli kompatibilitě s DOSEM\n"
+
+#: fdisk/fdisk.c:1808
+#, c-format
+msgid "Disk %s doesn't contain a valid partition table\n"
+msgstr "Na disku %s není korektní tabulka rozdělení disku.\n"
+
+#: fdisk/fdisk.c:1822
+#, c-format
+msgid "Cannot open %s\n"
+msgstr "%s nelze otevřít.\n"
+
+#: fdisk/fdisk.c:1887
+msgid "This kernel finds the sector size itself - -b option ignored\n"
+msgstr ""
+"Toto jádro detekuje velikost sektoru automaticky - přepínač -b ignorován\n"
+
+#: fdisk/fdisk.c:1890
+msgid ""
+"Warning: the -b (set sector size) option should be used with one specified "
+"device\n"
+msgstr ""
+"Varování: přepínač -b (nastavení velikosti sektoru) by měl být použit s "
+"jedním\n"
+" zadaným zařízením.\n"
+
+#: fdisk/fdisk.c:1948
+msgid "Command (m for help): "
+msgstr "Příkaz (m pro nápovědu): "
+
+#: fdisk/fdisk.c:1962
+#, c-format
+msgid ""
+"\n"
+"The current boot file is: %s\n"
+msgstr ""
+"\n"
+"Aktuální startovací soubor: %s\n"
+
+#: fdisk/fdisk.c:1964
+msgid "Please enter the name of the new boot file: "
+msgstr "Zadejte jméno nového startovacího souboru: "
+
+#: fdisk/fdisk.c:1966
+msgid "Boot file unchanged\n"
+msgstr "Startovací soubor nebyl změněn.\n"
+
+#: fdisk/fdisk.c:2026
+msgid ""
+"\n"
+"\tSorry, no experts menu for SGI partition tables available.\n"
+"\n"
+msgstr ""
+"\n"
+"\tPro SGI diskové oddíly nejsou k dispozici žádné rozšiřující funkce.\n"
+"\n"
+
+#: fdisk/fdiskaixlabel.c:29
+msgid ""
+"\n"
+"\tThere is a valid AIX label on this disk.\n"
+"\tUnfortunately Linux cannot handle these\n"
+"\tdisks at the moment. Nevertheless some\n"
+"\tadvice:\n"
+"\t1. fdisk will destroy its contents on write.\n"
+"\t2. Be sure that this disk is NOT a still vital\n"
+"\t part of a volume group. (Otherwise you may\n"
+"\t erase the other disks as well, if unmirrored.)\n"
+"\t3. Before deleting this physical volume be sure\n"
+"\t to remove the disk logically from your AIX\n"
+"\t machine. (Otherwise you become an AIXpert)."
+msgstr ""
+"\n"
+"\tNa tomto disku je AIX tabulka rozdělení disku.\n"
+"\tLinux s těmito disky v současné době neumí pracovat.\n"
+"\tNicméně několik rad pro Vás:\n"
+"\t1. při zápisu fdisk zničí jejich obsah\n"
+"\t2. Ujistěte se, že tento disk NENÍ důležitou součástí\n"
+"\t skupiny svazků. (Jinak můžete smazat, pokud nejsou\n"
+"\t zrcadleny, i ostatní disky.)\n"
+"\t3. Předtím, než smažete fyzický svazek, se ujistěte, že\n"
+"\t již není logickou součástí Vašeho AIX systému. (Jinak\n"
+"\t se z Vás stává AIXpert)."
+
+#: fdisk/fdiskbsdlabel.c:97
+#, c-format
+msgid ""
+"\n"
+"BSD label for device: %s\n"
+msgstr ""
+"\n"
+"BSD tabulka rozdělení disku pro zařízení: %s\n"
+
+#: fdisk/fdiskbsdlabel.c:106
+msgid " d delete a BSD partition"
+msgstr " d smazat BSD diskový oddíl"
+
+#: fdisk/fdiskbsdlabel.c:107
+msgid " e edit drive data"
+msgstr " e upravovat data na disku"
+
+#: fdisk/fdiskbsdlabel.c:108
+msgid " i install bootstrap"
+msgstr " i instalovat zavaděč"
+
+#: fdisk/fdiskbsdlabel.c:109
+msgid " l list known filesystem types"
+msgstr " l vypsat známé typy systémů souborů"
+
+#: fdisk/fdiskbsdlabel.c:111
+msgid " n add a new BSD partition"
+msgstr " n vytvořit nový BSD diskový oddíl"
+
+#: fdisk/fdiskbsdlabel.c:112
+msgid " p print BSD partition table"
+msgstr " p vytisknout BSD tabulku rozdělení disku"
+
+#: fdisk/fdiskbsdlabel.c:117
+msgid " s show complete disklabel"
+msgstr " s zobrazí úplnou tabulku rozdělení disku"
+
+#: fdisk/fdiskbsdlabel.c:118
+msgid " t change a partition's filesystem id"
+msgstr " t změní id systému souborů daného diskového oddílu"
+
+#: fdisk/fdiskbsdlabel.c:119
+msgid " w write disklabel to disk"
+msgstr " w uloží tabulku rozdělení disku na disk"
+
+#: fdisk/fdiskbsdlabel.c:121
+msgid " x link BSD partition to non-BSD partition"
+msgstr " x připojí BSD diskový oddíl na ne-BSD diskový oddíl"
+
+#: fdisk/fdiskbsdlabel.c:146
+#, c-format
+msgid "Partition %s%d has invalid starting sector 0.\n"
+msgstr "Diskový oddíl %s%d má chybný počáteční sektor 0.\n"
+
+#: fdisk/fdiskbsdlabel.c:150
+#, c-format
+msgid "Reading disklabel of %s%d at sector %d.\n"
+msgstr "Čtu tabulku rozdělení disku %s%d v sektoru %d.\n"
+
+#: fdisk/fdiskbsdlabel.c:159
+#, c-format
+msgid "There is no *BSD partition on %s.\n"
+msgstr "Na %s se nenachází žádný *BSD diskový oddíl.\n"
+
+#: fdisk/fdiskbsdlabel.c:174
+msgid "BSD disklabel command (m for help): "
+msgstr "Příkaz pro BSD tabulku rozdělení disku (m pro nápovědu): "
+
+#: fdisk/fdiskbsdlabel.c:286
+#, c-format
+msgid "type: %s\n"
+msgstr "typ: %s\n"
+
+#: fdisk/fdiskbsdlabel.c:288
+#, c-format
+msgid "type: %d\n"
+msgstr "typ: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:289
+#, c-format
+msgid "disk: %.*s\n"
+msgstr "disk: %.*s\n"
+
+#: fdisk/fdiskbsdlabel.c:290
+#, c-format
+msgid "label: %.*s\n"
+msgstr "tabulka: %.*s\n"
+
+#: fdisk/fdiskbsdlabel.c:291
+msgid "flags:"
+msgstr "příznaky:"
+
+#: fdisk/fdiskbsdlabel.c:293
+msgid " removable"
+msgstr " výměnný"
+
+# ???
+#: fdisk/fdiskbsdlabel.c:295
+msgid " ecc"
+msgstr " ecc"
+
+#: fdisk/fdiskbsdlabel.c:297
+msgid " badsect"
+msgstr " chybnýsekt"
+
+#. On various machines the fields of *lp are short/int/long
+#. In order to avoid problems, we cast them all to long.
+#: fdisk/fdiskbsdlabel.c:301
+#, c-format
+msgid "bytes/sector: %ld\n"
+msgstr "bajtů/sektor: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:302
+#, c-format
+msgid "sectors/track: %ld\n"
+msgstr "sektorů/stopu: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:303
+#, c-format
+msgid "tracks/cylinder: %ld\n"
+msgstr "stop/cylindr: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:304
+#, c-format
+msgid "sectors/cylinder: %ld\n"
+msgstr "sektorů/cylindr: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:305
+#, c-format
+msgid "cylinders: %ld\n"
+msgstr "cylindrů: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:306
+#, c-format
+msgid "rpm: %d\n"
+msgstr "otm: %d\n"
+
+# *skew ???
+# zde překlad spíše odhaduji
+#: fdisk/fdiskbsdlabel.c:307
+#, c-format
+msgid "interleave: %d\n"
+msgstr "interleave: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:308
+#, c-format
+msgid "trackskew: %d\n"
+msgstr "zakřivení stopy: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:309
+#, c-format
+msgid "cylinderskew: %d\n"
+msgstr "zakřivení cylindru: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:310
+#, c-format
+msgid "headswitch: %ld\t\t# milliseconds\n"
+msgstr "přesun hlavy: %ld\t\t# milisekund\n"
+
+#: fdisk/fdiskbsdlabel.c:311
+#, c-format
+msgid "track-to-track seek: %ld\t# milliseconds\n"
+msgstr "posun stopa-stopa: %ld\t# milisekund\n"
+
+#: fdisk/fdiskbsdlabel.c:312
+msgid "drivedata: "
+msgstr "diskdata: "
+
+#: fdisk/fdiskbsdlabel.c:321
+#, c-format
+msgid ""
+"\n"
+"%d partitions:\n"
+msgstr ""
+"\n"
+"počet diskových oddílů - %d:\n"
+
+#: fdisk/fdiskbsdlabel.c:322
+msgid "# size offset fstype [fsize bsize cpg]\n"
+msgstr "# velik posun typ ss [fsize bsize cpg]\n"
+
+#: fdisk/fdiskbsdlabel.c:378
+#, c-format
+msgid "Writing disklabel to %s%d.\n"
+msgstr "Ukládám tabulku rozdělení disku na %s%d.\n"
+
+#: fdisk/fdiskbsdlabel.c:381
+#, c-format
+msgid "Writing disklabel to %s.\n"
+msgstr "Ukládám tabulku rozdělení disku na %s.\n"
+
+#: fdisk/fdiskbsdlabel.c:392
+#, c-format
+msgid "%s%d contains no disklabel.\n"
+msgstr "Na %s%d se nenachází žádná tabulka rozdělení disku.\n"
+
+#: fdisk/fdiskbsdlabel.c:395
+#, c-format
+msgid "%s contains no disklabel.\n"
+msgstr "Na %s se nenachází žádná tabulka rozdělení disku.\n"
+
+#: fdisk/fdiskbsdlabel.c:399
+msgid "Do you want to create a disklabel? (y/n) "
+msgstr "Chcete vytvořit tabulku rozdělení disku? (y/n)"
+
+#: fdisk/fdiskbsdlabel.c:438
+msgid "bytes/sector"
+msgstr "bajtů/sektor"
+
+#: fdisk/fdiskbsdlabel.c:439
+msgid "sectors/track"
+msgstr "sektorů/stopu"
+
+#: fdisk/fdiskbsdlabel.c:440
+msgid "tracks/cylinder"
+msgstr "stop/cylindr"
+
+#: fdisk/fdiskbsdlabel.c:448
+msgid "sectors/cylinder"
+msgstr "sektorů/cylindr"
+
+#: fdisk/fdiskbsdlabel.c:452
+msgid "Must be <= sectors/track * tracks/cylinder (default).\n"
+msgstr "Musí být <= sektorů/stopu * stop/cylindr (implicitní).\n"
+
+#: fdisk/fdiskbsdlabel.c:454
+msgid "rpm"
+msgstr "otm"
+
+#: fdisk/fdiskbsdlabel.c:455
+msgid "interleave"
+msgstr "interleave"
+
+#: fdisk/fdiskbsdlabel.c:456
+msgid "trackskew"
+msgstr "zakřivení stopy"
+
+#: fdisk/fdiskbsdlabel.c:457
+msgid "cylinderskew"
+msgstr "zakřivení cylindru"
+
+#: fdisk/fdiskbsdlabel.c:458
+msgid "headswitch"
+msgstr "přesun hlavy"
+
+#: fdisk/fdiskbsdlabel.c:459
+msgid "track-to-track seek"
+msgstr "posun stopa-stopa"
+
+#: fdisk/fdiskbsdlabel.c:500
+#, c-format
+msgid "Bootstrap: %sboot -> boot%s (%s): "
+msgstr "Zavaděč: %sstart -> start%s (%s): "
+
+#: fdisk/fdiskbsdlabel.c:526
+msgid "Bootstrap overlaps with disk label!\n"
+msgstr "Zavaděč přesahuje do tabulky rozdělení disku!\n"
+
+#: fdisk/fdiskbsdlabel.c:547
+#, c-format
+msgid "Bootstrap installed on %s%d.\n"
+msgstr "Zavaděč instalován na %s%d.\n"
+
+#: fdisk/fdiskbsdlabel.c:549
+#, c-format
+msgid "Bootstrap installed on %s.\n"
+msgstr "Zavaděč instalován na %s.\n"
+
+#: fdisk/fdiskbsdlabel.c:570
+#, c-format
+msgid "Partition (a-%c): "
+msgstr "Diskový oddíl (a-%c): "
+
+#: fdisk/fdiskbsdlabel.c:601
+msgid "This partition already exists.\n"
+msgstr "Tento diskový oddíl již existuje.\n"
+
+#: fdisk/fdiskbsdlabel.c:723
+#, c-format
+msgid "Warning: too many partitions (%d, maximum is %d).\n"
+msgstr "Varování: příliš mnoho diskových oddílů (%d, maximum %d).\n"
+
+#: fdisk/fdiskbsdlabel.c:769
+msgid ""
+"\n"
+"Syncing disks.\n"
+msgstr ""
+"\n"
+"Synchronizují se disky.\n"
+
+#: fdisk/fdisksgilabel.c:56
+msgid "SGI volhdr"
+msgstr "Hlavička SGI svazku"
+
+#: fdisk/fdisksgilabel.c:57
+msgid "SGI trkrepl"
+msgstr "SGI trkrepl"
+
+#: fdisk/fdisksgilabel.c:58
+msgid "SGI secrepl"
+msgstr "SGI secrepl"
+
+#: fdisk/fdisksgilabel.c:59
+msgid "SGI raw"
+msgstr "SGI raw"
+
+#: fdisk/fdisksgilabel.c:60
+msgid "SGI bsd"
+msgstr "SGI bsd"
+
+#: fdisk/fdisksgilabel.c:61
+msgid "SGI sysv"
+msgstr "SGI sysv"
+
+#: fdisk/fdisksgilabel.c:62
+msgid "SGI volume"
+msgstr "SGI svazek"
+
+#: fdisk/fdisksgilabel.c:63
+msgid "SGI efs"
+msgstr "SGI efs"
+
+#: fdisk/fdisksgilabel.c:64
+msgid "SGI lvol"
+msgstr "SGI lvol"
+
+#: fdisk/fdisksgilabel.c:65
+msgid "SGI rlvol"
+msgstr "SGI rlvol"
+
+#: fdisk/fdisksgilabel.c:66
+msgid "SGI xfs"
+msgstr "SGI xfs"
+
+#: fdisk/fdisksgilabel.c:67
+msgid "SGI xlvol"
+msgstr "SGI xlvol"
+
+#: fdisk/fdisksgilabel.c:68
+msgid "SGI rxlvol"
+msgstr "SGI rxlvol"
+
+#. Minix 1.4b and later
+#: fdisk/fdisksgilabel.c:69 fdisk/fdisksunlabel.c:52 fdisk/i386_sys_types.c:55
+msgid "Linux swap"
+msgstr "Linux swap"
+
+#: fdisk/fdisksgilabel.c:70 fdisk/fdisksunlabel.c:53
+msgid "Linux native"
+msgstr "Linux nativní"
+
+#: fdisk/fdisksgilabel.c:143
+msgid ""
+"According to MIPS Computer Systems, Inc the Label must not contain more than "
+"512 bytes\n"
+msgstr ""
+"Podle MIPS Computer Systems, Inc jméno nesmí obsahovat více než 512 bajtů\n"
+
+#: fdisk/fdisksgilabel.c:162
+msgid "Detected sgi disklabel with wrong checksum.\n"
+msgstr ""
+"Nalezl jsem sgi tabulku rozdělení disku s chybným kontrolním součtem.\n"
+
+#: fdisk/fdisksgilabel.c:186
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors\n"
+"%d cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"Disk %s (SGI tabulka rozdělení disku): hlav: %d, sektorů: %d,\n"
+"cylindrů: %d, fyzických cylindrů: %d\n"
+"extra sektorů/cyl: %d, interleave: %d:1\n"
+"%s\n"
+"Jednotky = %sy po %d * 512 bajtech\n"
+"\n"
+
+#: fdisk/fdisksgilabel.c:199
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"Disk %s (SGI tabulka rozdělení disku): hlav: %d, sektorů: %d, cylindrů: %d\n"
+"Jednotky = %sy po %d * 512 bajtech\n"
+"\n"
+
+#: fdisk/fdisksgilabel.c:205
+#, c-format
+msgid ""
+"----- partitions -----\n"
+"%*s Info Start End Sectors Id System\n"
+msgstr ""
+"----- diskové oddíly -----\n"
+"%*s Info Začátek Konec Sektory Id Systém\n"
+
+#: fdisk/fdisksgilabel.c:227
+#, c-format
+msgid ""
+"----- bootinfo -----\n"
+"Bootfile: %s\n"
+"----- directory entries -----\n"
+msgstr ""
+"----- bootinfo -----\n"
+"Startovací soubor: %s\n"
+"----- adresářové položky -----\n"
+
+#: fdisk/fdisksgilabel.c:237
+#, c-format
+msgid "%2d: %-10s sector%5u size%8u\n"
+msgstr "%2d: %-10s sektor%5u velikost%8u\n"
+
+#: fdisk/fdisksgilabel.c:298
+msgid ""
+"\n"
+"Invalid Bootfile!\n"
+"\tThe bootfile must be an absolute non-zero pathname,\n"
+"\te.g. \"/unix\" or \"/unix.save\".\n"
+msgstr ""
+"\n"
+"Chybný startovací soubor!\n"
+"\tStartovací soubor musí být zadán plným jménem, např.\n"
+"\t\"/unix\" či \"/unix.save\".\n"
+
+#: fdisk/fdisksgilabel.c:305
+msgid ""
+"\n"
+"\tName of Bootfile too long: 16 bytes maximum.\n"
+msgstr ""
+"\n"
+"\tJméno startovacího souboru je příliš dlouhé: 16 bajtů je maximum.\n"
+
+#: fdisk/fdisksgilabel.c:310
+msgid ""
+"\n"
+"\tBootfile must have a fully qualified pathname.\n"
+msgstr ""
+"\n"
+"\tStartovací soubor musí být zadán plným jménem.\n"
+
+#: fdisk/fdisksgilabel.c:315
+msgid ""
+"\n"
+"\tBe aware, that the bootfile is not checked for existence.\n"
+"\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n"
+msgstr ""
+"\n"
+"Uvědomte si, že existence startovacího souboru není ověřována.\n"
+"\tImplicitně se použije \"/unix\" a jako záloha \"/unix.save\".\n"
+
+#: fdisk/fdisksgilabel.c:343
+#, c-format
+msgid ""
+"\n"
+"\tBootfile is changed to \"%s\".\n"
+msgstr ""
+"\n"
+"\tStartovací soubor byl změněn na \"%s\".\n"
+
+#: fdisk/fdisksgilabel.c:448
+msgid "More than one entire disk entry present.\n"
+msgstr "Existuje více než jedna položka celého disku.\n"
+
+#: fdisk/fdisksgilabel.c:456 fdisk/fdisksunlabel.c:455
+msgid "No partitions defined\n"
+msgstr "Nejsou definovány žádné diskové oddíly\n"
+
+#: fdisk/fdisksgilabel.c:463
+msgid "IRIX likes when Partition 11 covers the entire disk.\n"
+msgstr "IRIX preferuje, když Diskový oddíl 11 zaujímá celý disk.\n"
+
+#: fdisk/fdisksgilabel.c:465
+#, c-format
+msgid ""
+"The entire disk partition should start at block 0,\n"
+"not at diskblock %d.\n"
+msgstr ""
+"Diskový oddíl zaujímající celý disk by měl začínat blokem 0,\n"
+"nikoliv blokem %d.\n"
+
+#: fdisk/fdisksgilabel.c:469
+#, c-format
+msgid ""
+"The entire disk partition is only %d diskblock large,\n"
+"but the disk is %d diskblocks long.\n"
+msgstr ""
+"Diskový oddíl zaujímající celý disk má velikost v blocích pouze %d,\n"
+"ale velikost disku v blocích je %d.\n"
+
+#: fdisk/fdisksgilabel.c:476
+msgid "One Partition (#11) should cover the entire disk.\n"
+msgstr "Jeden Diskový Oddíl (#11) by měl zaujímat celý disk.\n"
+
+#: fdisk/fdisksgilabel.c:488
+#, c-format
+msgid "Partition %d does not start on cylinder boundary.\n"
+msgstr "Diskový oddíl %d nezačíná na hranici cylindru.\n"
+
+#: fdisk/fdisksgilabel.c:495
+#, c-format
+msgid "Partition %d does not end on cylinder boundary.\n"
+msgstr "Diskový oddíl %d nekončí na hranici cylindru.\n"
+
+#: fdisk/fdisksgilabel.c:503
+#, c-format
+msgid "The Partition %d and %d overlap by %d sectors.\n"
+msgstr "Diskové oddíly %d a %d se navzájem překrývají %d sektory.\n"
+
+#: fdisk/fdisksgilabel.c:512 fdisk/fdisksgilabel.c:532
+#, c-format
+msgid "Unused gap of %8d sectors - sectors %8d-%d\n"
+msgstr "Nevyužívaný prostor o velikosti v sektorech %8d - sektory %8d-%d\n"
+
+#: fdisk/fdisksgilabel.c:545
+msgid ""
+"\n"
+"The boot partition does not exist.\n"
+msgstr ""
+"\n"
+"Startovací diskový oddíl neexistuje.\n"
+
+#: fdisk/fdisksgilabel.c:549
+msgid ""
+"\n"
+"The swap partition does not exist.\n"
+msgstr ""
+"\n"
+"Diskový oddíl pro odkládací prostor neexistuje.\n"
+
+#: fdisk/fdisksgilabel.c:554
+msgid ""
+"\n"
+"The swap partition has no swap type.\n"
+msgstr ""
+"\n"
+"Diskový oddíl pro odkládací prostor nemá zadán typ.\n"
+
+#: fdisk/fdisksgilabel.c:558
+msgid "\tYou have chosen an unusual boot file name.\n"
+msgstr "\tVybral jste si neobvyklé jméno pro startovací soubor.\n"
+
+#: fdisk/fdisksgilabel.c:569
+msgid "Sorry You may change the Tag of non-empty partitions.\n"
+msgstr "Lituji, můžete měnit značku neprázdných diskových oddílů.\n"
+
+#: fdisk/fdisksgilabel.c:576
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is of type \"SGI volhdr\", the IRIX system will rely on it to\n"
+"retrieve from its directory standalone tools like sash and fx.\n"
+"Only the \"SGI volume\" entire disk section may violate this.\n"
+"Type YES if you are sure about tagging this partition differently.\n"
+msgstr ""
+"Doporučuje se, aby diskový oddíl začínající na posunu 0 byl typu\n"
+"\"SGI volhdr\". IRIX jej používá k přístupu k nástrojům jako je sash\n"
+"a fx. Vyjímkou je pouze \"SGI svazek\" zaujímající celý disk.\n"
+"Zadejte YES, pokud jste si jist, že chcete označit tento diskový oddíl "
+"jinak.\n"
+
+#. rebuild freelist
+#: fdisk/fdisksgilabel.c:621
+msgid "Do You know, You got a partition overlap on the disk?\n"
+msgstr "Víte, že na Vašem disku se diskové oddíly překrývají?\n"
+
+#: fdisk/fdisksgilabel.c:691
+msgid "Attempting to generate entire disk entry automatically.\n"
+msgstr "Pokouším se automaticky vytvořit položku pro celý disk.\n"
+
+#: fdisk/fdisksgilabel.c:698
+msgid "The entire disk is already covered with partitions.\n"
+msgstr "Diskové oddíly již zabírají celý prostor disky.\n"
+
+#: fdisk/fdisksgilabel.c:703
+msgid "You got a partition overlap on the disk. Fix it first!\n"
+msgstr "Diskové oddíly se překrývají. Nejprve to opravte!\n"
+
+#: fdisk/fdisksgilabel.c:712 fdisk/fdisksgilabel.c:741
+msgid ""
+"It is highly recommended that eleventh partition\n"
+"covers the entire disk and is of type `SGI volume'\n"
+msgstr ""
+"Doporučuje se, aby jedenáctý diskový oddíl zaujímal celý\n"
+"prostor disku a byl typu `SGI svazek'\n"
+
+#: fdisk/fdisksgilabel.c:728
+msgid "You will get a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+"Takto se diskové oddíly budou navzájem překrývat. Nejprve to opravte!\n"
+
+#: fdisk/fdisksgilabel.c:733
+#, c-format
+msgid " Last %s"
+msgstr " Poslední %s"
+
+#: fdisk/fdisksgilabel.c:756
+msgid ""
+"Building a new SGI disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content will be unrecoverable lost.\n"
+"\n"
+msgstr ""
+"Vytvářím novou SGI tabulku rozdělení disku. Změny budou uloženy pouze do\n"
+"paměti, dokud se nerozhodnete je uložit na disk. Poté již nebudou stará "
+"data\n"
+"pochopitelně dostupná.\n"
+
+#: fdisk/fdisksgilabel.c:784
+#, c-format
+msgid "Trying to keep parameters of partition %d.\n"
+msgstr "Pokouším se zachovat parametry diskového oddílu %d.\n"
+
+#: fdisk/fdisksgilabel.c:786
+#, c-format
+msgid "ID=%02x\tSTART=%d\tLENGTH=%d\n"
+msgstr "ID=%02x\tZAČÁTEK=%d\tDÉLKA=%d\n"
+
+#: fdisk/fdisksunlabel.c:43 fdisk/i386_sys_types.c:6
+msgid "Empty"
+msgstr "Prázdný prostor"
+
+#: fdisk/fdisksunlabel.c:45
+msgid "SunOS root"
+msgstr "SunOS root"
+
+#: fdisk/fdisksunlabel.c:46
+msgid "SunOS swap"
+msgstr "SunOS swap"
+
+#: fdisk/fdisksunlabel.c:47
+msgid "SunOS usr"
+msgstr "SunOS usr"
+
+#: fdisk/fdisksunlabel.c:48
+msgid "Whole disk"
+msgstr "Celý disk"
+
+#: fdisk/fdisksunlabel.c:49
+msgid "SunOS stand"
+msgstr "SunOS stand"
+
+#: fdisk/fdisksunlabel.c:50
+msgid "SunOS var"
+msgstr "SunOS var"
+
+#: fdisk/fdisksunlabel.c:51
+msgid "SunOS home"
+msgstr "SunOS home"
+
+#: fdisk/fdisksunlabel.c:122
+msgid ""
+"Detected sun disklabel with wrong checksum.\n"
+"Probably you'll have to set all the values,\n"
+"e.g. heads, sectors, cylinders and partitions\n"
+"or force a fresh label (s command in main menu)\n"
+msgstr ""
+"Nalezl jsem sun tabulku rozdělení disku s chybných kontrolním součtem.\n"
+"Pravděpodobně budete muset nastavit všechny hodnoty jako hlavy, sektory,\n"
+"cylindry a diskové oddíly, nebo vytvořit novou tabulku (příkaz s v hlavní\n"
+"nabídce)\n"
+
+#: fdisk/fdisksunlabel.c:215
+#, c-format
+msgid "Autoconfigure found a %s%s%s\n"
+msgstr "Automatická konfigurace nalezla %s%s%s\n"
+
+#: fdisk/fdisksunlabel.c:242
+msgid ""
+"Building a new sun disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+"Vytvářím novou sun tabulku rozdělení disku. Změny budou uloženy pouze do\n"
+"paměti, dokud se nerozhodnete je uložit na disk. Poté již nebudou stará "
+"data\n"
+"pochopitelně dostupná.\n"
+
+#: fdisk/fdisksunlabel.c:253
+msgid ""
+"Drive type\n"
+" ? auto configure\n"
+" 0 custom (with hardware detected defaults)"
+msgstr ""
+"Typ disku\n"
+" ? automatická konfigurace\n"
+" 0 uživatelská konfigurace (s detekovaným implicitním nastavením)"
+
+#: fdisk/fdisksunlabel.c:263
+msgid "Select type (? for auto, 0 for custom): "
+msgstr "Zadejte typ (? pro auto, 0 pro uživatelský): "
+
+#: fdisk/fdisksunlabel.c:275
+msgid "Autoconfigure failed.\n"
+msgstr "Automatická konfigurace selhala.\n"
+
+#: fdisk/fdisksunlabel.c:303
+msgid "Sectors/track"
+msgstr "Sektorů/stopu"
+
+#: fdisk/fdisksunlabel.c:310
+msgid "Alternate cylinders"
+msgstr "Alternativní cylindry"
+
+#: fdisk/fdisksunlabel.c:313
+msgid "Physical cylinders"
+msgstr "Fyzické cylindry"
+
+#: fdisk/fdisksunlabel.c:316 fdisk/fdisksunlabel.c:681
+msgid "Rotation speed (rpm)"
+msgstr "Rychlost otáčení (otm)"
+
+#: fdisk/fdisksunlabel.c:318 fdisk/fdisksunlabel.c:674
+msgid "Interleave factor"
+msgstr "Interleave faktor"
+
+#: fdisk/fdisksunlabel.c:321 fdisk/fdisksunlabel.c:667
+msgid "Extra sectors per cylinder"
+msgstr "Extra sektory na cylindr"
+
+#: fdisk/fdisksunlabel.c:334
+msgid "You may change all the disk params from the x menu"
+msgstr "Všechny parametry disku můžete změnit z nabídky x"
+
+#: fdisk/fdisksunlabel.c:337
+msgid "3,5\" floppy"
+msgstr "3,5\" pružný disk"
+
+#: fdisk/fdisksunlabel.c:337
+msgid "Linux custom"
+msgstr "Linux uživatelský"
+
+#: fdisk/fdisksunlabel.c:418
+#, c-format
+msgid "Partition %d doesn't end on cylinder boundary\n"
+msgstr "Diskový oddíl %d nekončí na hranici cylindru.\n"
+
+#: fdisk/fdisksunlabel.c:438
+#, c-format
+msgid "Partition %d overlaps with others in sectors %d-%d\n"
+msgstr "Diskový oddíl %d přesahuje do jiných v sektorech %d-%d\n"
+
+#: fdisk/fdisksunlabel.c:460
+#, c-format
+msgid "Unused gap - sectors 0-%d\n"
+msgstr "Nevyužívaný prostor - sektory 0-%d\n"
+
+#: fdisk/fdisksunlabel.c:462 fdisk/fdisksunlabel.c:466
+#, c-format
+msgid "Unused gap - sectors %d-%d\n"
+msgstr "Nevyužívaný prostor - sektory %d-%d\n"
+
+#: fdisk/fdisksunlabel.c:489
+msgid ""
+"Other partitions already cover the whole disk.\n"
+"Delete some/shrink them before retry.\n"
+msgstr ""
+"Jiné diskové oddíly již zaujímá celý disk.\n"
+"Smažte/zmenšete nějaké a zkuste to znovu.\n"
+
+#: fdisk/fdisksunlabel.c:547
+#, c-format
+msgid ""
+"You haven't covered the whole disk with the 3rd partition, but your value\n"
+"%d %s covers some other partition. Your entry has been changed\n"
+"to %d %s\n"
+msgstr ""
+"Třetí diskový oddíl nezabírá celý disk, ale vaše hodnota %d %s\n"
+"zaujímá jiné diskové oddíly. Vaše položka byla změněna na %d %s.\n"
+
+#: fdisk/fdisksunlabel.c:567
+#, c-format
+msgid ""
+"If you want to maintain SunOS/Solaris compatibility, consider leaving this\n"
+"partition as Whole disk (5), starting at 0, with %u sectors\n"
+msgstr ""
+"Pokud chcete zachovat kompatibilitu se SunOS/Solarisem, zvažte ponechání\n"
+"tohoto diskového oddílu jako Celého disku (5), začínajícího na 0 o délce\n"
+"v sektorech %u\n"
+
+#: fdisk/fdisksunlabel.c:580
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n"
+"there may destroy your partition table and bootblock.\n"
+"Type YES if you're very sure you would like that partition\n"
+"tagged with 82 (Linux swap): "
+msgstr ""
+"Doporučuje se, aby diskový oddíl začínající na posunu 0 byl typu\n"
+"UFS, EXT2FS či SunOS swap. Vytvoření odkládacího prostoru pro Linux\n"
+"na tomto místě by mohlo zničit tabulku rozdělení disku a startovací blok.\n"
+"Zadejte YES, pokud jste si jist, že chcete tento diskový oddíl označit 82\n"
+"(odkládací prostor pro Linux): "
+
+#: fdisk/fdisksunlabel.c:611
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n"
+"%d cylinders, %d alternate cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"Disk %s (Sun tabulka rozdělení disku): hlav: %d, sektorů: %d, otm: %d,\n"
+"cylindrů: %d, alternativních cylindrů: %d, fyzických cylindrů: %d\n"
+"extra sektorů/cyl: %d, interleave: %d:1\n"
+"%s\n"
+"Jednotky = %sy po %d * 512 bajtech\n"
+"\n"
+
+#: fdisk/fdisksunlabel.c:625
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"Disk %s (Sun tabulka rozdělení disku): hlav: %d, sektorů: %d, cylindrů: %d\n"
+"Jednotky = %sy po %d * 512 bajtech\n"
+"\n"
+
+#: fdisk/fdisksunlabel.c:630
+#, c-format
+msgid "%*s Flag Start End Blocks Id System\n"
+msgstr "%*s Příznak Začátek Konec Bloky Id Systém\n"
+
+#: fdisk/fdisksunlabel.c:655
+msgid "Number of alternate cylinders"
+msgstr "Počet alternativních cylindrů"
+
+#: fdisk/fdisksunlabel.c:688
+msgid "Number of physical cylinders"
+msgstr "Počet fyzických cylindrů"
+
+#: fdisk/i386_sys_types.c:7
+msgid "FAT12"
+msgstr "FAT12"
+
+#: fdisk/i386_sys_types.c:8
+msgid "XENIX root"
+msgstr "XENIX root"
+
+#: fdisk/i386_sys_types.c:9
+msgid "XENIX usr"
+msgstr "XENIX usr"
+
+#: fdisk/i386_sys_types.c:10
+msgid "FAT16 <32M"
+msgstr "FAT16 <32M"
+
+#: fdisk/i386_sys_types.c:11
+msgid "Extended"
+msgstr "Rozšířený"
+
+#. DOS 3.3+ extended partition
+#: fdisk/i386_sys_types.c:12
+msgid "FAT16"
+msgstr "FAT16"
+
+#. DOS 16-bit >=32M
+#: fdisk/i386_sys_types.c:13
+msgid "HPFS/NTFS"
+msgstr "HPFS/NTFS"
+
+#. OS/2 IFS, eg, HPFS or NTFS or QNX
+#: fdisk/i386_sys_types.c:14
+msgid "AIX"
+msgstr "AIX"
+
+#. AIX boot (AIX -- PS/2 port) or SplitDrive
+#: fdisk/i386_sys_types.c:15
+msgid "AIX bootable"
+msgstr "AIX startovací"
+
+#. AIX data or Coherent
+#: fdisk/i386_sys_types.c:16
+msgid "OS/2 Boot Manager"
+msgstr "OS/2 Boot Manager"
+
+#. OS/2 Boot Manager
+#: fdisk/i386_sys_types.c:17
+msgid "Win95 FAT32"
+msgstr "Win95 FAT32"
+
+#: fdisk/i386_sys_types.c:18
+msgid "Win95 FAT32 (LBA)"
+msgstr "Win95 FAT32 (LBA)"
+
+#. LBA really is `Extended Int 13h'
+#: fdisk/i386_sys_types.c:19
+msgid "Win95 FAT16 (LBA)"
+msgstr "Win95 FAT16 (LBA)"
+
+#: fdisk/i386_sys_types.c:20
+msgid "Win95 Ext'd (LBA)"
+msgstr "Win95 Ext'd (LBA)"
+
+#: fdisk/i386_sys_types.c:21
+msgid "OPUS"
+msgstr "OPUS"
+
+#: fdisk/i386_sys_types.c:22
+msgid "Hidden FAT12"
+msgstr "Skrytá FAT12"
+
+#: fdisk/i386_sys_types.c:23
+msgid "Compaq diagnostics"
+msgstr "Compaq diagnostics"
+
+#: fdisk/i386_sys_types.c:24
+msgid "Hidden FAT16 <32M"
+msgstr "Skrytá FAT16 <32M"
+
+#: fdisk/i386_sys_types.c:25
+msgid "Hidden FAT16"
+msgstr "Skrytá FAT16"
+
+#: fdisk/i386_sys_types.c:26
+msgid "Hidden HPFS/NTFS"
+msgstr "Skrytá HPFS/NTFS"
+
+#: fdisk/i386_sys_types.c:27
+msgid "AST Windows swapfile"
+msgstr "AST Windows odkládací soubor"
+
+#: fdisk/i386_sys_types.c:28
+msgid "Hidden Win95 FAT32"
+msgstr "Skrytá Win95 FAT32"
+
+#: fdisk/i386_sys_types.c:29
+msgid "Hidden Win95 FAT32 (LBA)"
+msgstr "Skrytá Win95 FAT32 (LBA)"
+
+#: fdisk/i386_sys_types.c:30
+msgid "Hidden Win95 FAT16 (LBA)"
+msgstr "Skrytá Win95 FAT16 (LBA)"
+
+#: fdisk/i386_sys_types.c:31
+msgid "NEC DOS"
+msgstr "NEC DOS"
+
+#: fdisk/i386_sys_types.c:32
+msgid "PartitionMagic recovery"
+msgstr "PartitionMagic recovery"
+
+#: fdisk/i386_sys_types.c:33
+msgid "Venix 80286"
+msgstr "Venix 80286"
+
+#: fdisk/i386_sys_types.c:34
+msgid "PPC PReP Boot"
+msgstr "PPC PReP Boot"
+
+#: fdisk/i386_sys_types.c:35
+msgid "SFS"
+msgstr "SFS"
+
+#: fdisk/i386_sys_types.c:36
+msgid "QNX4.x"
+msgstr "QNX4.x"
+
+#: fdisk/i386_sys_types.c:37
+msgid "QNX4.x 2nd part"
+msgstr "QNX4.x 2. část"
+
+#: fdisk/i386_sys_types.c:38
+msgid "QNX4.x 3rd part"
+msgstr "QNX4.x 3. část"
+
+#: fdisk/i386_sys_types.c:39
+msgid "OnTrack DM"
+msgstr "OnTrack DM"
+
+#: fdisk/i386_sys_types.c:40
+msgid "OnTrack DM6 Aux1"
+msgstr "OnTrack DM6 Aux1"
+
+#. (or Novell)
+#: fdisk/i386_sys_types.c:41
+msgid "CP/M"
+msgstr "CP/M"
+
+#. CP/M or Microport SysV/AT
+#: fdisk/i386_sys_types.c:42
+msgid "OnTrack DM6 Aux3"
+msgstr "OnTrack DM6 Aux3"
+
+#: fdisk/i386_sys_types.c:43
+msgid "OnTrackDM6"
+msgstr "OnTrackDM6"
+
+#: fdisk/i386_sys_types.c:44
+msgid "EZ-Drive"
+msgstr "EZ-Drive"
+
+#: fdisk/i386_sys_types.c:45
+msgid "Golden Bow"
+msgstr "Golden Bow"
+
+#: fdisk/i386_sys_types.c:46
+msgid "Priam Edisk"
+msgstr "Priam Edisk"
+
+#. DOS R/O or SpeedStor
+#: fdisk/i386_sys_types.c:47 fdisk/i386_sys_types.c:76
+#: fdisk/i386_sys_types.c:78 fdisk/i386_sys_types.c:79
+msgid "SpeedStor"
+msgstr "SpeedStor"
+
+#: fdisk/i386_sys_types.c:48
+msgid "GNU HURD or SysV"
+msgstr "GNU HURD či SysV"
+
+#. GNU HURD or Mach or Sys V/386 (such as ISC UNIX)
+#: fdisk/i386_sys_types.c:49
+msgid "Novell Netware 286"
+msgstr "Novell Netware 286"
+
+#: fdisk/i386_sys_types.c:50
+msgid "Novell Netware 386"
+msgstr "Novell Netware 386"
+
+#: fdisk/i386_sys_types.c:51
+msgid "DiskSecure Multi-Boot"
+msgstr "DiskSecure Multi-Boot"
+
+#: fdisk/i386_sys_types.c:52
+msgid "PC/IX"
+msgstr "PC/IX"
+
+#: fdisk/i386_sys_types.c:53
+msgid "Old Minix"
+msgstr "Starý Minix"
+
+#. Minix 1.4a and earlier
+#: fdisk/i386_sys_types.c:54
+msgid "Minix / old Linux"
+msgstr "Minix / starý Linux"
+
+#: fdisk/i386_sys_types.c:57
+msgid "OS/2 hidden C: drive"
+msgstr "OS/2 skrytý C: disk"
+
+#: fdisk/i386_sys_types.c:58
+msgid "Linux extended"
+msgstr "Linux extended"
+
+#: fdisk/i386_sys_types.c:59 fdisk/i386_sys_types.c:60
+msgid "NTFS volume set"
+msgstr "NTFS svazek"
+
+#: fdisk/i386_sys_types.c:61
+msgid "Amoeba"
+msgstr "Amoeba"
+
+#: fdisk/i386_sys_types.c:62
+msgid "Amoeba BBT"
+msgstr "Amoeba BBT"
+
+#. (bad block table)
+#: fdisk/i386_sys_types.c:63
+msgid "IBM Thinkpad hibernation"
+msgstr "IBM Thinkpad hibernation"
+
+#: fdisk/i386_sys_types.c:64
+msgid "BSD/386"
+msgstr "BSD/386"
+
+#: fdisk/i386_sys_types.c:65
+msgid "OpenBSD"
+msgstr "OpenBSD"
+
+#: fdisk/i386_sys_types.c:66
+msgid "NeXTSTEP"
+msgstr "NeXTSTEP"
+
+#: fdisk/i386_sys_types.c:67
+msgid "BSDI fs"
+msgstr "BSDI ss"
+
+#: fdisk/i386_sys_types.c:68
+msgid "BSDI swap"
+msgstr "BSDI swap"
+
+#: fdisk/i386_sys_types.c:69
+msgid "DRDOS/sec (FAT-12)"
+msgstr "DRDOS/sec (FAT-12)"
+
+#: fdisk/i386_sys_types.c:70
+msgid "DRDOS/sec (FAT-16 < 32M)"
+msgstr "DRDOS/sec (FAT-16 < 32M)"
+
+#: fdisk/i386_sys_types.c:71
+msgid "DRDOS/sec (FAT-16)"
+msgstr "DRDOS/sec (FAT-16)"
+
+#: fdisk/i386_sys_types.c:72
+msgid "Syrinx"
+msgstr "Syrinx"
+
+#: fdisk/i386_sys_types.c:73
+msgid "CP/M / CTOS / ..."
+msgstr "CP/M / CTOS / ..."
+
+#. CP/M or Concurrent CP/M or Concurrent DOS or CTOS
+#: fdisk/i386_sys_types.c:74
+msgid "DOS access"
+msgstr "DOS access"
+
+#. DOS access or SpeedStor 12-bit FAT extended partition
+#: fdisk/i386_sys_types.c:75
+msgid "DOS R/O"
+msgstr "DOS R/O"
+
+#. SpeedStor 16-bit FAT extended partition < 1024 cyl.
+#: fdisk/i386_sys_types.c:77
+msgid "BeOS fs"
+msgstr "BeOS ss"
+
+#. SpeedStor large partition
+#: fdisk/i386_sys_types.c:80
+msgid "DOS secondary"
+msgstr "DOS sekundární"
+
+#. DOS 3.3+ secondary
+#: fdisk/i386_sys_types.c:81
+msgid "Linux raid autodetect"
+msgstr "Linux raid autodetect"
+
+#. New (2.2.x) raid partition with autodetect
+#. using persistent superblock
+#: fdisk/i386_sys_types.c:83
+msgid "LANstep"
+msgstr "LANstep"
+
+#. SpeedStor >1024 cyl. or LANstep
+#: fdisk/i386_sys_types.c:84
+msgid "BBT"
+msgstr "BBT"
+
+#: fdisk/sfdisk.c:148
+#, c-format
+msgid "seek error on %s - cannot seek to %lu\n"
+msgstr "chyba posunu ukazovátka na %s - ukazovátko nelze posunout na %lu\n"
+
+#: fdisk/sfdisk.c:153
+#, c-format
+msgid "seek error: wanted 0x%08x%08x, got 0x%08x%08x\n"
+msgstr ""
+"chyba při posunu ukazovátka: požadavek 0x%08x%08x, výsledek 0x%08x%08x\n"
+
+#: fdisk/sfdisk.c:199
+msgid "out of memory - giving up\n"
+msgstr "nedostatek paměti - končím\n"
+
+#: fdisk/sfdisk.c:203 fdisk/sfdisk.c:286
+#, c-format
+msgid "read error on %s - cannot read sector %lu\n"
+msgstr "chyba čtení na %s - sektor %lu nelze číst\n"
+
+#: fdisk/sfdisk.c:219
+#, c-format
+msgid "ERROR: sector %lu does not have an msdos signature\n"
+msgstr "CHYBA: sektor %lu nemá msdos podpis\n"
+
+#: fdisk/sfdisk.c:236
+#, c-format
+msgid "write error on %s - cannot write sector %lu\n"
+msgstr "chyba zápisu na %s - sektor %lu nelze zapsat\n"
+
+#: fdisk/sfdisk.c:274
+#, c-format
+msgid "cannot open partition sector save file (%s)\n"
+msgstr "soubor pro uložení sektorů (%s) nelze otevřít\n"
+
+#: fdisk/sfdisk.c:292
+#, c-format
+msgid "write error on %s\n"
+msgstr "chyba zápisu na %s\n"
+
+#: fdisk/sfdisk.c:310
+#, c-format
+msgid "cannot stat partition restore file (%s)\n"
+msgstr "volání stat pro soubor s uloženými sektory (%s) selhalo\n"
+
+#: fdisk/sfdisk.c:315
+msgid "partition restore file has wrong size - not restoring\n"
+msgstr "soubor s uloženými sektory má chybnou velikost - nebude obnoven\n"
+
+#: fdisk/sfdisk.c:319
+msgid "out of memory?\n"
+msgstr "nedostatek paměti?\n"
+
+#: fdisk/sfdisk.c:325
+#, c-format
+msgid "cannot open partition restore file (%s)\n"
+msgstr "soubor s uloženými sektory (%s) nelze otevřít\n"
+
+#: fdisk/sfdisk.c:331
+#, c-format
+msgid "error reading %s\n"
+msgstr "chyba při čtení %s\n"
+
+#: fdisk/sfdisk.c:338
+#, c-format
+msgid "cannot open device %s for writing\n"
+msgstr "zařízení %s nelze otevřít pro zápis\n"
+
+#: fdisk/sfdisk.c:350
+#, c-format
+msgid "error writing sector %lu on %s\n"
+msgstr "chyba při zápisu sektoru %lu na %s\n"
+
+#: fdisk/sfdisk.c:416
+#, c-format
+msgid ""
+"Warning: start=%d - this looks like a partition rather than\n"
+"the entire disk. Using fdisk on it is probably meaningless.\n"
+"[Use the --force option if you really want this]\n"
+msgstr ""
+"Varování: začátek=%d - to vypadá spíše jako diskový oddíl nežli\n"
+"celý disk. Použití fdisku je v tom případě pravděpodobně zbytečné\n"
+"[Použijte přepínač --force pokud to opravdu chcete.]\n"
+
+#: fdisk/sfdisk.c:422
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d heads\n"
+msgstr "Varování: dle HDIO_GETGEO je počet hlav %d\n"
+
+#: fdisk/sfdisk.c:425
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d sectors\n"
+msgstr "Varování: dle HDIO_GETGEO je počet sektorů %d\n"
+
+#: fdisk/sfdisk.c:428
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d cylinders\n"
+msgstr "Varování: dle HDIO_GETGEO je počet cylindrů %d\n"
+
+#: fdisk/sfdisk.c:432
+#, c-format
+msgid "Disk %s: cannot get geometry\n"
+msgstr "Disk %s: geometrii nelze zjistit\n"
+
+#: fdisk/sfdisk.c:434
+#, c-format
+msgid ""
+"Warning: unlikely number of sectors (%d) - usually at most 63\n"
+"This will give problems with all software that uses C/H/S addressing.\n"
+msgstr ""
+"Varování: podivný počet sektorů (%d) - obvykle nebývá více než 63\n"
+"To způsobí problémy všem programům, které používají CHS adresování.\n"
+
+#: fdisk/sfdisk.c:438
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %lu cylinders, %lu heads, %lu sectors/track\n"
+msgstr ""
+"\n"
+"Disk %s: cylindrů: %lu, hlav: %lu, sektorů/stopu: %lu\n"
+
+#: fdisk/sfdisk.c:518
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for head: %d (should be in 0-%d)\n"
+msgstr "%s diskového oddílu %s má chybný počet hlav: %d (mělo by být 0-%d)\n"
+
+#: fdisk/sfdisk.c:523
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for sector: %d (should be in 1-%d)\n"
+msgstr ""
+"%s diskového oddílu %s má chybný počet sektorů: %d (mělo by být 1-%d)\n"
+
+#: fdisk/sfdisk.c:528
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for cylinders: %d (should be in "
+"0-%d)\n"
+msgstr ""
+"%s diskového oddílu %s má chybný počet cylindrů: %d (mělo by být 0-%d)\n"
+
+#: fdisk/sfdisk.c:567
+msgid ""
+"Id Name\n"
+"\n"
+msgstr "Id Jméno\n"
+
+#: fdisk/sfdisk.c:720
+msgid "Re-reading the partition table ...\n"
+msgstr "Načítám znovu tabulku rozdělení disku ...\n"
+
+#: fdisk/sfdisk.c:726
+msgid ""
+"The command to re-read the partition table failed\n"
+"Reboot your system now, before using mkfs\n"
+msgstr ""
+"Nepodařilo se znovu načíst tabulku rozdělení disku.\n"
+"Restartujte nyní, před použitím mkfs, systém.\n"
+
+#: fdisk/sfdisk.c:731
+#, c-format
+msgid "Error closing %s\n"
+msgstr "Chyba při zavírání %s\n"
+
+#: fdisk/sfdisk.c:769
+#, c-format
+msgid "%s: no such partition\n"
+msgstr "diskový oddíl %s neexistuje\n"
+
+#: fdisk/sfdisk.c:792
+msgid "unrecognized format - using sectors\n"
+msgstr "Neznámý formát - používám sektory\n"
+
+#: fdisk/sfdisk.c:831
+#, c-format
+msgid "# partition table of %s\n"
+msgstr "# tabulka rozdělení disku pro %s\n"
+
+#: fdisk/sfdisk.c:832
+msgid ""
+"unit: sectors\n"
+"\n"
+msgstr ""
+"jednotky: sektory\n"
+"\n"
+
+#: fdisk/sfdisk.c:842
+#, c-format
+msgid "unimplemented format - using %s\n"
+msgstr "nepoužívaný formát - používám %s\n"
+
+#: fdisk/sfdisk.c:846
+#, c-format
+msgid ""
+"Units = cylinders of %lu bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+"Jednotky = cylindry po %lu bajtech, bloky po 1024 bajtech, počítáno od %d\n"
+"\n"
+
+#: fdisk/sfdisk.c:849
+msgid " Device Boot Start End #cyls #blocks Id System\n"
+msgstr " Zaříz Boot Začátek Konec #cylind #bloky Id Systém\n"
+
+#: fdisk/sfdisk.c:854
+#, c-format
+msgid ""
+"Units = sectors of 512 bytes, counting from %d\n"
+"\n"
+msgstr ""
+"Jednotky = sektory po 512 bajtech, počítáno od %d\n"
+"\n"
+
+#: fdisk/sfdisk.c:856
+msgid " Device Boot Start End #sectors Id System\n"
+msgstr " Zaříz Boot Začátek Konec #sektory Id Systém\n"
+
+#: fdisk/sfdisk.c:859
+#, c-format
+msgid ""
+"Units = blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+"Jednotky = bloky po 1024 bajtech, počítáno od %d\n"
+"\n"
+
+#: fdisk/sfdisk.c:861
+msgid " Device Boot Start End #blocks Id System\n"
+msgstr " Zaříz Boot Začátek Konec #bloky Id Systém\n"
+
+#: fdisk/sfdisk.c:864
+#, c-format
+msgid ""
+"Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+"Jednotky = megabajty po 1048576 bajtech, bloky po 1024 bajtech, počítáno od "
+"%d\n"
+"\n"
+
+#: fdisk/sfdisk.c:866
+msgid " Device Boot Start End MB #blocks Id System\n"
+msgstr " Zaříz Boot Začátek Konec MB #bloky Id Systém\n"
+
+#: fdisk/sfdisk.c:932
+#, c-format
+msgid " start=%9lu"
+msgstr " začátek=%9lu"
+
+#: fdisk/sfdisk.c:933
+#, c-format
+msgid ", size=%8lu"
+msgstr ", velikost=%lu"
+
+#: fdisk/sfdisk.c:935
+#, c-format
+msgid ", Id=%2x"
+msgstr ", Id=%2x"
+
+#: fdisk/sfdisk.c:937
+msgid ", bootable"
+msgstr ", startovací"
+
+#: fdisk/sfdisk.c:998
+#, c-format
+msgid "\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr "\t\tzačátek: (c,h,s) předpoklad (%ld,%ld,%ld) nalezeno (%ld,%ld,%ld)\n"
+
+#: fdisk/sfdisk.c:1005
+#, c-format
+msgid "\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr "\t\tkonec: (c,h,s) předpoklad (%ld,%ld,%ld) nalezeno (%ld,%ld,%ld)\n"
+
+#: fdisk/sfdisk.c:1008
+#, c-format
+msgid "partition ends on cylinder %ld, beyond the end of the disk\n"
+msgstr "diskový oddíl končí na cylindru %ld, t.j. za koncem disku\n"
+
+#: fdisk/sfdisk.c:1018
+msgid "No partitions found\n"
+msgstr "Nebyly nalezeny žádné diskové oddíly\n"
+
+#: fdisk/sfdisk.c:1021
+#, c-format
+msgid ""
+"Warning: The first partition looks like it was made\n"
+" for C/H/S=*/%ld/%ld (instead of %ld/%ld/%ld).\n"
+"For this listing I'll assume that geometry.\n"
+msgstr ""
+"Varování: Zdá se, že první diskový oddíl byl vytvořen\n"
+"pro C/H/S=*/%ld/%ld (místo %ld/%ld/%ld).\n"
+"Zobrazuji za použití této geometrie.\n"
+
+#: fdisk/sfdisk.c:1068
+msgid "no partition table present.\n"
+msgstr "Nebyla nalezena žádná tabulka rozdělení disku.\n"
+
+#: fdisk/sfdisk.c:1070
+#, c-format
+msgid "strange, only %d partitions defined.\n"
+msgstr "Zvláštní - počet definovaných diskových oddílů je pouze %d.\n"
+
+#: fdisk/sfdisk.c:1079
+#, c-format
+msgid "Warning: partition %s has size 0 but is not marked Empty\n"
+msgstr ""
+"Varování: diskový oddíl %s má velikost 0 a není označen jako prázdný.\n"
+
+#: fdisk/sfdisk.c:1082
+#, c-format
+msgid "Warning: partition %s has size 0 and is bootable\n"
+msgstr "Varování: diskový oddíl %s má velikost 0 a je startovací.\n"
+
+#: fdisk/sfdisk.c:1085
+#, c-format
+msgid "Warning: partition %s has size 0 and nonzero start\n"
+msgstr "Varování: diskový oddíl %s má velikost 0 a nenulový začátek.\n"
+
+#: fdisk/sfdisk.c:1096
+#, c-format
+msgid "Warning: partition %s "
+msgstr "Varování: diskový oddíl %s "
+
+#: fdisk/sfdisk.c:1097
+#, c-format
+msgid "is not contained in partition %s\n"
+msgstr "není obsažen v diskovém oddílu %s.\n"
+
+#: fdisk/sfdisk.c:1108
+#, c-format
+msgid "Warning: partitions %s "
+msgstr "Varování: diskové oddíly %s "
+
+#: fdisk/sfdisk.c:1109
+#, c-format
+msgid "and %s overlap\n"
+msgstr "a %s se navzájem překrývají.\n"
+
+#: fdisk/sfdisk.c:1120
+#, c-format
+msgid "Warning: partition %s contains part of "
+msgstr "Varování: diskový oddíl %s obsahuje část "
+
+#: fdisk/sfdisk.c:1121
+#, c-format
+msgid "the partition table (sector %lu),\n"
+msgstr "tabulky rozdělení disku (sektor %lu)\n"
+
+#: fdisk/sfdisk.c:1122
+msgid "and will destroy it when filled\n"
+msgstr "a zničí ji, pokud bude obsazen\n"
+
+#: fdisk/sfdisk.c:1131
+#, c-format
+msgid "Warning: partition %s starts at sector 0\n"
+msgstr "Varování: diskový oddíl %s začíná na sektoru 0\n"
+
+#: fdisk/sfdisk.c:1135
+#, c-format
+msgid "Warning: partition %s extends past end of disk\n"
+msgstr "Varování: diskový oddíl %s přesahuje za konec disku.\n"
+
+#: fdisk/sfdisk.c:1149
+msgid "Among the primary partitions, at most one can be extended\n"
+msgstr "Pouze jeden z diskových oddílů může být rozšířeným.\n"
+
+#: fdisk/sfdisk.c:1150
+msgid " (although this is not a problem under Linux)\n"
+msgstr " (ačkoliv pod Linuxem to nepředstavuje problém)\n"
+
+#: fdisk/sfdisk.c:1167
+#, c-format
+msgid "Warning: partition %s does not start at a cylinder boundary\n"
+msgstr "Varování: diskový oddíl %s nezačíná na hranici cylindru.\n"
+
+#: fdisk/sfdisk.c:1173
+#, c-format
+msgid "Warning: partition %s does not end at a cylinder boundary\n"
+msgstr "Varování: diskový oddíl %s nekončí na hranici cylindru.\n"
+
+#: fdisk/sfdisk.c:1191
+msgid ""
+"Warning: more than one primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+"Varování: více než jeden primární diskový oddíl je označen jako startovací.\n"
+"LILU to nečiní problémy, ale DOS MBR z tohoto disku nenastartuje.\n"
+
+#: fdisk/sfdisk.c:1198
+msgid ""
+"Warning: usually one can boot from primary partitions only\n"
+"LILO disregards the `bootable' flag.\n"
+msgstr ""
+"Varování: obyčejně je možné startovat pouze z primárních diskových oddíl|ů.\n"
+"LILO nebude brát ohled na příznak 'startovací'.\n"
+
+#: fdisk/sfdisk.c:1204
+msgid ""
+"Warning: no primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+"Varování: žádný primární diskový oddíl není označen jako startovací.\n"
+"LILU to nečiní problémy, ale DOS z tohoto disku nenastartuje.\n"
+
+#: fdisk/sfdisk.c:1221
+#, c-format
+msgid ""
+"partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+"diskový oddíl %s: začátek: (c,h,s) předpoklad (%ld,%ld,%ld), nalezeno\n"
+"(%ld,%ld,%ld)\n"
+
+#: fdisk/sfdisk.c:1230
+#, c-format
+msgid "partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+"diskový oddíl %s: konec: (c,h,s) předpoklad (%ld,%ld,%ld), nalezeno\n"
+"(%ld,%ld,%ld)\n"
+
+#: fdisk/sfdisk.c:1233
+#, c-format
+msgid "partition %s ends on cylinder %ld, beyond the end of the disk\n"
+msgstr "diskový oddíl %s končí na cylindru %ld, t.j. za koncem disku\n"
+
+#: fdisk/sfdisk.c:1266 fdisk/sfdisk.c:1343
+#, c-format
+msgid "too many partitions - ignoring those past nr (%d)\n"
+msgstr "příliš mnoho diskových oddílů - ignoruji > %d\n"
+
+#: fdisk/sfdisk.c:1281
+msgid "tree of partitions?\n"
+msgstr "strom diskových oddílů?\n"
+
+#: fdisk/sfdisk.c:1385
+msgid "detected Disk Manager - unable to handle that\n"
+msgstr "nalezen Disk Manager - s tím neumím pracovat\n"
+
+#: fdisk/sfdisk.c:1392
+msgid "DM6 signature found - giving up\n"
+msgstr "nalezen DM6 podpis - končím\n"
+
+#: fdisk/sfdisk.c:1412
+msgid "strange..., an extended partition of size 0?\n"
+msgstr "zvláštní..., rozšířený diskový oddíl o velikosti 0?\n"
+
+#: fdisk/sfdisk.c:1419
+msgid "strange..., a BSD partition of size 0?\n"
+msgstr "zvláštní..., BSD diskový oddíl o velikosti 0?\n"
+
+#: fdisk/sfdisk.c:1451
+#, c-format
+msgid " %s: unrecognized partition\n"
+msgstr " diskový oddíl %s není znám\n"
+
+#: fdisk/sfdisk.c:1463
+msgid "-n flag was given: Nothing changed\n"
+msgstr "byl zadán přepínač -n: Nic nebylo změněno\n"
+
+#: fdisk/sfdisk.c:1476
+msgid "Failed saving the old sectors - aborting\n"
+msgstr "Chyba při ukládání starých sektorů - končím\n"
+
+#: fdisk/sfdisk.c:1481
+#, c-format
+msgid "Failed writing the partition on %s\n"
+msgstr "Chyba při zápisu na diskový oddíl %s\n"
+
+#: fdisk/sfdisk.c:1558
+msgid "long or incomplete input line - quitting\n"
+msgstr "příliš dlouhý či neúplný řádek - končím\n"
+
+#: fdisk/sfdisk.c:1594
+#, c-format
+msgid "input error: `=' expected after %s field\n"
+msgstr "vstupní chyba: po položce %s jsem očekával znak `='\n"
+
+#: fdisk/sfdisk.c:1601
+#, c-format
+msgid "input error: unexpected character %c after %s field\n"
+msgstr "vstupní chyba: neočekávaný znak %c po položce %s\n"
+
+#: fdisk/sfdisk.c:1607
+#, c-format
+msgid "unrecognized input: %s\n"
+msgstr "nerozpoznaný vstup: %s\n"
+
+#: fdisk/sfdisk.c:1639
+msgid "number too big\n"
+msgstr "číslo je příliš veliké\n"
+
+#: fdisk/sfdisk.c:1643
+msgid "trailing junk after number\n"
+msgstr "nesmysly za číslem\n"
+
+#: fdisk/sfdisk.c:1759
+msgid "no room for partition descriptor\n"
+msgstr "není místo pro popis diskového oddílu\n"
+
+#: fdisk/sfdisk.c:1792
+msgid "cannot build surrounding extended partition\n"
+msgstr "okolní rozšiřující diskový oddíl nelze vytvořit\n"
+
+#: fdisk/sfdisk.c:1843
+msgid "too many input fields\n"
+msgstr "příliš mnoho vstupních položek\n"
+
+#. no free blocks left - don't read any further
+#: fdisk/sfdisk.c:1877
+msgid "No room for more\n"
+msgstr "Již nejsou volné bloky\n"
+
+#: fdisk/sfdisk.c:1896
+msgid "Illegal type\n"
+msgstr "Chybný typ\n"
+
+#: fdisk/sfdisk.c:1928
+#, c-format
+msgid "Warning: exceeds max allowable size (%lu)\n"
+msgstr "Varování: překročení maximální povolené velikosti (%lu)\n"
+
+#: fdisk/sfdisk.c:1933
+msgid "Warning: empty partition\n"
+msgstr "Varování: prázdný diskový oddíl\n"
+
+#: fdisk/sfdisk.c:1947
+#, c-format
+msgid "Warning: bad partition start (earliest %lu)\n"
+msgstr "Varování: chybný začátek diskového oddílu (dřívější %lu)\n"
+
+#: fdisk/sfdisk.c:1960
+msgid "unrecognized bootable flag - choose - or *\n"
+msgstr "nerozpoznaný příznak 'startovací' - zvolte - či *\n"
+
+#: fdisk/sfdisk.c:1977 fdisk/sfdisk.c:1990
+msgid "partial c,h,s specification?\n"
+msgstr "neúplná c,h,s specifikace?\n"
+
+#: fdisk/sfdisk.c:2001
+msgid "Extended partition not where expected\n"
+msgstr "Rozšířený diskový oddíl na neočekávaném místě\n"
+
+#: fdisk/sfdisk.c:2033
+msgid "bad input\n"
+msgstr "chybný vstup\n"
+
+#: fdisk/sfdisk.c:2055
+msgid "too many partitions\n"
+msgstr "příliš mnoho diskových oddílů\n"
+
+#: fdisk/sfdisk.c:2088
+msgid ""
+"Input in the following format; absent fields get a default value.\n"
+"<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+"Usually you only need to specify <start> and <size> (and perhaps <type>).\n"
+msgstr ""
+"Vstup v následujícím formátu; chybějící položky budou nahrazeny "
+"implicitními\n"
+"hodnotami.\n"
+"<začátek> <velikost> <typ [E,S,L,X,hex]> <startovací [-,*]> <c,h,s> <c,h,s>\n"
+"Obvykle je třeba zadat pouze <začátek> a <velikost> (a možná <typ>).\n"
+
+#: fdisk/sfdisk.c:2108
+msgid "version"
+msgstr "verze"
+
+#: fdisk/sfdisk.c:2114
+#, c-format
+msgid "Usage: %s [options] device ...\n"
+msgstr "Použití: %s [přepínače] zařízení ...\n"
+
+#: fdisk/sfdisk.c:2115
+msgid "device: something like /dev/hda or /dev/sda"
+msgstr "zařízení: něco jako /dev/hda či /dev/sda"
+
+#: fdisk/sfdisk.c:2116
+msgid "useful options:"
+msgstr "užitečné přepínače:"
+
+#: fdisk/sfdisk.c:2117
+msgid " -s [or --show-size]: list size of a partition"
+msgstr " -s [či --show-size]: vypíše velikost diskového oddílu"
+
+#: fdisk/sfdisk.c:2118
+msgid " -c [or --id]: print or change partition Id"
+msgstr " -c [či --id]: vypíše či změní Id diskového oddílu"
+
+#: fdisk/sfdisk.c:2119
+msgid " -l [or --list]: list partitions of each device"
+msgstr " -l [či --list]: ke každému zařízení vypíše diskové oddíly"
+
+#: fdisk/sfdisk.c:2120
+msgid " -d [or --dump]: idem, but in a format suitable for later input"
+msgstr ""
+" -d [či --dump]: idem, ale ve formátu vhodném k dalšímu zpracování"
+
+#: fdisk/sfdisk.c:2121
+msgid " -i [or --increment]: number cylinders etc. from 1 instead of from 0"
+msgstr " -i [či --increment]: čísluje cylindry etc. od 1 místo od 0"
+
+#: fdisk/sfdisk.c:2122
+msgid ""
+" -uS, -uB, -uC, -uM: accept/report in units of "
+"sectors/blocks/cylinders/MB"
+msgstr ""
+" -uS, -uB, -uC, -uM: jako jednotky použije Sektory/Bloky/Cylindry či MB"
+
+#: fdisk/sfdisk.c:2123
+msgid " -T [or --list-types]:list the known partition types"
+msgstr " -T [či --list-types]:vypíše známé typy diskových oddílů"
+
+#: fdisk/sfdisk.c:2124
+msgid " -D [or --DOS]: for DOS-compatibility: waste a little space"
+msgstr " -D [či --DOS]: pro kompatibilitu s DOSEM: ubírá trochu místa"
+
+#: fdisk/sfdisk.c:2125
+msgid " -R [or --re-read]: make kernel reread partition table"
+msgstr ""
+" -R [či --re-read]: donutí jádro znovu načíst tabulku rozdělení disku"
+
+#: fdisk/sfdisk.c:2126
+msgid " -N# : change only the partition with number #"
+msgstr " -N# : změní pouze diskový oddíl s číslem #"
+
+#: fdisk/sfdisk.c:2127
+msgid " -n : do not actually write to disk"
+msgstr " -n : žádné změny nebudou uloženy na disk"
+
+#: fdisk/sfdisk.c:2128
+msgid ""
+" -O file : save the sectors that will be overwritten to file"
+msgstr " -O SOUBOR : uloží změněné sektory do SOUBORU"
+
+#: fdisk/sfdisk.c:2129
+msgid " -I file : restore these sectors again"
+msgstr " -I SOUBOR : obnoví tyto sektory ze SOUBORU"
+
+#: fdisk/sfdisk.c:2130
+msgid " -v [or --version]: print version"
+msgstr " -v [či --version]: vypíše informace o verzi"
+
+#: fdisk/sfdisk.c:2131
+msgid " -? [or --help]: print this message"
+msgstr " -? [či --help]: vypíše tuto nápovědu"
+
+#: fdisk/sfdisk.c:2132
+msgid "dangerous options:"
+msgstr "nebezpečné přepínače:"
+
+#: fdisk/sfdisk.c:2133
+msgid " -g [or --show-geometry]: print the kernel's idea of the geometry"
+msgstr ""
+" -g [či --show-geometry]: vypíše informace o geometrii, které\n"
+" udržuje jádro"
+
+#: fdisk/sfdisk.c:2134
+msgid ""
+" -x [or --show-extended]: also list extended partitions on output\n"
+" or expect descriptors for them on input"
+msgstr ""
+" -x [či --show-extended]: vypíše informace o rozšířených diskových\n"
+" oddílech a na vstupu bude očekávat jejich popis"
+
+#: fdisk/sfdisk.c:2136
+msgid ""
+" -L [or --Linux]: do not complain about things irrelevant for Linux"
+msgstr ""
+" -L [či --Linux]: problémy nepodstatné pro Linux budou ignorovány"
+
+#: fdisk/sfdisk.c:2137
+msgid " -q [or --quiet]: suppress warning messages"
+msgstr " -q [či --quiet]: nebude vypisovat varovné hlášky"
+
+#: fdisk/sfdisk.c:2138
+msgid " You can override the detected geometry using:"
+msgstr " Nalezenou geometrii můžete přepsat pomocí:"
+
+#: fdisk/sfdisk.c:2139
+msgid " -C# [or --cylinders #]:set the number of cylinders to use"
+msgstr " -C# [či --cylinders #]:nastaví počet cylindrů"
+
+#: fdisk/sfdisk.c:2140
+msgid " -H# [or --heads #]: set the number of heads to use"
+msgstr " -H# [či --heads #]: nastaví počet hlav"
+
+#: fdisk/sfdisk.c:2141
+msgid " -S# [or --sectors #]: set the number of sectors to use"
+msgstr " -S# [či --sectors #]: nastaví počet cylindrů"
+
+#: fdisk/sfdisk.c:2142
+msgid "You can disable all consistency checking with:"
+msgstr "Ověřování konzistence můžete vypnout pomocí:"
+
+#: fdisk/sfdisk.c:2143
+msgid " -f [or --force]: do what I say, even if it is stupid"
+msgstr " -f [či --force]: akceptuje veškeré - i nesmyslné - požadavky"
+
+#: fdisk/sfdisk.c:2149
+msgid "Usage:"
+msgstr "Použití:"
+
+#: fdisk/sfdisk.c:2150
+#, c-format
+msgid "%s device\t\t list active partitions on device\n"
+msgstr "%s zařízení\t\t vypíše aktivní diskové oddíly na daném zařízení\n"
+
+#: fdisk/sfdisk.c:2151
+#, c-format
+msgid "%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"
+msgstr ""
+"%s zařízení n1 n2 ... aktivuje diskové oddíly n1 ..., deaktivuje ostatní\n"
+
+#: fdisk/sfdisk.c:2152
+#, c-format
+msgid "%s -An device\t activate partition n, inactivate the other ones\n"
+msgstr "%s -An zařízení\t aktivuje diskové oddíly n ..., deaktivuje ostatní\n"
+
+#: fdisk/sfdisk.c:2271
+msgid "no command?\n"
+msgstr "žádný příkaz?\n"
+
+#: fdisk/sfdisk.c:2394
+#, c-format
+msgid "total: %d blocks\n"
+msgstr "celkový počet bloků: %d\n"
+
+#: fdisk/sfdisk.c:2431
+msgid "usage: sfdisk --print-id device partition-number\n"
+msgstr "Použití: sfdisk --print-id zařízení číslo diskového oddílu\n"
+
+#: fdisk/sfdisk.c:2433
+msgid "usage: sfdisk --change-id device partition-number Id\n"
+msgstr "Použití: sfdisk --change-id zařízení Id diskového oddílu\n"
+
+#: fdisk/sfdisk.c:2435
+msgid "usage: sfdisk --id device partition-number [Id]\n"
+msgstr "Použití: sfdisk --id zařízení číslo diskového oddílu [Id]\n"
+
+#: fdisk/sfdisk.c:2442
+msgid "can specify only one device (except with -l or -s)\n"
+msgstr "můžete zadat pouze jedno zařízení (vyjímkou jsou přepínače -l a -s)\n"
+
+#: fdisk/sfdisk.c:2467
+#, c-format
+msgid "cannot open %s %s\n"
+msgstr "%s %s nelze otevřít\n"
+
+#: fdisk/sfdisk.c:2467
+msgid "read-write"
+msgstr "pro čtení/zápis"
+
+#: fdisk/sfdisk.c:2467
+msgid "for reading"
+msgstr "pro čtení"
+
+#: fdisk/sfdisk.c:2492
+#, c-format
+msgid "%s: OK\n"
+msgstr "%s: OK\n"
+
+#: fdisk/sfdisk.c:2509
+#, c-format
+msgid "%s: %d cylinders, %d heads, %d sectors/track\n"
+msgstr "%s: %d cylindrů, %d hlav, %d sektorů/stopu\n"
+
+#: fdisk/sfdisk.c:2512
+#, c-format
+msgid "%s: unknown geometry\n"
+msgstr "%s: neznámá geometrie\n"
+
+#: fdisk/sfdisk.c:2528
+#, c-format
+msgid "BLKGETSIZE ioctl failed for %s\n"
+msgstr "volání BLKGETSIZE ioctl pro %s selhalo\n"
+
+#: fdisk/sfdisk.c:2605
+#, c-format
+msgid "bad active byte: 0x%x instead of 0x80\n"
+msgstr "chybný aktivní bajt: 0x%x místo 0x80\n"
+
+#: fdisk/sfdisk.c:2622 fdisk/sfdisk.c:2675 fdisk/sfdisk.c:2705
+msgid ""
+"Done\n"
+"\n"
+msgstr ""
+"Hotovo\n"
+"\n"
+
+#: fdisk/sfdisk.c:2631
+#, c-format
+msgid ""
+"You have %d active primary partitions. This does not matter for LILO,\n"
+"but the DOS MBR will only boot a disk with 1 active partition.\n"
+msgstr ""
+"Počet aktivních diskových oddílů je %d. LILU to nečiní problémy, ale DOS "
+"MBR\n"
+"nastartuje pouze z disku s jedním aktivním diskovým oddílem.\n"
+
+#: fdisk/sfdisk.c:2645
+#, c-format
+msgid "partition %s has id %x and is not hidden\n"
+msgstr "diskový oddíl %s má id %x a není skrytý\n"
+
+#: fdisk/sfdisk.c:2701
+#, c-format
+msgid "Bad Id %x\n"
+msgstr "Id %x je chybné\n"
+
+#: fdisk/sfdisk.c:2716
+msgid "This disk is currently in use.\n"
+msgstr "Tento disk je právě používán.\n"
+
+#: fdisk/sfdisk.c:2733
+#, c-format
+msgid "Fatal error: cannot find %s\n"
+msgstr "Fatální chyba: %s nelze nalézt\n"
+
+#: fdisk/sfdisk.c:2736
+#, c-format
+msgid "Warning: %s is not a block device\n"
+msgstr "Varování: %s není blokovým zařízením\n"
+
+#: fdisk/sfdisk.c:2742
+msgid "Checking that no-one is using this disk right now ...\n"
+msgstr "Ověřuji, zda tento disk není právě používán ...\n"
+
+#: fdisk/sfdisk.c:2744
+msgid ""
+"\n"
+"This disk is currently in use - repartitioning is probably a bad idea.Umount "
+"all file systems, and swapoff all swap partitions on this disk.Use the "
+"--no-reread flag to suppress this check.\n"
+msgstr ""
+"\n"
+"Tento disk je právě používán - vytváření diskových oddílů není dobrým "
+"nápadem. Odpojte všechny systémy souborů a pomocí swapoff deaktivujte "
+"všechny odkládací prostory na tomto disku. K potlačení této kontroly můžete "
+"použít přepínač --no-reread.\n"
+
+#: fdisk/sfdisk.c:2748
+msgid "Use the --force flag to overrule all checks.\n"
+msgstr "Použijte přepínač --force k potlačení veškerých kontrol.\n"
+
+#: fdisk/sfdisk.c:2752
+msgid "OK"
+msgstr "OK"
+
+#: fdisk/sfdisk.c:2761
+msgid "Old situation:\n"
+msgstr "Stará situace:\n"
+
+#: fdisk/sfdisk.c:2765
+#, c-format
+msgid "Partition %d does not exist, cannot change it\n"
+msgstr "Diskový oddíl %d neexistuje. Nelze jej změnit.\n"
+
+#: fdisk/sfdisk.c:2773
+msgid "New situation:\n"
+msgstr "Nová situace:\n"
+
+#: fdisk/sfdisk.c:2778
+msgid ""
+"I don't like these partitions - nothing changed.\n"
+"(If you really want this, use the --force option.)\n"
+msgstr ""
+"Toto rozložení diskových oddílů se mi nelíbí - nic neměním.\n"
+"(Pokud jej opravdu chcete použít, pak zadejte přepínač --force.)\n"
+
+#: fdisk/sfdisk.c:2781
+msgid "I don't like this - probably you should answer No\n"
+msgstr "Toto se mi nelíbí - měl byste odpovědět NO\n"
+
+#: fdisk/sfdisk.c:2786
+msgid "Are you satisfied with this? [ynq] "
+msgstr "Vyhovuje Vám to? [ynq] "
+
+#: fdisk/sfdisk.c:2788
+msgid "Do you want to write this to disk? [ynq] "
+msgstr "Uložit na disk? [ynq] "
+
+#: fdisk/sfdisk.c:2793
+msgid ""
+"\n"
+"sfdisk: premature end of input\n"
+msgstr ""
+"\n"
+"sfdisk: předčasný konec vstupu\n"
+
+#: fdisk/sfdisk.c:2795
+msgid "Quitting - nothing changed\n"
+msgstr "Končím - nebyly učiněny žádné změny\n"
+
+#: fdisk/sfdisk.c:2801
+msgid "Please answer one of y,n,q\n"
+msgstr "Odpovězte prosím y,n či q\n"
+
+#: fdisk/sfdisk.c:2809
+msgid ""
+"Successfully wrote the new partition table\n"
+"\n"
+msgstr ""
+"Nová tabulka rozdělení disku byla úspěšně uložena.\n"
+"\n"
+
+#: fdisk/sfdisk.c:2815
+msgid ""
+"If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
+"to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
+"(See fdisk(8).)\n"
+msgstr ""
+"Pokud jste vytvořil či změnil nějaké DOSOVÉ diskové oddíly - např. "
+"/dev/bla7,\n"
+"použijte dd(1) k vynulování prvních 512 bajtů: 'dd if=/dev/zero "
+"of=/dev/bla7\n"
+"bs=512 count=1' (viz fdisk(8)).\n"
+
+#: games/banner.c:1048
+msgid "usage: banner [-w width]\n"
+msgstr "Použití: banner [-w šířka]\n"
+
+#: games/banner.c:1068
+msgid "Message: "
+msgstr "Zpráva: "
+
+#: games/banner.c:1102
+#, c-format
+msgid "The character '%c' is not in my character set"
+msgstr "Znak '%c' není součástí není součástí mé sady znaků."
+
+#: games/banner.c:1110
+#, c-format
+msgid "Message '%s' is OK\n"
+msgstr "Zpráva '%s' je v pořádku\n"
+
+#: getopt-1.0.3b/getopt.c:229
+msgid "Try `getopt --help' for more information.\n"
+msgstr "Více informací získáte příkazem `getopt --help'.\n"
+
+#: getopt-1.0.3b/getopt.c:295
+msgid "empty long option after -l or --long argument"
+msgstr "prázdná dlouhá volba po přepínači -l či --long"
+
+#: getopt-1.0.3b/getopt.c:315
+msgid "unknown shell after -s or --shell argument"
+msgstr "neznámý shell po přepínači -s či --shell"
+
+#: getopt-1.0.3b/getopt.c:320
+msgid "Usage: getopt optstring parameters\n"
+msgstr "Použití: getopt řetězec-s-volbami přepínače\n"
+
+#: getopt-1.0.3b/getopt.c:321
+msgid " getopt [options] [--] optstring parameters\n"
+msgstr " getopt [volby] [--] řetězec-s-volbami přepínače\n"
+
+#: getopt-1.0.3b/getopt.c:322
+msgid " getopt [options] -o|--options optstring [options] [--]\n"
+msgstr " getopt [volby] -o|--options řetězec-s-volbami [volby] [--]\n"
+
+#: getopt-1.0.3b/getopt.c:323
+msgid " parameters\n"
+msgstr " argumenty\n"
+
+#: getopt-1.0.3b/getopt.c:324
+msgid ""
+" -a, --alternative Allow long options starting with single -\n"
+msgstr ""
+" -a, --alternative Akceptuje dlouhé volby začínající jedním -\n"
+
+#: getopt-1.0.3b/getopt.c:325
+msgid " -h, --help This small usage guide\n"
+msgstr " -h, --help Vypíše tuto nápovědu\n"
+
+#: getopt-1.0.3b/getopt.c:326
+msgid " -l, --longoptions=longopts Long options to be recognized\n"
+msgstr " -l, --longoptions=dlouhvol Rozpoznávané dlouhé volby\n"
+
+#: getopt-1.0.3b/getopt.c:327
+msgid ""
+" -n, --name=progname The name under which errors are reported\n"
+msgstr ""
+" -n, --name=jménoprog Jméno, pod kterým jsou oznamovány chyby\n"
+
+#: getopt-1.0.3b/getopt.c:328
+msgid " -o, --options=optstring Short options to be recognized\n"
+msgstr " -o, --options=krátvol Rozpoznávané krátké volby\n"
+
+#: getopt-1.0.3b/getopt.c:329
+msgid " -q, --quiet Disable error reporting by getopt(3)\n"
+msgstr ""
+" -q, --quiet Vypne oznamování chyb pomocí getopt(3)\n"
+
+#: getopt-1.0.3b/getopt.c:330
+msgid " -Q, --quiet-output No normal output\n"
+msgstr " -Q, --quiet-output Žádný normální výstup\n"
+
+#: getopt-1.0.3b/getopt.c:331
+msgid " -s, --shell=shell Set shell quoting conventions\n"
+msgstr " -s, --shell=shell Nastaví konvence uzavíraní\n"
+
+#: getopt-1.0.3b/getopt.c:332
+msgid " -T, --test Test for getopt(1) version\n"
+msgstr " -T, --test Testuje verzi getopt(1)\n"
+
+#: getopt-1.0.3b/getopt.c:333
+msgid " -V, --version Output version information\n"
+msgstr " -V, --version Vypíše informace o verzi\n"
+
+#: getopt-1.0.3b/getopt.c:387 getopt-1.0.3b/getopt.c:445
+msgid "missing optstring argument"
+msgstr "chybí řetězec-s-volbami"
+
+#: getopt-1.0.3b/getopt.c:433
+msgid "getopt (enhanced) 1.0.3\n"
+msgstr "getopt (rozšířené) 1.0.3\n"
+
+#: getopt-1.0.3b/getopt.c:439
+msgid "internal error, contact the author."
+msgstr "Vnitřní chyba, oznamte ji autorovi."
+
+#: login-utils/agetty.c:303
+msgid "calling open_tty\n"
+msgstr "volám open_tty\n"
+
+#. Initialize the termio settings (raw mode, eight-bit, blocking i/o).
+#: login-utils/agetty.c:316
+msgid "calling termio_init\n"
+msgstr "volám termio_init\n"
+
+#: login-utils/agetty.c:321
+msgid "writing init string\n"
+msgstr "zapisuji inicializační řetězec\n"
+
+#. Optionally detect the baud rate from the modem status message.
+#: login-utils/agetty.c:331
+msgid "before autobaud\n"
+msgstr "před autobaud\n"
+
+#: login-utils/agetty.c:343
+msgid "waiting for cr-lf\n"
+msgstr "čekám na cr-lf\n"
+
+#: login-utils/agetty.c:347
+#, c-format
+msgid "read %c\n"
+msgstr "přečteno %c\n"
+
+#. Read the login name.
+#: login-utils/agetty.c:356
+msgid "reading login name\n"
+msgstr "čtu přihlašovací jméno\n"
+
+#: login-utils/agetty.c:377
+#, c-format
+msgid "%s: can't exec %s: %m"
+msgstr "%s: %s nelze spustit: %m"
+
+#: login-utils/agetty.c:397
+msgid "can't malloc initstring"
+msgstr "paměť pro inicializační řetězec nelze alokovat"
+
+#: login-utils/agetty.c:459
+#, c-format
+msgid "bad timeout value: %s"
+msgstr "chybný časový limit: %s"
+
+#: login-utils/agetty.c:468
+msgid "after getopt loop\n"
+msgstr "po zpracování argumentů příkazové řádky\n"
+
+#: login-utils/agetty.c:486
+msgid "exiting parseargs\n"
+msgstr "opouštím funkci parseargs\n"
+
+#: login-utils/agetty.c:499
+msgid "entered parse_speeds\n"
+msgstr "vstupuji do funkce parse_speeds\n"
+
+#: login-utils/agetty.c:502
+#, c-format
+msgid "bad speed: %s"
+msgstr "chybná rychlost %s"
+
+#: login-utils/agetty.c:504
+msgid "too many alternate speeds"
+msgstr "příliš mnoho alternativních rychlostí"
+
+#: login-utils/agetty.c:506
+msgid "exiting parsespeeds\n"
+msgstr "opouštím funkci parsespeeds\n"
+
+#: login-utils/agetty.c:579
+#, c-format
+msgid "%s: open for update: %m"
+msgstr "%s: otevření za účelem aktualizace: %m"
+
+#: login-utils/agetty.c:595
+#, c-format
+msgid "%s: no utmp entry"
+msgstr "žádná utmp položka pro %s"
+
+#: login-utils/agetty.c:624
+#, c-format
+msgid "/dev: chdir() failed: %m"
+msgstr "/dev: volání chdir() selhalo: %m"
+
+#: login-utils/agetty.c:628
+#, c-format
+msgid "/dev/%s: not a character device"
+msgstr "/dev/%s není znakovým zařízením"
+
+#. ignore close(2) errors
+#: login-utils/agetty.c:635
+msgid "open(2)\n"
+msgstr "open(2)\n"
+
+#: login-utils/agetty.c:637
+#, c-format
+msgid "/dev/%s: cannot open as standard input: %m"
+msgstr "/dev/%s nelze otevřít jako standardní vstup: %m"
+
+#: login-utils/agetty.c:647
+#, c-format
+msgid "%s: not open for read/write"
+msgstr "%s: není otevřeno pro čtení/zápis"
+
+#. Set up standard output and standard error file descriptors.
+#: login-utils/agetty.c:651
+msgid "duping\n"
+msgstr "volám dup\n"
+
+#. set up stdout and stderr
+#: login-utils/agetty.c:653
+#, c-format
+msgid "%s: dup problem: %m"
+msgstr "%s: volání dup selhalo: %m"
+
+#: login-utils/agetty.c:723
+msgid "term_io 2\n"
+msgstr "term_io 2\n"
+
+#: login-utils/agetty.c:905
+msgid "user"
+msgstr "uživatel"
+
+#: login-utils/agetty.c:905
+msgid "users"
+msgstr "uživatelé"
+
+#: login-utils/agetty.c:993
+#, c-format
+msgid "%s: read: %m"
+msgstr "%s: přečteno: %m"
+
+#: login-utils/agetty.c:1039
+#, c-format
+msgid "%s: input overrun"
+msgstr "%s: přetečení vstupu"
+
+#: login-utils/agetty.c:1163
+#, c-format
+msgid ""
+"Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] "
+"baud_rate,... line [termtype]\n"
+"or\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line "
+"baud_rate,... [termtype]\n"
+msgstr ""
+"Použití: %s [-hiLmw] [-l login_program] [-t časový limit] [-I inicializační "
+"řetězec] baud_rate,... linka [typ terminálu]\n"
+"či\t[-hiLmw] [-l login_program] [-t časový limit] [-I inicializační řetězec] "
+"linka baud_rate,... [typ terminálu]\n"
+
+#: login-utils/checktty.c:46
+#, c-format
+msgid "badlogin: %s\n"
+msgstr "chybné přihlašovací jméno: %s\n"
+
+# ???
+#: login-utils/checktty.c:52
+#, c-format
+msgid "sleepexit %d\n"
+msgstr "sleepexit %d\n"
+
+#: login-utils/checktty.c:108 login-utils/checktty.c:130
+msgid "login: memory low, login may fail\n"
+msgstr "login: nedostatek paměti, přihlášení se nemusí zdařit\n"
+
+#: login-utils/checktty.c:109
+msgid "can't malloc for ttyclass"
+msgstr "paměť pro ttyclass nelze alokovat"
+
+#: login-utils/checktty.c:131
+msgid "can't malloc for grplist"
+msgstr "paměť pro grplist nelze alokovat"
+
+#. there was a default rule, but user didn't match, reject!
+#: login-utils/checktty.c:431
+#, c-format
+msgid "Login on %s from %s denied by default.\n"
+msgstr "Přihlášení z %2$s na tty %1$s implicitně odmítnuto.\n"
+
+#. if we get here, /etc/usertty exists, there's a line
+#. matching our username, but it doesn't contain the
+#. name of the tty where the user is trying to log in.
+#. So deny access!
+#: login-utils/checktty.c:442
+#, c-format
+msgid "Login on %s from %s denied.\n"
+msgstr "Přihlášení z $2%s na $1%s odmítnuto.\n"
+
+#: login-utils/chfn.c:139 login-utils/chsh.c:118
+#, c-format
+msgid "%s: you (user %d) don't exist.\n"
+msgstr "%s: vy (uživatel %d) neexistujete.\n"
+
+#: login-utils/chfn.c:146 login-utils/chsh.c:125
+#, c-format
+msgid "%s: user \"%s\" does not exist.\n"
+msgstr "%s: uživatel \"%s\" neexistuje.\n"
+
+#: login-utils/chfn.c:151 login-utils/chsh.c:130
+#, c-format
+msgid "%s: can only change local entries; use yp%s instead.\n"
+msgstr "%s: může měnit pouze místní položky; použijte yp%s.\n"
+
+#: login-utils/chfn.c:163
+#, c-format
+msgid "Changing finger information for %s.\n"
+msgstr "Měním finger informace o %s.\n"
+
+#: login-utils/chfn.c:169 login-utils/chfn.c:173 login-utils/chfn.c:180
+#: login-utils/chfn.c:184 login-utils/chsh.c:154 login-utils/chsh.c:158
+#: login-utils/chsh.c:165 login-utils/chsh.c:169
+msgid "Password error."
+msgstr "Chybné heslo."
+
+#: login-utils/chfn.c:193 login-utils/chsh.c:178 login-utils/login.c:689
+#: login-utils/newgrp.c:47 login-utils/simpleinit.c:219 mount/lomount.c:200
+#: mount/lomount.c:206 mount/losetup.c:115 mount/losetup.c:121
+msgid "Password: "
+msgstr "Heslo: "
+
+#: login-utils/chfn.c:196 login-utils/chsh.c:181
+msgid "Incorrect password."
+msgstr "Chybné heslo."
+
+#: login-utils/chfn.c:207
+msgid "Finger information not changed.\n"
+msgstr "Finger informace nebyly změněny.\n"
+
+#: login-utils/chfn.c:310
+#, c-format
+msgid "Usage: %s [ -f full-name ] [ -o office ] "
+msgstr "Použití: %s [ -f plné-jméno ] [ -o kancelář ] "
+
+#: login-utils/chfn.c:311
+msgid ""
+"[ -p office-phone ]\n"
+"\t[ -h home-phone ] "
+msgstr ""
+"[ -p telefon-do-kanceláře ]\n"
+"\t[ -h telefon-domů ] "
+
+#: login-utils/chfn.c:312
+msgid "[ --help ] [ --version ]\n"
+msgstr "[ --help ] [ -- version ]\n"
+
+#: login-utils/chfn.c:381 login-utils/chsh.c:294
+msgid ""
+"\n"
+"Aborted.\n"
+msgstr ""
+"\n"
+"Ukončen.\n"
+
+#: login-utils/chfn.c:414
+msgid "field is too long.\n"
+msgstr "Položka je příliš dlouhá.\n"
+
+#: login-utils/chfn.c:428
+#, c-format
+msgid "'%c' is not allowed.\n"
+msgstr "'%c' není povoleno.\n"
+
+#: login-utils/chfn.c:433
+msgid "Control characters are not allowed.\n"
+msgstr "Kontrolní znaky nejsou povoleny.\n"
+
+#: login-utils/chfn.c:498
+msgid "Finger information *NOT* changed. Try again later.\n"
+msgstr "Finger informace *NEBYLY* změněny. Zkuste to opět později.\n"
+
+#: login-utils/chfn.c:501
+msgid "Finger information changed.\n"
+msgstr "Finger informace byly změněny.\n"
+
+#: login-utils/chfn.c:515 login-utils/chsh.c:412 sys-utils/cytune.c:324
+msgid "malloc failed"
+msgstr "volání malloc selhalo"
+
+#: login-utils/chsh.c:141
+#, c-format
+msgid "%s: Your shell is not in /etc/shells, shell change denied\n"
+msgstr "%s: Váš shell není v /etc/shells, změna shellu odmítnuta\n"
+
+#: login-utils/chsh.c:148
+#, c-format
+msgid "Changing shell for %s.\n"
+msgstr "Měním shell pro %s.\n"
+
+#: login-utils/chsh.c:189
+msgid "New shell"
+msgstr "Nový shell"
+
+#: login-utils/chsh.c:196
+msgid "Shell not changed.\n"
+msgstr "Shell nebyl změněn.\n"
+
+#: login-utils/chsh.c:203
+msgid "Shell *NOT* changed. Try again later.\n"
+msgstr "Shell *NEBYL* změněn. Zkuste to opět později.\n"
+
+#: login-utils/chsh.c:206
+msgid "Shell changed.\n"
+msgstr "Shell byl změněn.\n"
+
+#: login-utils/chsh.c:274
+#, c-format
+msgid "Usage: %s [ -s shell ] "
+msgstr "Použití: %s [ -s shell ] "
+
+#: login-utils/chsh.c:275
+msgid "[ --list-shells ] [ --help ] [ --version ]\n"
+msgstr "[ --list-shells ] [ --help ] [ --version ]\n"
+
+#: login-utils/chsh.c:276
+msgid " [ username ]\n"
+msgstr " [ uživatelské jméno ]\n"
+
+#: login-utils/chsh.c:320
+#, c-format
+msgid "%s: shell must be a full path name.\n"
+msgstr "%s: shell musí být zadán úplným jménem cesty.\n"
+
+#: login-utils/chsh.c:324
+#, c-format
+msgid "%s: \"%s\" does not exist.\n"
+msgstr "%s: \"%s\" neexistuje.\n"
+
+#: login-utils/chsh.c:328
+#, c-format
+msgid "%s: \"%s\" is not executable.\n"
+msgstr "%s: \"%s\" není spustitelným souborem.\n"
+
+#: login-utils/chsh.c:335
+#, c-format
+msgid "%s: '%c' is not allowed.\n"
+msgstr "%s: '%c' není povoleno.\n"
+
+#: login-utils/chsh.c:339
+#, c-format
+msgid "%s: Control characters are not allowed.\n"
+msgstr "%s: Kontrolní znaky nejsou povoleny.\n"
+
+#: login-utils/chsh.c:346
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells\n"
+msgstr "Varování: \"%s\" není v /etc/shells\n"
+
+#: login-utils/chsh.c:348
+#, c-format
+msgid "%s: \"%s\" is not listed in /etc/shells.\n"
+msgstr "%s: \"%s\" není v /etc/shells.\n"
+
+#: login-utils/chsh.c:350
+#, c-format
+msgid "%s: use -l option to see list\n"
+msgstr "%s: použijte přepínač -l pro vypsání seznamu\n"
+
+#: login-utils/chsh.c:356
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells.\n"
+msgstr "Varování: \"%s\" není v /etc/shells.\n"
+
+#: login-utils/chsh.c:357
+#, c-format
+msgid "Use %s -l to see list.\n"
+msgstr "Použijte %s -l pro vypsání seznamu\n"
+
+#: login-utils/chsh.c:378
+msgid "No known shells.\n"
+msgstr "Není znám žádný shell.\n"
+
+#: login-utils/cryptocard.c:70
+msgid "couldn't open /dev/urandom"
+msgstr "/dev/urandom nelze otevřít"
+
+#: login-utils/cryptocard.c:75
+msgid "couldn't read random data from /dev/urandom"
+msgstr "náhodná data z /dev/urandom nelze číst"
+
+#: login-utils/cryptocard.c:98
+#, c-format
+msgid "can't open %s for reading"
+msgstr "%s pro čtení nelze otevřít"
+
+#: login-utils/cryptocard.c:102
+#, c-format
+msgid "can't stat(%s)"
+msgstr "volání stat(%s) selhalo"
+
+#: login-utils/cryptocard.c:108
+#, c-format
+msgid "%s doesn't have the correct filemodes"
+msgstr "%s má chybná přístupová práva"
+
+#: login-utils/cryptocard.c:113
+#, c-format
+msgid "can't read data from %s"
+msgstr "data z %s nelze číst"
+
+#: login-utils/islocal.c:36
+#, c-format
+msgid "Can't read %s, exiting."
+msgstr "%s nelze číst, končím."
+
+#: login-utils/last.c:143
+msgid "usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n"
+msgstr ""
+"Použití: last [-#] [-f soubor] [-t tty] [-h jméno počítače]\n"
+" [uživatel ...]\n"
+
+#: login-utils/last.c:283
+msgid " still logged in"
+msgstr " stále přihlášen"
+
+#: login-utils/last.c:305
+#, c-format
+msgid ""
+"\n"
+"wtmp begins %s"
+msgstr ""
+"\n"
+"wtmp začíná %s"
+
+#: login-utils/last.c:367 login-utils/last.c:387 login-utils/last.c:442
+msgid "last: malloc failure.\n"
+msgstr "last: volání malloc selhalo.\n"
+
+#: login-utils/last.c:416
+msgid "last: gethostname"
+msgstr "last: gethostname"
+
+#: login-utils/last.c:469
+#, c-format
+msgid ""
+"\n"
+"interrupted %10.10s %5.5s \n"
+msgstr ""
+"\n"
+"přerušen %10.10s %5.5s \n"
+
+#: login-utils/login.c:384
+msgid "login: -h for super-user only.\n"
+msgstr "login: přepínač -h může použít pouze superuživatel\n"
+
+#: login-utils/login.c:409
+msgid "usage: login [-fp] [username]\n"
+msgstr "Použití: login [fp] [uživatelské jméno]\n"
+
+#: login-utils/login.c:511
+#, c-format
+msgid "login: PAM Failure, aborting: %s\n"
+msgstr "login: chyba PAM, končím: %s\n"
+
+#: login-utils/login.c:513
+#, c-format
+msgid "Couldn't initialize PAM: %s"
+msgstr "PAM nelze inicializovat: %s"
+
+#: login-utils/login.c:553
+#, c-format
+msgid "FAILED LOGIN %d FROM %s FOR %s, %s"
+msgstr "%1$d. CHYBNÉ PŘIHLÁŠENÍ UŽIVATELE %3$s Z %2$s, %4$s"
+
+#: login-utils/login.c:556
+msgid ""
+"Login incorrect\n"
+"\n"
+msgstr ""
+"Chybné přihlášení\n"
+"\n"
+
+#: login-utils/login.c:565
+#, c-format
+msgid "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s"
+msgstr "PŘÍLI|S MNOHO (%1$d) POKUSŮ UŽIVATELE %3$s O PŘIHLÁŠENÍ Z %2$s, %4$s"
+
+#: login-utils/login.c:570
+#, c-format
+msgid "FAILED LOGIN SESSION FROM %s FOR %s, %s"
+msgstr "NEÚSPĚŠNÉ PŘIHLÁŠENÍ UŽIVATELE %2$s Z %1$s, %3$s"
+
+#: login-utils/login.c:575
+msgid ""
+"\n"
+"Login incorrect\n"
+msgstr ""
+"\n"
+"Chybné přihlášení\n"
+
+#: login-utils/login.c:624
+msgid "Illegal username"
+msgstr "Chybné uživatelské jméno"
+
+#: login-utils/login.c:667
+#, c-format
+msgid "%s login refused on this terminal.\n"
+msgstr "přihlášení uživatele %s na tomto terminálu odmítnuto\n"
+
+#: login-utils/login.c:672
+#, c-format
+msgid "LOGIN %s REFUSED FROM %s ON TTY %s"
+msgstr "PŘIHLÁŠENÍ UŽIVATELE %s Z %s NA TTY %s ODMÍTNUTO"
+
+#: login-utils/login.c:676
+#, c-format
+msgid "LOGIN %s REFUSED ON TTY %s"
+msgstr "PŘIHLÁŠENÍ UŽIVATELE %s NA TTY %s ODMÍTNUTO"
+
+#: login-utils/login.c:728
+msgid "Login incorrect\n"
+msgstr "Chybné přihlášení\n"
+
+#: login-utils/login.c:750
+msgid ""
+"Too many users logged on already.\n"
+"Try again later.\n"
+msgstr ""
+"Již je přihlášeno příliš mnoho uživatelů.\n"
+"Zkuste to opět později.\n"
+
+#: login-utils/login.c:754
+msgid "You have too many processes running.\n"
+msgstr "Máte spuštěno příliš mnoho procesů.\n"
+
+#: login-utils/login.c:800
+msgid "Warning: no Kerberos tickets issued\n"
+msgstr "Varování: žádné Kerberos lístky\n"
+
+#: login-utils/login.c:812
+msgid "Sorry -- your password has expired.\n"
+msgstr "Lituji -- platnost Vašeho hesla vypršela.\n"
+
+#: login-utils/login.c:818
+#, c-format
+msgid "Warning: your password expires on %s %d, %d\n"
+msgstr "Varování: platnost Vašeho hesla vyprší %s %d, %d\n"
+
+#: login-utils/login.c:826
+msgid "Sorry -- your account has expired.\n"
+msgstr "Lituji -- platnost Vašeho účtu vypršela.\n"
+
+#: login-utils/login.c:832
+#, c-format
+msgid "Warning: your account expires on %s %d, %d\n"
+msgstr "Varování: platnost Vašeho účtu vyprší %s %d, %d\n"
+
+#: login-utils/login.c:1066
+#, c-format
+msgid "DIALUP AT %s BY %s"
+msgstr "PŘÍSTUP UŽIVATELE %2$s VYTÁČENOU LINKOU NA TTY %1$s"
+
+#: login-utils/login.c:1073
+#, c-format
+msgid "ROOT LOGIN ON %s FROM %s"
+msgstr "PŘIHLÁŠENÍ UŽIVATELE ROOT Z %2$s NA TTY %1$s"
+
+#: login-utils/login.c:1076
+#, c-format
+msgid "ROOT LOGIN ON %s"
+msgstr "PŘIHLÁŠENÍ UŽIVATELE ROOT NA TTY %s"
+
+#: login-utils/login.c:1079
+#, c-format
+msgid "LOGIN ON %s BY %s FROM %s"
+msgstr "PŘIHLÁŠENÍ UŽIVATELE %2$s Z %3$s NA TTY %1$s"
+
+#: login-utils/login.c:1082
+#, c-format
+msgid "LOGIN ON %s BY %s"
+msgstr "PŘIHLÁŠENÍ UŽIVATELE %2$s NA TTY %1$s"
+
+#: login-utils/login.c:1093
+#, c-format
+msgid "You have %smail.\n"
+msgstr "Máte %spoštu.\n"
+
+#: login-utils/login.c:1094
+msgid "new "
+msgstr "novou "
+
+#. error in fork()
+#: login-utils/login.c:1112
+#, c-format
+msgid "login: failure forking: %s"
+msgstr "login: volání fork selhalo: %s"
+
+#: login-utils/login.c:1127
+msgid "setuid() failed"
+msgstr "volání setuid() selhalo"
+
+#: login-utils/login.c:1133
+#, c-format
+msgid "No directory %s!\n"
+msgstr "Adresář %s neexistuje!\n"
+
+#: login-utils/login.c:1137
+msgid "Logging in with home = \"/\".\n"
+msgstr "Přihlašuji s domácím adresářem nastaveným na \"/\".\n"
+
+#: login-utils/login.c:1145
+msgid "login: no memory for shell script.\n"
+msgstr "login: nedostatek paměti pro skript shellu.\n"
+
+#: login-utils/login.c:1173
+#, c-format
+msgid "login: couldn't exec shell script: %s.\n"
+msgstr "login: skript shellu %s nelze spustit.\n"
+
+#: login-utils/login.c:1176
+#, c-format
+msgid "login: no shell: %s.\n"
+msgstr "login: žádný shell: %s.\n"
+
+#: login-utils/login.c:1192
+#, c-format
+msgid ""
+"\n"
+"%s login: "
+msgstr ""
+"\n"
+"Přihlašovací jméno na %s: "
+
+#: login-utils/login.c:1203
+msgid "login name much too long.\n"
+msgstr "přihlašovací jméno je příliš dlouhé.\n"
+
+#: login-utils/login.c:1204
+msgid "NAME too long"
+msgstr "JMÉNO je příliš dlouhé"
+
+#: login-utils/login.c:1211
+msgid "login names may not start with '-'.\n"
+msgstr "přihlašovací jméno nesmí začínat '-'.\n"
+
+#: login-utils/login.c:1221
+msgid "too many bare linefeeds.\n"
+msgstr "příliš mnoho znaků LF\n"
+
+#: login-utils/login.c:1222
+msgid "EXCESSIVE linefeeds"
+msgstr "PŘÍLIŠ mnoho znaků LF"
+
+#: login-utils/login.c:1233
+#, c-format
+msgid "Login timed out after %d seconds\n"
+msgstr "Vypršel časový limit (%d vteřin) pro přihlášení.\n"
+
+#: login-utils/login.c:1333
+#, c-format
+msgid "Last login: %.*s "
+msgstr "Poslední přihlášení: %.*s "
+
+#: login-utils/login.c:1337
+#, c-format
+msgid "from %.*s\n"
+msgstr "z %.*s\n"
+
+#: login-utils/login.c:1340
+#, c-format
+msgid "on %.*s\n"
+msgstr "%.*s\n"
+
+#: login-utils/login.c:1363
+#, c-format
+msgid "LOGIN FAILURE FROM %s, %s"
+msgstr "CHYBNÉ PŘIHLÁŠENÍ UŽIVATELE %2$s Z %1$s"
+
+#: login-utils/login.c:1366
+#, c-format
+msgid "LOGIN FAILURE ON %s, %s"
+msgstr "CHYBNÉ PŘIHLÁŠENÍ UŽIVATELE %2$s NA TTY %1$s"
+
+#: login-utils/login.c:1370
+#, c-format
+msgid "%d LOGIN FAILURES FROM %s, %s"
+msgstr "POČET CHYBNÝCH PŘIHLÁŠENÍ UŽIVATELE %3$s Z %2$s: %1$d"
+
+#: login-utils/login.c:1373
+#, c-format
+msgid "%d LOGIN FAILURES ON %s, %s"
+msgstr "POČET CHYBNÝCH PŘIHLÁŠENÍ UŽIVATELE %3$s NA TTY %2$s: %1$d"
+
+#: login-utils/mesg.c:89
+msgid "is y\n"
+msgstr "příjem zpráv je zapnut\n"
+
+#: login-utils/mesg.c:92
+msgid "is n\n"
+msgstr "příjem zpráv je vypnut\n"
+
+#: login-utils/mesg.c:112
+msgid "usage: mesg [y | n]\n"
+msgstr "Použití: mesg [y | n]\n"
+
+#: login-utils/newgrp.c:67
+msgid "newgrp: Who are you?"
+msgstr "newgrp: Kdo jste?"
+
+#: login-utils/newgrp.c:75 login-utils/newgrp.c:85
+msgid "newgrp: setgid"
+msgstr "newgrp: setgid"
+
+#: login-utils/newgrp.c:80
+msgid "newgrp: No such group."
+msgstr "newgrp: Žádná taková skupina neexistuje."
+
+#: login-utils/newgrp.c:89
+msgid "newgrp: Permission denied"
+msgstr "newgrp: Přístup odmítnut"
+
+#: login-utils/newgrp.c:96
+msgid "newgrp: setuid"
+msgstr "newgrp: setuid"
+
+#: login-utils/newgrp.c:102
+msgid "No shell"
+msgstr "Žádný shell"
+
+#: login-utils/passwd.c:163
+msgid "The password must have at least 6 characters, try again.\n"
+msgstr "Heslo musí obsahovat alespoň 6 znaků, zkuste to znovu.\n"
+
+#: login-utils/passwd.c:176
+msgid "The password must contain characters out of two of the following\n"
+msgstr "Heslo musí obsahovat znaky alespoň ze dvou z následující skupin:\n"
+
+#: login-utils/passwd.c:177
+msgid "classes: upper and lower case letters, digits and non alphanumeric\n"
+msgstr "velká nebo malá písmena, číslice a nealfanumerické znaky.\n"
+
+#: login-utils/passwd.c:178
+msgid "characters. See passwd(1) for more information.\n"
+msgstr "Viz passwd(1) pro více informací.\n"
+
+#: login-utils/passwd.c:183
+msgid "You cannot reuse the old password.\n"
+msgstr "Nemůžete opět použít staré heslo.\n"
+
+#: login-utils/passwd.c:188
+msgid "Please don't use something like your username as password!\n"
+msgstr ""
+"Nepoužívejte, jako heslo Vaše uživatelské jméno ani nic něco podobného.\n"
+
+#: login-utils/passwd.c:199 login-utils/passwd.c:206
+msgid "Please don't use something like your realname as password!\n"
+msgstr "Nepoužívejte, jako heslo Vaše skutečné jméno ani nic něco podobného.\n"
+
+#: login-utils/passwd.c:223
+msgid "Usage: passwd [username [password]]\n"
+msgstr "Použití: password [uživatelské jméno [heslo]]\n"
+
+#: login-utils/passwd.c:224
+msgid "Only root may use the one and two argument forms.\n"
+msgstr "Pouze superuživatel může použít argumenty.\n"
+
+#: login-utils/passwd.c:280
+msgid "Usage: passwd [-foqsvV] [user [password]]\n"
+msgstr "Použití: passwd [foqsvV] [uživatel [heslo]]\n"
+
+#: login-utils/passwd.c:301
+#, c-format
+msgid "Can't exec %s: %s\n"
+msgstr "%s nelze spustit: %s\n"
+
+#: login-utils/passwd.c:312
+msgid "Cannot find login name"
+msgstr "Přihlašovací jméno nelze nalézt"
+
+#: login-utils/passwd.c:319 login-utils/passwd.c:326
+msgid "Only root can change the password for others.\n"
+msgstr "Pouze superuživatel může změnit hesla jiným uživatelům.\n"
+
+#: login-utils/passwd.c:334
+msgid "Too many arguments.\n"
+msgstr "Příliš mnoho argumentů.\n"
+
+#: login-utils/passwd.c:339
+#, c-format
+msgid "Can't find username anywhere. Is `%s' really a user?"
+msgstr "Uživatelské jméno nelze nalézt. Je `%s' opravdu uživatelem?"
+
+#: login-utils/passwd.c:343
+msgid "Sorry, I can only change local passwords. Use yppasswd instead."
+msgstr "Lituji, ale mohu změnit pouze místní hesla. Použijte yppasswd."
+
+#: login-utils/passwd.c:349
+msgid "UID and username does not match, imposter!"
+msgstr "UID a uživatelské jméno se neshodují!"
+
+#: login-utils/passwd.c:354
+#, c-format
+msgid "Changing password for %s\n"
+msgstr "Měním heslo uživatele %s\n"
+
+#: login-utils/passwd.c:358
+msgid "Enter old password: "
+msgstr "Zadejte staré heslo: "
+
+#: login-utils/passwd.c:360
+msgid "Illegal password, imposter."
+msgstr "Nepovolené heslo."
+
+#: login-utils/passwd.c:372
+msgid "Enter new password: "
+msgstr "Zadejte nové heslo: "
+
+#: login-utils/passwd.c:374
+msgid "Password not changed."
+msgstr "Heslo nebylo změněno."
+
+#: login-utils/passwd.c:384
+msgid "Re-type new password: "
+msgstr "Potvrďte nové heslo: "
+
+#: login-utils/passwd.c:387
+msgid "You misspelled it. Password not changed."
+msgstr "Přepsal jste se. Heslo nebylo změněno."
+
+#: login-utils/passwd.c:402
+#, c-format
+msgid "password changed, user %s"
+msgstr "heslo bylo změněno, uživatel %s"
+
+#: login-utils/passwd.c:405
+msgid "ROOT PASSWORD CHANGED"
+msgstr "HESLO UŽIVATELE ROOT BYLO ZMĚNĚNO"
+
+#: login-utils/passwd.c:407
+#, c-format
+msgid "password changed by root, user %s"
+msgstr "heslo změněno uživatelem root, uživatel %s"
+
+#: login-utils/passwd.c:414
+msgid "calling setpwnam to set password.\n"
+msgstr "Volám setpwnam pro nastavení hesla.\n"
+
+#: login-utils/passwd.c:418
+msgid "Password *NOT* changed. Try again later.\n"
+msgstr "Heslo *NEBYLO* změněno. Zkuste to později.\n"
+
+#: login-utils/passwd.c:424
+msgid "Password changed.\n"
+msgstr "Heslo bylo změněno.\n"
+
+#: login-utils/shutdown.c:85
+msgid "Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n"
+msgstr "Použití: shutdown [-h|-r] [-fqs] [now|hh:ss|+minuty]\n"
+
+#: login-utils/shutdown.c:103
+msgid "Shutdown process aborted"
+msgstr "Proces shutdown ukončen"
+
+#: login-utils/shutdown.c:125
+#, c-format
+msgid "%s: Only root can shut a system down.\n"
+msgstr "%s: Pouze superuživatel může vypnout systém.\n"
+
+#: login-utils/shutdown.c:219
+msgid "That must be tomorrow, can't you wait till then?\n"
+msgstr "To bude zítra. To do té doby nemůžete počkat?\n"
+
+#: login-utils/shutdown.c:271
+msgid "for maintenance; bounce, bounce"
+msgstr "kvůli údržbě"
+
+#: login-utils/shutdown.c:275
+#, c-format
+msgid "timeout = %d, quiet = %d, reboot = %d\n"
+msgstr "časový limit = %d, klid = %d, restart = %d\n"
+
+#: login-utils/shutdown.c:300
+msgid "The system is being shut down within 5 minutes"
+msgstr "Systém bude za 5 minut vypnut"
+
+#: login-utils/shutdown.c:304
+msgid "Login is therefore prohibited."
+msgstr "Přihlašování je tudíž zakázáno."
+
+#: login-utils/shutdown.c:325
+#, c-format
+msgid "%s by %s: %s"
+msgstr "%s uživatelem %s: %s"
+
+#: login-utils/shutdown.c:326
+msgid "rebooted"
+msgstr "restartován"
+
+#: login-utils/shutdown.c:326
+msgid "halted"
+msgstr "vypnut"
+
+#. RB_AUTOBOOT
+#: login-utils/shutdown.c:377
+msgid ""
+"\n"
+"Why am I still alive after reboot?"
+msgstr ""
+"\n"
+"Proč jsem po restartu stále naživu?"
+
+#: login-utils/shutdown.c:379
+msgid ""
+"\n"
+"Now you can turn off the power..."
+msgstr ""
+"\n"
+"Nyní můžete vypnout proud..."
+
+#: login-utils/shutdown.c:394
+msgid "Calling kernel power-off facility...\n"
+msgstr "Volám zařízení jádra pro vypínání proudu...\n"
+
+#: login-utils/shutdown.c:397
+#, c-format
+msgid "Error powering off\t%s\n"
+msgstr "Chyba při vypínání proudu\t%s\n"
+
+#: login-utils/shutdown.c:405
+#, c-format
+msgid "Executing the program \"%s\" ...\n"
+msgstr "Spouštím program \"%s\" ...\n"
+
+#: login-utils/shutdown.c:408
+#, c-format
+msgid "Error executing\t%s\n"
+msgstr "Chyba při spuštění\t%s\n"
+
+#: login-utils/shutdown.c:431
+#, c-format
+msgid "URGENT: broadcast message from %s:"
+msgstr "NALÉHAVÉ: všeobecná zpráva od %s:"
+
+#: login-utils/shutdown.c:437
+msgid "System going down IMMEDIATELY!\n"
+msgstr "Systém bude OKAMŽITĚ vypnut!\n"
+
+#: login-utils/shutdown.c:440
+#, c-format
+msgid "System going down in %d hour%s %d minutes"
+msgstr "Systém bude vypnut za %dh%s%dmin"
+
+#: login-utils/shutdown.c:441 login-utils/shutdown.c:444
+msgid "s"
+msgstr " "
+
+#: login-utils/shutdown.c:443
+#, c-format
+msgid "System going down in %d minute%s\n"
+msgstr "Systém bude vypnut za %dmin%s\n"
+
+#: login-utils/shutdown.c:449
+#, c-format
+msgid "\t... %s ...\n"
+msgstr "\t... %s ...\n"
+
+#: login-utils/shutdown.c:506
+msgid "Cannot fork for swapoff. Shrug!"
+msgstr "Swapoff nelze spustit - volání fork selhalo."
+
+#: login-utils/shutdown.c:514
+msgid "Cannot exec swapoff, hoping umount will do the trick."
+msgstr "Swapoff nelze spustit - volání exec selhalo. Snad pomůže umount."
+
+#: login-utils/shutdown.c:533
+msgid "Cannot fork for umount, trying manually."
+msgstr "Umount nelze spustit - volání fork selhalo, zkouším to ručně."
+
+#: login-utils/shutdown.c:542
+#, c-format
+msgid "Cannot exec %s, trying umount.\n"
+msgstr "%s nelze spustit - volání exec selhalo, zkouším umount.\n"
+
+#: login-utils/shutdown.c:546
+msgid "Cannot exec umount, giving up on umount."
+msgstr ""
+"Umount nelze spustit - volání exec selhalo, vzdávám snahu o spuštění umount."
+
+#: login-utils/shutdown.c:551
+msgid "Unmounting any remaining filesystems..."
+msgstr "Odpojuji všechny zbývající systémy souborů..."
+
+#: login-utils/shutdown.c:587
+#, c-format
+msgid "shutdown: Couldn't umount %s\n"
+msgstr "shutdown: %s nelze odpojit\n"
+
+#: login-utils/simpleinit.c:79
+msgid "Booting to single user mode.\n"
+msgstr "Startuji do režimu pro jednoho uživatele.\n"
+
+#: login-utils/simpleinit.c:83
+msgid "exec of single user shell failed\n"
+msgstr ""
+"Spuštění shellu pro jednoho uživatele se nezdařilo - volání exec selhalo.\n"
+
+#: login-utils/simpleinit.c:87
+msgid "fork of single user shell failed\n"
+msgstr ""
+"Spuštění shellu pro jednoho uživatele se nezdařilo - volání fork selhalo.\n"
+
+#: login-utils/simpleinit.c:226
+msgid ""
+"\n"
+"Wrong password.\n"
+msgstr ""
+"\n"
+"Chybné heslo.\n"
+
+#: login-utils/simpleinit.c:252
+msgid "exec rc failed\n"
+msgstr "spuštění rc se nezdařilo - volání exec selhalo\n"
+
+#: login-utils/simpleinit.c:255
+msgid "open of rc file failed\n"
+msgstr "rc soubor nelze otevřít\n"
+
+#: login-utils/simpleinit.c:261
+msgid "fork of rc shell failed\n"
+msgstr "spuštění rc se nezdařilo - volání fork selhalo\n"
+
+#: login-utils/simpleinit.c:273
+msgid "fork failed\n"
+msgstr "volání fork selhalo\n"
+
+#: login-utils/simpleinit.c:302 text-utils/more.c:1548
+msgid "exec failed\n"
+msgstr "volání exec selhalo\n"
+
+#: login-utils/simpleinit.c:324
+msgid "cannot open inittab\n"
+msgstr "inittab nelze otevřít\n"
+
+#: login-utils/simpleinit.c:362
+msgid "no TERM or cannot stat tty\n"
+msgstr "žádný TERM nebo selhalo volání stat pro tty\n"
+
+#: login-utils/ttymsg.c:81
+msgid "too many iov's (change code in wall/ttymsg.c)"
+msgstr "příliš mnoho iov (změňte kód v wall/ttymsg.c)"
+
+#: login-utils/ttymsg.c:91
+msgid "excessively long line arg"
+msgstr "příliš dlouhý řádek s argumenty"
+
+#: login-utils/ttymsg.c:145
+msgid "cannot fork"
+msgstr "volání fork selhalo"
+
+#: login-utils/ttymsg.c:149
+#, c-format
+msgid "fork: %s"
+msgstr "fork: %s"
+
+#: login-utils/ttymsg.c:177
+#, c-format
+msgid "%s: BAD ERROR"
+msgstr "%s: ZÁVAŽNÁ CHYBA"
+
+#: login-utils/vipw.c:149
+#, c-format
+msgid "%s: the %s file is busy.\n"
+msgstr "%s: soubor %s je již používán.\n"
+
+#: login-utils/vipw.c:165
+#, c-format
+msgid "%s: the %s file is busy (%s present)\n"
+msgstr "%s: %s soubor je již používán (nalezen %s)\n"
+
+#: login-utils/vipw.c:171
+#, c-format
+msgid "%s: can't link %s: %s\n"
+msgstr "%s: volání link pro %s selhalo: %s\n"
+
+#: login-utils/vipw.c:193
+#, c-format
+msgid "%s: can't unlock %s: %s (your changes are still in %s)\n"
+msgstr "%s: %s nelze odemknout: %s (Vaše změny jsou stále v %s)\n"
+
+#: login-utils/vipw.c:217
+#, c-format
+msgid "%s: Cannot fork\n"
+msgstr "%s: volání fork selhalo\n"
+
+#: login-utils/vipw.c:257
+#, c-format
+msgid "%s: %s unchanged\n"
+msgstr "%s: %s nezměněno\n"
+
+#: login-utils/vipw.c:300
+#, c-format
+msgid "%s: no changes made\n"
+msgstr "%s: žádné změny\n"
+
+#: login-utils/wall.c:106
+#, c-format
+msgid "usage: %s [file]\n"
+msgstr "Použití: %s [soubor]\n"
+
+#: login-utils/wall.c:154
+#, c-format
+msgid "%s: can't open temporary file.\n"
+msgstr "%s: dočasný soubor nelze otevřít.\n"
+
+#: login-utils/wall.c:181
+#, c-format
+msgid "Broadcast Message from %s@%s"
+msgstr "Všeobecná zpráva od %s@%s"
+
+#: login-utils/wall.c:191
+#, c-format
+msgid "%s: can't read %s.\n"
+msgstr "%s: %s nelze číst.\n"
+
+#: login-utils/wall.c:216
+#, c-format
+msgid "%s: can't stat temporary file.\n"
+msgstr "%s: volání stat pro dočasný soubor selhalo.\n"
+
+#: login-utils/wall.c:225
+#, c-format
+msgid "%s: can't read temporary file.\n"
+msgstr "%s: dočasný soubor nelze číst.\n"
+
+#: misc-utils/cal.c:184
+msgid "illegal month value: use 1-12"
+msgstr "chybná hodnota pro měsíc: použijte 1-12"
+
+#: misc-utils/cal.c:188
+msgid "illegal year value: use 1-9999"
+msgstr "chybná hodnota pro rok: použijte 1-9999"
+
+#: misc-utils/cal.c:484
+msgid "usage: cal [-mjy] [[month] year]\n"
+msgstr "Použití: cal [mjy] [[měsíc] rok]\n"
+
+#: misc-utils/ddate.c:184
+#, c-format
+msgid "usage: %s [+format] [day month year]\n"
+msgstr "Použití: %s [+formát] [den měsíc rok]\n"
+
+# ???
+#. handle St. Tib's Day
+#: misc-utils/ddate.c:230
+msgid "St. Tib's Day"
+msgstr "Den svatého Tiba"
+
+#: misc-utils/kill.c:199
+#, c-format
+msgid "%s: unknown signal %s\n"
+msgstr "%s: neznámý signál %s\n"
+
+#: misc-utils/kill.c:261
+#, c-format
+msgid "%s: can't find process \"%s\"\n"
+msgstr "%s: proces \"%s\" nelze nalézt\n"
+
+#: misc-utils/kill.c:303
+#, c-format
+msgid "%s: unknown signal %s; valid signals:\n"
+msgstr "%s: neznámý signál %s; platné signály:\n"
+
+#: misc-utils/kill.c:343
+#, c-format
+msgid "usage: %s [ -s signal | -p ] [ -a ] pid ...\n"
+msgstr "Použití: %s [ -s signál | -p ] [ -a ] pid ...\n"
+
+#: misc-utils/kill.c:344
+#, c-format
+msgid " %s -l [ signal ]\n"
+msgstr " %s -l [ signál ]\n"
+
+#: misc-utils/logger.c:144
+#, c-format
+msgid "logger: %s: %s.\n"
+msgstr "logger: %s: %s.\n"
+
+# 'facility'? lépe asi jako zařízení, zle to by se pletlo s 'device'
+#: misc-utils/logger.c:241
+#, c-format
+msgid "logger: unknown facility name: %s.\n"
+msgstr "logger: neznámé příslušenství: %s\n"
+
+#: misc-utils/logger.c:253
+#, c-format
+msgid "logger: unknown priority name: %s.\n"
+msgstr "logger: neznámé jméno priority: %s\n"
+
+#: misc-utils/logger.c:280
+msgid ""
+"usage: logger [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n"
+msgstr ""
+"Použití: logger [-is] [-f soubor] [-p pri] [-t značka] [-u soket] [ zpráva "
+"... ]\n"
+
+#: misc-utils/look.c:170 misc-utils/setterm.c:1153 text-utils/more.c:1862
+#: text-utils/more.c:1873
+msgid "Out of memory"
+msgstr "Nedostatek paměti"
+
+#: misc-utils/look.c:340
+msgid "usage: look [-dfa] [-t char] string [file]\n"
+msgstr "Použití: look [-dfa] [-t znak] řetězec [soubor]\n"
+
+#: misc-utils/mcookie.c:122 misc-utils/mcookie.c:149
+#, c-format
+msgid "Could not open %s\n"
+msgstr "%s nelze nalézt\n"
+
+#: misc-utils/mcookie.c:126 misc-utils/mcookie.c:145
+#, c-format
+msgid "Got %d bytes from %s\n"
+msgstr "%db z %s\n"
+
+#: misc-utils/namei.c:107
+#, c-format
+msgid "namei: unable to get current directory - %s\n"
+msgstr "namei: aktuální adresář nelze zjistit - %s\n"
+
+#: misc-utils/namei.c:118
+#, c-format
+msgid "namei: unable to chdir to %s - %s (%d)\n"
+msgstr "namei: do adresáře %s nelze přejít - %s (%d)\n"
+
+#: misc-utils/namei.c:128
+msgid "usage: namei [-mx] pathname [pathname ...]\n"
+msgstr "Použití: namei [mx] jméno cesty [jméno cesty ...]\n"
+
+#: misc-utils/namei.c:157
+msgid "namei: could not chdir to root!\n"
+msgstr "namei: do adresáře root nelze přejít!\n"
+
+#: misc-utils/namei.c:164
+msgid "namei: could not stat root!\n"
+msgstr "namei: volání stat pro adresář root selhalo!\n"
+
+#: misc-utils/namei.c:219
+#, c-format
+msgid " ? could not chdir into %s - %s (%d)\n"
+msgstr " ? do adresáře %s nelze přejít - %s (%d)\n"
+
+#: misc-utils/namei.c:248
+#, c-format
+msgid " ? problems reading symlink %s - %s (%d)\n"
+msgstr " ? problémy při čtení symbolického odkazu %s - %s (%d)\n"
+
+#: misc-utils/namei.c:258
+msgid " *** EXCEEDED UNIX LIMIT OF SYMLINKS ***"
+msgstr " *** PŘEKROČEN UNIXOVÝ LIMIT PRO SYMBOLICKÉ ODKAZY ***"
+
+#: misc-utils/namei.c:294
+#, c-format
+msgid "namei: unknown file type 0%06o on file %s\n"
+msgstr "namei: typ 0%06o souboru %s je neznámý\n"
+
+#: misc-utils/script.c:108
+msgid "usage: script [-a] [file]\n"
+msgstr "Použití: script [-a] [soubor]\n"
+
+#: misc-utils/script.c:128
+#, c-format
+msgid "Script started, file is %s\n"
+msgstr "Script spuštěn. Soubor je %s.\n"
+
+#: misc-utils/script.c:197
+#, c-format
+msgid "Script started on %s"
+msgstr "Script spuštěn %s"
+
+#: misc-utils/script.c:263
+#, c-format
+msgid ""
+"\n"
+"Script done on %s"
+msgstr ""
+"\n"
+"Script ukončen %s"
+
+#: misc-utils/script.c:268
+#, c-format
+msgid "Script done, file is %s\n"
+msgstr "Script utils. Soubor je %s\n"
+
+#: misc-utils/script.c:280
+msgid "openpty failed\n"
+msgstr "volání openpty selhalo\n"
+
+#: misc-utils/script.c:314
+msgid "Out of pty's\n"
+msgstr "Nejsou žádná další volná pty\n"
+
+#. Print error message about arguments, and the command's syntax.
+#: misc-utils/setterm.c:745
+#, c-format
+msgid "%s: Argument error, usage\n"
+msgstr "%s: Chybný přepínač, použití\n"
+
+#: misc-utils/setterm.c:748
+msgid " [ -term terminal_name ]\n"
+msgstr " [ -term jméno terminálu]\n"
+
+#: misc-utils/setterm.c:749
+msgid " [ -reset ]\n"
+msgstr " [ -reset ]\n"
+
+#: misc-utils/setterm.c:750
+msgid " [ -initialize ]\n"
+msgstr " [ -initialize ]\n"
+
+#: misc-utils/setterm.c:751
+msgid " [ -cursor [on|off] ]\n"
+msgstr " [ -cursor [on|off] ]\n"
+
+#: misc-utils/setterm.c:753
+msgid " [ -snow [on|off] ]\n"
+msgstr " [ -snow [on|off] ]\n"
+
+#: misc-utils/setterm.c:754
+msgid " [ -softscroll [on|off] ]\n"
+msgstr " [ -softscroll [on|off] ]\n"
+
+#: misc-utils/setterm.c:755
+msgid " [ -keyboard pc|olivetti|dutch|extended ]\n"
+msgstr " [ -keyboard pc|olivetti|dutch|extended ]\n"
+
+#: misc-utils/setterm.c:757
+msgid " [ -repeat [on|off] ]\n"
+msgstr " [ -repeat [on|off] ]\n"
+
+#: misc-utils/setterm.c:758
+msgid " [ -appcursorkeys [on|off] ]\n"
+msgstr " [ -appcursorkeys [on|off] ]\n"
+
+#: misc-utils/setterm.c:759
+msgid " [ -linewrap [on|off] ]\n"
+msgstr " [ -linewrap [on|off] ]\n"
+
+#: misc-utils/setterm.c:760
+msgid " [ -default ]\n"
+msgstr " [ -default ]\n"
+
+#: misc-utils/setterm.c:761
+msgid " [ -foreground black|blue|green|cyan"
+msgstr " [ -foreground black|blue|green|cyan"
+
+#: misc-utils/setterm.c:762 misc-utils/setterm.c:764
+msgid "|red|magenta|yellow|white|default ]\n"
+msgstr "|red|magenta|yellow|white|default ]\n"
+
+#: misc-utils/setterm.c:763
+msgid " [ -background black|blue|green|cyan"
+msgstr " [ -background black|blue|green|cyan"
+
+#: misc-utils/setterm.c:765
+msgid " [ -ulcolor black|grey|blue|green|cyan"
+msgstr " [ -ulcolor black|grey|blue|green|cyan"
+
+#: misc-utils/setterm.c:766 misc-utils/setterm.c:768 misc-utils/setterm.c:770
+#: misc-utils/setterm.c:772
+msgid "|red|magenta|yellow|white ]\n"
+msgstr "|red|magenta|yellow|white ]\n"
+
+#: misc-utils/setterm.c:767
+msgid " [ -ulcolor bright blue|green|cyan"
+msgstr " [ -ulcolor bright blue|green|cyan"
+
+#: misc-utils/setterm.c:769
+msgid " [ -hbcolor black|grey|blue|green|cyan"
+msgstr " [ -hbcolor black|grey|blue|green|cyan"
+
+#: misc-utils/setterm.c:771
+msgid " [ -hbcolor bright blue|green|cyan"
+msgstr " [ -hbcolor bright blue|green|cyan"
+
+#: misc-utils/setterm.c:774
+msgid " [ -standout [ attr ] ]\n"
+msgstr " [ -standout [ atribut ] ]\n"
+
+#: misc-utils/setterm.c:776
+msgid " [ -inversescreen [on|off] ]\n"
+msgstr " [ -inversescreen [on|off] ]\n"
+
+#: misc-utils/setterm.c:777
+msgid " [ -bold [on|off] ]\n"
+msgstr " [ -bold [on|off] ]\n"
+
+#: misc-utils/setterm.c:778
+msgid " [ -half-bright [on|off] ]\n"
+msgstr " [ -half-bright [on|off] ]\n"
+
+#: misc-utils/setterm.c:779
+msgid " [ -blink [on|off] ]\n"
+msgstr " [ -blink [on|off] ]\n"
+
+#: misc-utils/setterm.c:780
+msgid " [ -reverse [on|off] ]\n"
+msgstr " [ -reverse [on|off] ]\n"
+
+#: misc-utils/setterm.c:781
+msgid " [ -underline [on|off] ]\n"
+msgstr " [ -underline [on|off] ]\n"
+
+#: misc-utils/setterm.c:782
+msgid " [ -store ]\n"
+msgstr " [ -store ]\n"
+
+#: misc-utils/setterm.c:783
+msgid " [ -clear [all|rest] ]\n"
+msgstr " [ -clear [all|rest] ]\n"
+
+#: misc-utils/setterm.c:784
+msgid " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+
+#: misc-utils/setterm.c:785
+msgid " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+
+#: misc-utils/setterm.c:786
+msgid " [ -regtabs [1-160] ]\n"
+msgstr " [ -regtabs [1-160] ]\n"
+
+#: misc-utils/setterm.c:787
+msgid " [ -blank [0-60] ]\n"
+msgstr " [ -blank [0-60] ]\n"
+
+#: misc-utils/setterm.c:788
+msgid " [ -dump [1-NR_CONSOLES] ]\n"
+msgstr " [ -dump [1-NR_CONSOLES] ]\n"
+
+#: misc-utils/setterm.c:789
+msgid " [ -append [1-NR_CONSOLES] ]\n"
+msgstr " [ -append [1-NR_CONSOLES] ]\n"
+
+#: misc-utils/setterm.c:790
+msgid " [ -file dumpfilename ]\n"
+msgstr " [ -file soubor pro uložení ]\n"
+
+#: misc-utils/setterm.c:791
+msgid " [ -msg [on|off] ]\n"
+msgstr " [ -msg [on|off] ]\n"
+
+#: misc-utils/setterm.c:792
+msgid " [ -msglevel [0-8] ]\n"
+msgstr " [ -msglevel [0-8] ]\n"
+
+#: misc-utils/setterm.c:793
+msgid " [ -powersave [on|vsync|hsync|powerdown|off] ]\n"
+msgstr " [ -powersave [on|vsync|hsync|powerdown|off] ]\n"
+
+#: misc-utils/setterm.c:794
+msgid " [ -powerdown [0-60] ]\n"
+msgstr " [ -powerdown [0-60] ]\n"
+
+#: misc-utils/setterm.c:795
+msgid " [ -blength [0-2000] ]\n"
+msgstr " [ -blength [0-2000] ]\n"
+
+#: misc-utils/setterm.c:796
+msgid " [ -bfreq freqnumber ]\n"
+msgstr " [ -bfreq frekvence ]\n"
+
+#: misc-utils/setterm.c:841
+msgid "keyboard.pc"
+msgstr "keyboard.pc"
+
+#: misc-utils/setterm.c:844
+msgid "keyboard.olivetti"
+msgstr "keyboard.olivetti"
+
+#: misc-utils/setterm.c:847
+msgid "keyboard.dutch"
+msgstr "keyboard.dutch"
+
+#: misc-utils/setterm.c:850
+msgid "keyboard.extended"
+msgstr "keyboard.extended"
+
+#: misc-utils/setterm.c:884
+msgid "snow.on"
+msgstr "sněžení zapnuto"
+
+#: misc-utils/setterm.c:886
+msgid "snow.off"
+msgstr "sněžení vypnuto"
+
+#: misc-utils/setterm.c:892
+msgid "softscroll.on"
+msgstr "softwarové rolování zapnuto"
+
+#: misc-utils/setterm.c:894
+msgid "softscroll.off"
+msgstr "softwarové rolování vypnuto"
+
+#: misc-utils/setterm.c:1069
+msgid "cannot (un)set powersave mode\n"
+msgstr "šetřící režim nelze vypnout/zapnout\n"
+
+#: misc-utils/setterm.c:1108 misc-utils/setterm.c:1116
+#, c-format
+msgid "klogctl error: %s\n"
+msgstr "chyba klogctl: %s\n"
+
+#: misc-utils/setterm.c:1157
+#, c-format
+msgid "Error reading %s\n"
+msgstr "Chyba při čtení %s\n"
+
+#: misc-utils/setterm.c:1172
+msgid "Error writing screendump\n"
+msgstr "Chyba při ukládání obrazu obrazovky\n"
+
+#: misc-utils/setterm.c:1186
+#, c-format
+msgid "couldn't read %s, and cannot ioctl dump\n"
+msgstr "nelze číst %s a nelze provést dump pomocí volání ioctl\n"
+
+#: misc-utils/setterm.c:1251
+#, c-format
+msgid "%s: $TERM is not defined.\n"
+msgstr "%s: proměnná TERM není nastavena.\n"
+
+#: misc-utils/tsort.c:119
+msgid "usage: tsort [ inputfile ]\n"
+msgstr "Použití: tsort [ soubor ]\n"
+
+#: misc-utils/tsort.c:156
+msgid "tsort: odd data count.\n"
+msgstr "tsort: lichý počet uzlů\n"
+
+#: misc-utils/tsort.c:321
+msgid "tsort: cycle in data.\n"
+msgstr "tsort: smyčka v datech.\n"
+
+#: misc-utils/tsort.c:334
+msgid "tsort: internal error -- could not find cycle.\n"
+msgstr "tsort: vnitřní chyba -- smyčku nelze najít.\n"
+
+#: misc-utils/whereis.c:158
+msgid "whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n"
+msgstr "whereis [ -sbmu ] [ -SBM adresář ... -f ] jméno...\n"
+
+#: misc-utils/write.c:99
+msgid "write: can't find your tty's name\n"
+msgstr "write: jméno Vašeho tty nelze zjistit\n"
+
+#: misc-utils/write.c:110
+msgid "write: you have write permission turned off.\n"
+msgstr "write: máte vypnut příjem zpráv.\n"
+
+#: misc-utils/write.c:131
+#, c-format
+msgid "write: %s is not logged in on %s.\n"
+msgstr "write: uživatel %s není na %s přihlášen.\n"
+
+#: misc-utils/write.c:139
+#, c-format
+msgid "write: %s has messages disabled on %s\n"
+msgstr "write: uživatel %s má na %s vypnut příjem zpráv\n"
+
+#: misc-utils/write.c:146
+msgid "usage: write user [tty]\n"
+msgstr "Použití: write uživatel [tty]\n"
+
+#: misc-utils/write.c:245
+#, c-format
+msgid "write: %s is not logged in\n"
+msgstr "write: uživatel %s není přihlášen\n"
+
+#: misc-utils/write.c:254
+#, c-format
+msgid "write: %s has messages disabled\n"
+msgstr "write: uživatel %s má vypnut příjem zpráv\n"
+
+#: misc-utils/write.c:258
+#, c-format
+msgid "write: %s is logged in more than once; writing to %s\n"
+msgstr "writing: uživatel %s je přihlášen vícekrát; píši na %s\n"
+
+#: misc-utils/write.c:325
+#, c-format
+msgid "Message from %s@%s on %s at %s ..."
+msgstr "Zpráva od %s@%s na %s v %s ..."
+
+#: mount/fstab.c:116
+#, c-format
+msgid "warning: error reading %s: %s"
+msgstr "varování: chyba při čtení %s: %s"
+
+#: mount/fstab.c:143 mount/fstab.c:166
+#, c-format
+msgid "warning: can't open %s: %s"
+msgstr "varování: %s nelze otevřít: %s"
+
+#: mount/fstab.c:147
+#, c-format
+msgid "mount: could not open %s - using %s instead\n"
+msgstr "mount: %s nelze otevřít - používám %s\n"
+
+#. linktargetfile does not exist (as a file)
+#. and we cannot create it. Read-only filesystem?
+#. Too many files open in the system? Filesystem full?
+#: mount/fstab.c:358
+#, c-format
+msgid "can't create lock file %s: %s (use -n flag to override)"
+msgstr ""
+"zamykací soubor %s nelze vytvořit: %s\n"
+"(použijte přepínač -n pro vynechání zápisu do mtab)"
+
+#: mount/fstab.c:370
+#, c-format
+msgid "can't link lock file %s: %s (use -n flag to override)"
+msgstr ""
+"volání link pro zamykací soubor %s selhalo: %s\n"
+"(použijte přepínač -n pro vynechání zápisu do mtab)"
+
+#: mount/fstab.c:382
+#, c-format
+msgid "can't open lock file %s: %s (use -n flag to override)"
+msgstr ""
+"zamykací soubor %s nelze otevřít: %s\n"
+"(použijte přepínač -n pro vynechání zápisu do mtab)"
+
+#: mount/fstab.c:397
+#, c-format
+msgid "Can't lock lock file %s: %s\n"
+msgstr "Zamykací soubor %s nelze zamknout: %s\n"
+
+#: mount/fstab.c:408
+#, c-format
+msgid "can't lock lock file %s: %s"
+msgstr "Zamykací soubor %s nelze zamknout: %s"
+
+#: mount/fstab.c:410
+msgid "timed out"
+msgstr "vypršel čas"
+
+#: mount/fstab.c:455 mount/fstab.c:463
+#, c-format
+msgid "cannot open %s (%s) - mtab not updated"
+msgstr "nelze otevřít %s (%s) - mtab nebyl aktualizován"
+
+#: mount/fstab.c:488
+msgid "mount: warning: cannot change mounted device with a remount\n"
+msgstr "mount: varování: pomocí nelze remount změnit připojené zařízení\n"
+
+#: mount/fstab.c:493
+msgid "mount: warning: cannot change filesystem type with a remount\n"
+msgstr "mount: varování: pomocí nelze remount změnit typ systému souborů\n"
+
+#: mount/fstab.c:501 mount/fstab.c:507
+#, c-format
+msgid "error writing %s: %s"
+msgstr "chyba při zápisu %s: %s"
+
+#: mount/fstab.c:514
+#, c-format
+msgid "error changing mode of %s: %s\n"
+msgstr "chyba při změně módu %s: %s\n"
+
+#: mount/fstab.c:521
+#, c-format
+msgid "can't rename %s to %s: %s\n"
+msgstr "%s nelze přejmenovat na %s: %s\n"
+
+#: mount/lomount.c:78
+#, c-format
+msgid "loop: can't open device %s: %s\n"
+msgstr "loop: zařízení %s nelze otevřít: %s\n"
+
+#: mount/lomount.c:84
+#, c-format
+msgid "loop: can't get info on device %s: %s\n"
+msgstr "loop: informace o zařízení %s nelze získat: %s\n"
+
+#: mount/lomount.c:89 mount/losetup.c:74
+#, c-format
+msgid "%s: [%04x]:%ld (%s) offset %d, %s encryption\n"
+msgstr "%s: [%04x]:%ld (%s) posun %d, %s šifra\n"
+
+#: mount/lomount.c:143
+msgid "mount: could not find any device /dev/loop#"
+msgstr "mount: žádné zařízení /dev/loop# nelze nalézt"
+
+#: mount/lomount.c:147
+msgid ""
+"mount: Could not find any loop device.\n"
+" Maybe /dev/loop# has a wrong major number?"
+msgstr ""
+"mount: žádné loop zařízení nelze nalézt.\n"
+" Nemá /dev/loop# chybné větší číslo zařízení?"
+
+#: mount/lomount.c:151
+#, c-format
+msgid ""
+"mount: Could not find any loop device, and, according to %s,\n"
+" this kernel does not know about the loop device.\n"
+" (If so, then recompile or `insmod loop.o'.)"
+msgstr ""
+"mount: Žádné loop zařízení nelze nalézt a dle %s toto jádro\n"
+" nezná loop zařízení. Pokud je tomu tak, pak jej znovu přeložte,\n"
+" či zkuste `insmod loop.o'."
+
+#: mount/lomount.c:156
+msgid ""
+"mount: Could not find any loop device. Maybe this kernel does not know\n"
+" about the loop device (then recompile or `insmod loop.o'), or\n"
+" maybe /dev/loop# has the wrong major number?"
+msgstr ""
+"mount: Žádné loop zařízení nelze nalézt. Možná toto jádro nezná loop "
+"zařízení\n"
+" (pak jej znovu přeložte, či zkuste `insmod loop.o'), či /dev/loop# "
+"má\n"
+" chybné větší číslo?"
+
+#: mount/lomount.c:160
+msgid "mount: could not find any free loop device"
+msgstr "mount: žádné volné loop zařízení nelze najít"
+
+#: mount/lomount.c:191 mount/losetup.c:106
+#, c-format
+msgid "Unsupported encryption type %s\n"
+msgstr "Nepodporovaný šifrovací typ %s\n"
+
+#: mount/lomount.c:210 mount/losetup.c:125
+msgid "Init (up to 16 hex digits): "
+msgstr "Init (až 16 šestnáctkových číslic): "
+
+#: mount/lomount.c:217 mount/losetup.c:132
+#, c-format
+msgid "Non-hex digit '%c'.\n"
+msgstr "Nešestnáctková číslice '%c'.\n"
+
+#: mount/lomount.c:223 mount/losetup.c:138
+#, c-format
+msgid "Don't know how to get key for encryption system %d\n"
+msgstr "Nevím jak získat klíč pro šifrovací systém %d\n"
+
+#: mount/lomount.c:239
+#, c-format
+msgid "set_loop(%s,%s,%d): success\n"
+msgstr "set_loop(%s,%s,%d): úspěch\n"
+
+#: mount/lomount.c:250
+#, c-format
+msgid "loop: can't delete device %s: %s\n"
+msgstr "loop: zařízení %s nelze smazat: %s\n"
+
+#: mount/lomount.c:260
+#, c-format
+msgid "del_loop(%s): success\n"
+msgstr "del_loop(%s): úspěch\n"
+
+#: mount/lomount.c:268
+msgid "This mount was compiled without loop support. Please recompile.\n"
+msgstr "Tento program byl přeložen bez podpory pro loop. Přeložte jej znovu.\n"
+
+#: mount/losetup.c:70
+msgid "Cannot get loop info"
+msgstr "Informace o loop nelze získat"
+
+#: mount/losetup.c:174
+#, c-format
+msgid ""
+"usage:\n"
+" %s loop_device # give info\n"
+" %s -d loop_device # delete\n"
+" %s [ -e encryption ] [ -o offset ] loop_device file # setup\n"
+msgstr ""
+"Použití:\n"
+" %s loop zařízení # vypíše informace\n"
+" %s -d loop zařízení # smaže\n"
+" %s [ -e šifra ] [ -o posun ] loop zařízení soubor # nastaví\n"
+
+#: mount/losetup.c:231
+msgid "No loop support was available at compile time. Please recompile.\n"
+msgstr "Podpora pro loop nebyla při překladu zadána. Přeložte program znovu.\n"
+
+#: mount/mntent.c:165
+#, c-format
+msgid "[mntent]: warning: no final newline at the end of %s\n"
+msgstr "[mntent]: varování: %s není ukončeno novou řádkou\n"
+
+#: mount/mntent.c:216
+#, c-format
+msgid "[mntent]: line %d in %s is bad%s\n"
+msgstr "[mntent]: řádek %d v %s je chybný%s\n"
+
+#: mount/mntent.c:219
+msgid "; rest of file ignored"
+msgstr "; ignoruji zbytek souboru"
+
+#: mount/mount.c:323
+#, c-format
+msgid "mount: according to mtab, %s is already mounted on %s"
+msgstr "mount: podle mtab je %s již připojeno na %s"
+
+#: mount/mount.c:326
+#, c-format
+msgid "mount: according to mtab, %s is mounted on %s"
+msgstr "mount: podle mtab je %s připojeno na %s"
+
+#: mount/mount.c:347
+#, c-format
+msgid "mount: can't open %s for writing: %s"
+msgstr "mount: %s nelze otevřít pro zápis: %s"
+
+#: mount/mount.c:362 mount/mount.c:611
+#, c-format
+msgid "mount: error writing %s: %s"
+msgstr "mount: chyba při zápisu %s: %s"
+
+#: mount/mount.c:369
+#, c-format
+msgid "mount: error changing mode of %s: %s"
+msgstr "mount: chyba při změně módu %s: %s"
+
+#: mount/mount.c:443
+msgid "mount failed"
+msgstr "připojení se nezdařilo"
+
+#: mount/mount.c:445
+#, c-format
+msgid "mount: only root can mount %s on %s"
+msgstr "mount: pouze superuživatel může připojit %s na %s"
+
+#: mount/mount.c:470
+msgid "mount: loop device specified twice"
+msgstr "mount: zařízení loop bylo zadáno dvakrát"
+
+#: mount/mount.c:476
+msgid "mount: type specified twice"
+msgstr "mount: typ byl zadán dvakrát"
+
+#: mount/mount.c:488
+msgid "mount: skipping the setup of a loop device\n"
+msgstr "mount: přeskakuji nastavení loop zařízení\n"
+
+#: mount/mount.c:497
+#, c-format
+msgid "mount: going to use the loop device %s\n"
+msgstr "mount: chystám se použít zařízení loop %s\n"
+
+#: mount/mount.c:501
+msgid "mount: failed setting up loop device\n"
+msgstr "mount: nepodařilo se nastavit zařízení loop\n"
+
+#: mount/mount.c:505
+msgid "mount: setup loop device successfully\n"
+msgstr "mount: zařízení loop bylo korektně nastaveno\n"
+
+#: mount/mount.c:518
+msgid "mount: this version was compiled without support for the type `nfs'"
+msgstr "mount: tato verze byla přeložena bez podpory pro typ `nfs'"
+
+#: mount/mount.c:568 mount/mount.c:993
+#, c-format
+msgid "mount: cannot fork: %s"
+msgstr "mount: volání fork selhalo: %s"
+
+#: mount/mount.c:606
+#, c-format
+msgid "mount: can't open %s: %s"
+msgstr "mount: %s nelze otevřít: %s"
+
+#: mount/mount.c:634
+msgid "mount: you must specify the filesystem type"
+msgstr "mount: musíte zadat typ systému souborů"
+
+#: mount/mount.c:641 mount/mount.c:676
+#, c-format
+msgid "mount: mount point %s is not a directory"
+msgstr "mount: přípojný bod %s není adresářem"
+
+#: mount/mount.c:643
+msgid "mount: permission denied"
+msgstr "mount: přístup odmítnut"
+
+#: mount/mount.c:645
+msgid "mount: must be superuser to use mount"
+msgstr "mount: mount může používat pouze superuživatel"
+
+#. heuristic: if /proc/version exists, then probably proc is mounted
+#. proc mounted?
+#: mount/mount.c:649 mount/mount.c:653
+#, c-format
+msgid "mount: %s is busy"
+msgstr "mount: %s je již připojeno"
+
+#. no
+#. yes, don't mention it
+#: mount/mount.c:655
+msgid "mount: proc already mounted"
+msgstr "mount: proc je již připojeno"
+
+#: mount/mount.c:657
+#, c-format
+msgid "mount: %s already mounted or %s busy"
+msgstr "mount: %s je již připojeno, či je %s již používáno"
+
+#: mount/mount.c:663
+#, c-format
+msgid "mount: mount point %s does not exist"
+msgstr "mount: přípojný bod %s neexistuje"
+
+#: mount/mount.c:665
+#, c-format
+msgid "mount: mount point %s is a symbolic link to nowhere"
+msgstr "mount: přípojný bod %s je symbolickým odkazem, jenž nikam neukazuje"
+
+#: mount/mount.c:668
+#, c-format
+msgid "mount: special device %s does not exist"
+msgstr "mount: speciální zařízení %s neexistuje"
+
+#: mount/mount.c:678
+#, c-format
+msgid ""
+"mount: special device %s does not exist\n"
+" (a path prefix is not a directory)\n"
+msgstr ""
+"mount: speciální zařízení %s neexistuje\n"
+" (název cesty nezačíná adresářem)\n"
+
+#: mount/mount.c:690
+#, c-format
+msgid "mount: %s not mounted already, or bad option"
+msgstr "mount: %s ještě není připojeno či chybný přepínač"
+
+#: mount/mount.c:692
+#, c-format
+msgid ""
+"mount: wrong fs type, bad option, bad superblock on %s,\n"
+" or too many mounted file systems"
+msgstr ""
+"mount: chybný typ ss, chybný přepínač, chybný superblok na %s\n"
+" nebo příliš mnoho připojených systémů souborů"
+
+#: mount/mount.c:707
+msgid "mount table full"
+msgstr "tabulka připojení je plná"
+
+#: mount/mount.c:709
+#, c-format
+msgid "mount: %s: can't read superblock"
+msgstr "mount: %s: superblok nelze přečíst"
+
+#: mount/mount.c:712
+#, c-format
+msgid "mount: %s has wrong major or minor number"
+msgstr "mount: %s má chybné větší či menší číslo zařízení"
+
+#: mount/mount.c:717
+#, c-format
+msgid "mount: fs type %s not supported by kernel"
+msgstr "mount: typ ss %s není podporován jádrem"
+
+#: mount/mount.c:729
+#, c-format
+msgid "mount: probably you meant %s"
+msgstr "mount: pravděpodobně jste myslel %s"
+
+#: mount/mount.c:731
+msgid "mount: maybe you meant iso9660 ?"
+msgstr "mount: možná jste myslel iso9660 ?"
+
+#: mount/mount.c:734
+#, c-format
+msgid "mount: %s has wrong device number or fs type %s not supported"
+msgstr "mount: %s má chybné číslo zařízení, či ss typ %s není podporován"
+
+#. strange ...
+#: mount/mount.c:739
+#, c-format
+msgid "mount: %s is not a block device, and stat fails?"
+msgstr "mount: %s není blokovým zařízením a volání stat selhalo?"
+
+#: mount/mount.c:741
+#, c-format
+msgid ""
+"mount: the kernel does not recognize %s as a block device\n"
+" (maybe `insmod driver'?)"
+msgstr ""
+"mount: jádro nerozpoznalo %s jako blokové zařízení (možná `insmod ovladač'?)"
+
+#: mount/mount.c:744
+#, c-format
+msgid "mount: %s is not a block device (maybe try `-o loop'?)"
+msgstr "mount: %s není blokovým zařízením (možná pomůže `-o loop'?)"
+
+#: mount/mount.c:747
+#, c-format
+msgid "mount: %s is not a block device"
+msgstr "mount: %s není blokovým zařízením"
+
+#: mount/mount.c:750
+#, c-format
+msgid "mount: %s is not a valid block device"
+msgstr "mount: %s není platným blokovým zařízením"
+
+#: mount/mount.c:754
+#, c-format
+msgid "mount: block device %s is not permitted on its filesystem"
+msgstr "mount: blokové zařízení %s není na tomto systému souborů povoleno"
+
+#: mount/mount.c:770
+#, c-format
+msgid "mount: %s%s is write-protected, mounting read-only"
+msgstr "mount: %s%s je chráněno proti zápisu, připojuji pouze pro čtení"
+
+#: mount/mount.c:771
+msgid "block device "
+msgstr "blokové zařízení"
+
+#: mount/mount.c:857
+#, c-format
+msgid "mount: consider mounting %s by %s\n"
+msgstr "mount: zvažte připojení %s dle %s\n"
+
+#: mount/mount.c:858
+msgid "UUID"
+msgstr "UUID"
+
+#: mount/mount.c:858
+msgid "label"
+msgstr "jméno"
+
+#: mount/mount.c:860 mount/mount.c:1176
+msgid "mount: no such partition found"
+msgstr "mount: žádný odpovídající diskový oddíl nebyl nalezen"
+
+#: mount/mount.c:868
+msgid "mount: no type was given - I'll assume nfs because of the colon\n"
+msgstr "mount: nebyl zadán typ - budu používat nfs kvůli dvojtečce\n"
+
+#.
+#. * Retry in the background.
+#.
+#: mount/mount.c:884
+#, c-format
+msgid "mount: backgrounding \"%s\"\n"
+msgstr "mount: pracuji na pozadí \"%s\"\n"
+
+#: mount/mount.c:895
+#, c-format
+msgid "mount: giving up \"%s\"\n"
+msgstr "mount: končím \"%s\"\n"
+
+#: mount/mount.c:944
+#, c-format
+msgid "mount: %s already mounted on %s\n"
+msgstr "mount: %s je již připojeno na %s\n"
+
+#: mount/mount.c:1055
+msgid ""
+"Usage: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-t vfstypes]\n"
+" mount [-nfrsvw] [-o options] special | node\n"
+" mount [-nfrsvw] [-t vfstype] [-o options] special node\n"
+" A special device can be indicated by -L label or -U uuid .\n"
+msgstr ""
+"Použití: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-tvfstypy]\n"
+" mount [-nfrsvw] [-o volby] speciální soubor | uzel\n"
+" mount [-nfrsvw] [-t vfstyp] [-o volby] speciální soubor uzel\n"
+" Speciální zařízení může být označeno pomocí -L popiska či -U uuid.\n"
+
+#: mount/mount.c:1161
+msgid "mount: only root can do that"
+msgstr "mount: toto může provést pouze superuživatel"
+
+#: mount/mount.c:1166
+#, c-format
+msgid "mount: no %s found - creating it..\n"
+msgstr "mount: %s nebylo nalezeno - vytvářím jej..\n"
+
+#: mount/mount.c:1178
+#, c-format
+msgid "mount: mounting %s\n"
+msgstr "mount: připojuji %s\n"
+
+#: mount/mount.c:1187
+msgid "not mounted anything"
+msgstr "nic nebylo připojeno"
+
+#: mount/mount.c:1200
+#, c-format
+msgid "mount: cannot find %s in %s"
+msgstr "mount: %s nelze v %s nalézt"
+
+#: mount/mount.c:1214
+#, c-format
+msgid "mount: can't find %s in %s or %s"
+msgstr "mount: %s nelze nalézt v %s ani %s"
+
+#: mount/mount_by_label.c:141
+msgid "mount: bad UUID"
+msgstr "mount: chybné UUID"
+
+#: mount/mount_guess_fstype.c:187
+#, c-format
+msgid "mount: you didn't specify a filesystem type for %s\n"
+msgstr "mount: nezadal jste typ systému souborů pro %s\n"
+
+#: mount/mount_guess_fstype.c:190
+#, c-format
+msgid " I will try type %s\n"
+msgstr " Vyzkouším typ %s\n"
+
+#: mount/mount_guess_fstype.c:192
+#, c-format
+msgid " I will try all types mentioned in %s or %s\n"
+msgstr " Vyzkouším všechny typy v %s či %s\n"
+
+#: mount/nfsmount.c:157
+msgid "mount: excessively long host:dir argument\n"
+msgstr "mount: příliš dlouhý argument pro počítač:adresář\n"
+
+#: mount/nfsmount.c:170
+msgid "mount: warning: multiple hostnames not supported\n"
+msgstr "mount: varování: vícenásobná jména počítačů nejsou podporována\n"
+
+#: mount/nfsmount.c:174
+msgid "mount: directory to mount not in host:dir format\n"
+msgstr "mount: adresář pro připojení není ve tvaru počítač:adresář\n"
+
+#: mount/nfsmount.c:185 mount/nfsmount.c:420
+#, c-format
+msgid "mount: can't get address for %s\n"
+msgstr "mount: adresu %s nelze zjistit\n"
+
+#: mount/nfsmount.c:191
+msgid "mount: got bad hp->h_length\n"
+msgstr "mount: špatné hp->h_length\n"
+
+#: mount/nfsmount.c:208
+msgid "mount: excessively long option argument\n"
+msgstr "mount: příliš dlouhý argument pro volbu\n"
+
+#: mount/nfsmount.c:299
+msgid "Warning: Unrecognized proto= option.\n"
+msgstr "Varování: neznámá volba pro proto=.\n"
+
+#: mount/nfsmount.c:306
+msgid "Warning: Option namlen is not supported.\n"
+msgstr "Varování: volba namlen není podporována.\n"
+
+#: mount/nfsmount.c:310
+#, c-format
+msgid "unknown nfs mount parameter: %s=%d\n"
+msgstr "parametr %s=%d pro připojení nfs není znám\n"
+
+#: mount/nfsmount.c:345
+msgid "Warning: option nolock is not supported.\n"
+msgstr "Varování: volba nolock není podporována.\n"
+
+#: mount/nfsmount.c:348
+#, c-format
+msgid "unknown nfs mount option: %s%s\n"
+msgstr "volba %s%s pro připojení nfs je neznámá\n"
+
+#: mount/nfsmount.c:426
+msgid "mount: got bad hp->h_length?\n"
+msgstr "mount: špatné hp->h_length?\n"
+
+#: mount/nfsmount.c:528
+#, c-format
+msgid "mount: %s:%s failed, reason given by server: %s\n"
+msgstr "mount: %s:%s selhalo; příčina udaná serverem: %s\n"
+
+#: mount/nfsmount.c:539
+msgid "NFS over TCP is not supported.\n"
+msgstr "NFS přes TCP není podporováno.\n"
+
+#: mount/nfsmount.c:546
+msgid "nfs socket"
+msgstr "nfs soket"
+
+#: mount/nfsmount.c:550
+msgid "nfs bindresvport"
+msgstr "nfs bindresvport"
+
+#: mount/nfsmount.c:561
+msgid "used portmapper to find NFS port\n"
+msgstr "pro nalezení NFS portu jsem použil portmapper\n"
+
+#: mount/nfsmount.c:565
+#, c-format
+msgid "using port %d for nfs deamon\n"
+msgstr "používám port %d pro nfs server\n"
+
+#: mount/nfsmount.c:576
+msgid "nfs connect"
+msgstr "nfs connect"
+
+#: mount/nfsmount.c:665
+#, c-format
+msgid "unknown nfs status return value: %d"
+msgstr "návratová hodnota nfs status %d je neznámá"
+
+#: mount/sundries.c:40 mount/sundries.c:55
+msgid "not enough memory"
+msgstr "Nedostatek paměti"
+
+#: mount/sundries.c:65
+msgid "bug in xstrndup call"
+msgstr "chyba ve volání xstrndup"
+
+#: mount/swapon.c:51
+#, c-format
+msgid ""
+"usage: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p priority] special ...\n"
+" %s [-s]\n"
+msgstr ""
+"Použití: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p priorita] zvláštní soubor ...\n"
+" %s [-s]\n"
+
+#: mount/swapon.c:88
+#, c-format
+msgid "%s on %s\n"
+msgstr "%s na %s\n"
+
+#: mount/swapon.c:93
+#, c-format
+msgid "swapon: cannot stat %s: %s\n"
+msgstr "swapon: volání stat pro %s selhalo: %s\n"
+
+#: mount/swapon.c:100
+#, c-format
+msgid "swapon: warning: %s has insecure permissions %04o, 0600 suggested\n"
+msgstr ""
+"swapon: varování: přístupová práva pro %s (%04o) nejsou bezpečná, použijte "
+"0600\n"
+
+#: mount/swapon.c:108
+#, c-format
+msgid "swapon: Skipping file %s - it appears to have holes.\n"
+msgstr "swapon: soubor %s vynechávám - zdá se, že v něm jsou díry.\n"
+
+#: mount/swapon.c:213
+#, c-format
+msgid "%s: cannot open %s: %s\n"
+msgstr "%s: %s nelze otevřít: %s\n"
+
+#: mount/umount.c:65
+msgid "umount: compiled without support for -f\n"
+msgstr "umount byl přeložen bez podpory pro -f\n"
+
+#: mount/umount.c:115
+#, c-format
+msgid "host: %s, directory: %s\n"
+msgstr "počítač: %s, adresář: %s\n"
+
+#: mount/umount.c:132
+#, c-format
+msgid "umount: can't get address for %s\n"
+msgstr "umount: adresu %s nelze zjistit\n"
+
+#: mount/umount.c:137
+msgid "umount: got bad hostp->h_length\n"
+msgstr "umount: chybná hodnota hostp->h_length\n"
+
+#: mount/umount.c:175
+#, c-format
+msgid "umount: %s: invalid block device"
+msgstr "umount: blokové zařízení %s je chybné"
+
+#: mount/umount.c:177
+#, c-format
+msgid "umount: %s: not mounted"
+msgstr "umount: %s není připojeno"
+
+#: mount/umount.c:179
+#, c-format
+msgid "umount: %s: can't write superblock"
+msgstr "umount: superblok nelze na %s zapsat"
+
+#. Let us hope fstab has a line "proc /proc ..."
+#. and not "none /proc ..."
+#: mount/umount.c:183
+#, c-format
+msgid "umount: %s: device is busy"
+msgstr "umount: zařízení %s je již používáno"
+
+#: mount/umount.c:185
+#, c-format
+msgid "umount: %s: not found"
+msgstr "umount: %s nelze najít"
+
+#: mount/umount.c:187
+#, c-format
+msgid "umount: %s: must be superuser to umount"
+msgstr "umount: musíte být superuživatelem, abyste mohl odpojit %s"
+
+#: mount/umount.c:189
+#, c-format
+msgid "umount: %s: block devices not permitted on fs"
+msgstr "umount: %s: bloková zařízení nejsou na systému souborů povolena"
+
+#: mount/umount.c:191
+#, c-format
+msgid "umount: %s: %s"
+msgstr "umount: %s: %s"
+
+#: mount/umount.c:235
+msgid "no umount2, trying umount...\n"
+msgstr "nenalezl jsem umount2, zkouším umount...\n"
+
+#: mount/umount.c:248
+#, c-format
+msgid "could not umount %s - trying %s instead\n"
+msgstr "%s nelze odpojit - zkouším %s\n"
+
+#: mount/umount.c:264
+#, c-format
+msgid "umount: %s busy - remounted read-only\n"
+msgstr ""
+"umount: %s je již používáno - znovu připojeno v režimu pro pouze čtení\n"
+
+#: mount/umount.c:272
+#, c-format
+msgid "umount: could not remount %s read-only\n"
+msgstr "umount: %s nelze znovu připojit v režimu pouze pro čtení\n"
+
+#: mount/umount.c:280
+#, c-format
+msgid "%s umounted\n"
+msgstr "%s odpojeno\n"
+
+#: mount/umount.c:363
+msgid "umount: cannot find list of filesystems to unmount"
+msgstr "umount: seznam systémů souborů na odpojení nelze nalézt"
+
+#: mount/umount.c:392
+msgid ""
+"Usage: umount [-hV]\n"
+" umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n"
+" umount [-f] [-r] [-n] [-v] special | node...\n"
+msgstr ""
+"Použití: umount [-hV]\n"
+" umount -a [-f] [-r] [-n] [-v] [-t typy vfs]\n"
+" umount [-f] [-r] [-n] [-v] speciální soubor | uzel...\n"
+
+#: mount/umount.c:453
+msgid "umount: only root can do that"
+msgstr "umount: toto může provést pouze uživatel root"
+
+#: mount/umount.c:468
+#, c-format
+msgid "Trying to umount %s\n"
+msgstr "Zkouším odpojit %s\n"
+
+#: mount/umount.c:472
+#, c-format
+msgid "Could not find %s in mtab\n"
+msgstr "%s nelze v mtab najít\n"
+
+#: mount/umount.c:476
+#, c-format
+msgid "umount: %s is not mounted (according to mtab)"
+msgstr "umount: podle mtab není %s připojeno"
+
+#: mount/umount.c:478
+#, c-format
+msgid "umount: it seems %s is mounted multiple times"
+msgstr "umount: zdá se, že %s je připojeno více než jednou"
+
+#: mount/umount.c:480
+#, c-format
+msgid "umount: %s is not in the fstab (and you are not root)"
+msgstr "umount: %s není ve fstab (a Vy nejste root)"
+
+#: mount/umount.c:486
+#, c-format
+msgid "umount: %s mount disagrees with the fstab"
+msgstr "umount: připojení %s neodpovídá fstab"
+
+#: mount/umount.c:505
+#, c-format
+msgid "umount: only root can unmount %s from %s"
+msgstr "unmount: pouze uživatel root může odpojit %s ze %s"
+
+#: mount/umount.c:515
+#, c-format
+msgid "umount: only %s can unmount %s from %s"
+msgstr "unmount: pouze uživatel %s může odpojit %s ze %s"
+
+#: sys-utils/ctrlaltdel.c:26
+msgid "You must be root to set the Ctrl-Alt-Del behaviour.\n"
+msgstr "Pouze uživatel root může nastavit chování Ctrl-Alt-Del.\n"
+
+#: sys-utils/ctrlaltdel.c:41
+msgid "Usage: ctrlaltdel hard|soft\n"
+msgstr "Použití: ctrlaltdel hard|soft\n"
+
+#: sys-utils/cytune.c:118
+#, c-format
+msgid ""
+"File %s, For threshold value %lu, Maximum characters in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+"Soubor %s, pro prahovou hodnotu %lu, maximální počet znaků ve fifo byl %d\n"
+"a maximální přenosová rychlost ve znacích za sekundu byla %f\n"
+
+#: sys-utils/cytune.c:129
+#, c-format
+msgid ""
+"File %s, For threshold value %lu and timrout value %lu, Maximum characters "
+"in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+"Soubor %s, pro prahovou hodnotu %lu a časový limit %lu, maximální počet "
+"znaků\n"
+"ve fifo byl %d a maximální přenosová rychlost ve znacích za sekundu byla %f\n"
+
+#: sys-utils/cytune.c:196
+#, c-format
+msgid "Invalid interval value: %s\n"
+msgstr "Chybné rozpětí: %s\n"
+
+#: sys-utils/cytune.c:204
+#, c-format
+msgid "Invalid set value: %s\n"
+msgstr "Chybná hodnota: %s\n"
+
+#: sys-utils/cytune.c:212
+#, c-format
+msgid "Invalid default value: %s\n"
+msgstr "Chybná implicitní hodnota: %s\n"
+
+#: sys-utils/cytune.c:220
+#, c-format
+msgid "Invalid set time value: %s\n"
+msgstr "Chybný časový údaj: %s\n"
+
+#: sys-utils/cytune.c:228
+#, c-format
+msgid "Invalid default time value: %s\n"
+msgstr "Chybný implicitní časový údaj: %s\n"
+
+#: sys-utils/cytune.c:245
+#, c-format
+msgid ""
+"Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) "
+"[-g|-G] file [file...]\n"
+msgstr ""
+"Použití: %s [-q [-i interval]] ([-s hodnota]|[-S hodnota]) ([-t hodnota]|[-T "
+"hodnota]) [-g|-G] soubor [soubor...]\n"
+
+#: sys-utils/cytune.c:257 sys-utils/cytune.c:275 sys-utils/cytune.c:294
+#: sys-utils/cytune.c:342
+#, c-format
+msgid "Can't open %s: %s\n"
+msgstr "%s nelze otevřít: %s\n"
+
+#: sys-utils/cytune.c:264
+#, c-format
+msgid "Can't set %s to threshold %d: %s\n"
+msgstr "%s nelze nastavit na prahovou hodnotu %d: %s\n"
+
+#: sys-utils/cytune.c:282
+#, c-format
+msgid "Can't set %s to time threshold %d: %s\n"
+msgstr "%s nelze nastavit na časový limit %d: %s\n"
+
+#: sys-utils/cytune.c:299 sys-utils/cytune.c:354 sys-utils/cytune.c:385
+#, c-format
+msgid "Can't get threshold for %s: %s\n"
+msgstr "Prahovou hodnotu pro %s nelze zjistit: %s\n"
+
+#: sys-utils/cytune.c:305 sys-utils/cytune.c:360 sys-utils/cytune.c:391
+#, c-format
+msgid "Can't get timeout for %s: %s\n"
+msgstr "Časový limit pro %s nelze zjistit: %s\n"
+
+#: sys-utils/cytune.c:309
+#, c-format
+msgid "%s: %ld %s threshold and %ld %s timeout\n"
+msgstr "%s: %ld %s prahová hodnota a %ld %s časový limit\n"
+
+#: sys-utils/cytune.c:311 sys-utils/cytune.c:313
+msgid "current"
+msgstr "aktuální"
+
+#: sys-utils/cytune.c:311 sys-utils/cytune.c:313
+msgid "default"
+msgstr "implicitní"
+
+#: sys-utils/cytune.c:330
+msgid "Can't set signal handler"
+msgstr "Zpracování signálu nelze nastavit"
+
+#: sys-utils/cytune.c:334 sys-utils/cytune.c:369
+msgid "gettimeofday failed"
+msgstr "volání gettimeofday selhalo"
+
+#: sys-utils/cytune.c:347 sys-utils/cytune.c:379
+#, c-format
+msgid "Can't issue CYGETMON on %s: %s\n"
+msgstr "CYGETMON nelze na %s provést: %s\n"
+
+#: sys-utils/cytune.c:421
+#, c-format
+msgid "%s: %lu ints, %lu/%lu chars; "
+msgstr "%s: %lu přerušení, %lu/%lu znaků; "
+
+#: sys-utils/cytune.c:422
+#, c-format
+msgid "fifo: %lu thresh, %lu tmout, "
+msgstr "fifo: %lu práh, %lu časový limit, "
+
+#: sys-utils/cytune.c:423
+#, c-format
+msgid "%lu max, %lu now\n"
+msgstr "%lu max, %lu nyní\n"
+
+#: sys-utils/cytune.c:428
+#, c-format
+msgid " %f int/sec; %f rec, %f send (char/sec)\n"
+msgstr " %f přer/sek; %f příj, %f odesl (znak/sek)\n"
+
+#: sys-utils/cytune.c:433
+#, c-format
+msgid ""
+"%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n"
+msgstr ""
+"%s: %lu přerušení, %lu znaků; fifo: %lu práh, %lu časový limit, %lu max, %lu "
+"nyní\n"
+
+#: sys-utils/cytune.c:438
+#, c-format
+msgid " %f int/sec; %f rec (char/sec)\n"
+msgstr " %f přer/sek; %f příj (znak/sek)\n"
+
+#: sys-utils/dmesg.c:38
+#, c-format
+msgid "Usage: %s [-c] [-n level] [-s bufsize]\n"
+msgstr "Použití: %s [-c] [-n úroveň] [-s velikost bufferu]\n"
+
+#: sys-utils/ipcrm.c:46
+#, c-format
+msgid "usage: %s [shm | msg | sem] id\n"
+msgstr "Použití: %s [shm | msg | sem] id\n"
+
+#: sys-utils/ipcrm.c:70
+#, c-format
+msgid "usage: %s [-shm | -msg | -sem] id\n"
+msgstr "Použití: %s [-shm | -msg | -sem] id\n"
+
+#: sys-utils/ipcrm.c:73
+msgid "resource deleted\n"
+msgstr "prostředek smazán\n"
+
+#: sys-utils/ipcs.c:91
+#, c-format
+msgid "usage : %s -asmq -tclup \n"
+msgstr "Použití : %s -asmq -tclup \n"
+
+#: sys-utils/ipcs.c:92
+#, c-format
+msgid "\t%s [-s -m -q] -i id\n"
+msgstr "\t%s [-s -m -q] -i id\n"
+
+#: sys-utils/ipcs.c:93
+#, c-format
+msgid "\t%s -h for help.\n"
+msgstr "\t%s -h pro nápovědu.\n"
+
+#: sys-utils/ipcs.c:99
+#, c-format
+msgid "%s provides information on ipc facilities for"
+msgstr "%s poskytuje informace o ipc prostředcích, "
+
+#: sys-utils/ipcs.c:100
+msgid " which you have read access.\n"
+msgstr "je kterým máte přístup pro čtení.\n"
+
+#: sys-utils/ipcs.c:101
+msgid ""
+"Resource Specification:\n"
+"\t-m : shared_mem\n"
+"\t-q : messages\n"
+msgstr ""
+"Zadání prostředku:\n"
+"\t-m : sdílená paměť\n"
+"\t-q : zprávy\n"
+
+#: sys-utils/ipcs.c:102
+msgid ""
+"\t-s : semaphores\n"
+"\t-a : all (default)\n"
+msgstr ""
+"\t-s : semafory\n"
+"\t-a : vše (implicitní)\n"
+
+#: sys-utils/ipcs.c:103
+msgid ""
+"Output Format:\n"
+"\t-t : time\n"
+"\t-p : pid\n"
+"\t-c : creator\n"
+msgstr ""
+"Výstupní formát:\n"
+"\t-t : čas\n"
+"\t-p : pid\n"
+"\t-c : tvůrce\n"
+
+#: sys-utils/ipcs.c:104
+msgid ""
+"\t-l : limits\n"
+"\t-u : summary\n"
+msgstr ""
+"\t-l : omezení\n"
+"\t-u : shrnutí\n"
+
+#: sys-utils/ipcs.c:105
+msgid "-i id [-s -q -m] : details on resource identified by id\n"
+msgstr "-i id [-s -q -m] : podrobnosti o prostředku určeném dle id\n"
+
+#: sys-utils/ipcs.c:237 sys-utils/ipcs.c:439
+msgid "kernel not configured for shared memory\n"
+msgstr "jádro nepodporuje sdílenou paměť\n"
+
+#: sys-utils/ipcs.c:243
+msgid "------ Shared Memory Limits --------\n"
+msgstr "------ Omezení pro sdílenou paměť --------\n"
+
+#: sys-utils/ipcs.c:246
+#, c-format
+msgid "max number of segments = %d\n"
+msgstr "maximální počet segmentů = %d\n"
+
+#: sys-utils/ipcs.c:247
+#, c-format
+msgid "max seg size (kbytes) = %d\n"
+msgstr "maximální velikost segmentu (v kilobajtech) = %d\n"
+
+#: sys-utils/ipcs.c:248
+#, c-format
+msgid "max total shared memory (kbytes) = %d\n"
+msgstr "celkové maximum pro sdílenou paměť (v kilobajtech) = %d\n"
+
+#: sys-utils/ipcs.c:249
+#, c-format
+msgid "min seg size (bytes) = %d\n"
+msgstr "minimální velikost segmentu (v bajtech) = %d\n"
+
+#: sys-utils/ipcs.c:253
+msgid "------ Shared Memory Status --------\n"
+msgstr "------ Stav sdílené paměti --------\n"
+
+#: sys-utils/ipcs.c:254
+#, c-format
+msgid "segments allocated %d\n"
+msgstr "alokované segmenty %d\n"
+
+#: sys-utils/ipcs.c:255
+#, c-format
+msgid "pages allocated %ld\n"
+msgstr "alokované stránky %ld\n"
+
+#: sys-utils/ipcs.c:256
+#, c-format
+msgid "pages resident %ld\n"
+msgstr "rezidentní stránky %ld\n"
+
+#: sys-utils/ipcs.c:257
+#, c-format
+msgid "pages swapped %ld\n"
+msgstr "stránky v odkládacím prostoru %ld\n"
+
+#: sys-utils/ipcs.c:258
+#, c-format
+msgid "Swap performance: %ld attempts\t %ld successes\n"
+msgstr "Statistika pro odkládání: pokusů: %ld\t, z toho úspěšných: %ld\n"
+
+#: sys-utils/ipcs.c:263
+msgid "------ Shared Memory Segment Creators/Owners --------\n"
+msgstr "------ Tvůrci/vlastníci segmentů sdílené paměti ------\n"
+
+#: sys-utils/ipcs.c:264 sys-utils/ipcs.c:370 sys-utils/ipcs.c:462
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s\n"
+msgstr "%-10s%-10s%-10s%-10s%-10s%-10s\n"
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:271 sys-utils/ipcs.c:276
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:377
+msgid "shmid"
+msgstr "shmid"
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:282 sys-utils/ipcs.c:371
+#: sys-utils/ipcs.c:386 sys-utils/ipcs.c:463 sys-utils/ipcs.c:480
+msgid "perms"
+msgstr "práva"
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cuid"
+msgstr "cuid"
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cgid"
+msgstr "cgid"
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "uid"
+msgstr "uid"
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:463
+msgid "gid"
+msgstr "gid"
+
+#: sys-utils/ipcs.c:269
+msgid "------ Shared Memory Attach/Detach/Change Times --------\n"
+msgstr "------ Časy připojení/odpojení/změny pro sdílenou paměť --------\n"
+
+#: sys-utils/ipcs.c:270
+#, c-format
+msgid "%-10s%-10s %-20s%-20s%-20s\n"
+msgstr "%-10s%-10s %-20s%-20s%-20s\n"
+
+#: sys-utils/ipcs.c:271 sys-utils/ipcs.c:276 sys-utils/ipcs.c:282
+#: sys-utils/ipcs.c:377 sys-utils/ipcs.c:386 sys-utils/ipcs.c:469
+#: sys-utils/ipcs.c:474 sys-utils/ipcs.c:480
+msgid "owner"
+msgstr "vlastník"
+
+#: sys-utils/ipcs.c:271
+msgid "attached"
+msgstr "připojení"
+
+#: sys-utils/ipcs.c:271
+msgid "detached"
+msgstr "odpojení"
+
+#: sys-utils/ipcs.c:271
+msgid "changed"
+msgstr "změna"
+
+#: sys-utils/ipcs.c:275
+msgid "------ Shared Memory Creator/Last-op --------\n"
+msgstr "------ Tvůrce sdílené paměti/poslední operace --------\n"
+
+#: sys-utils/ipcs.c:276 sys-utils/ipcs.c:474
+#, c-format
+msgid "%-10s%-10s%-10s%-10s\n"
+msgstr "%-10s%-10s%-10s%-10s\n"
+
+#: sys-utils/ipcs.c:276
+msgid "cpid"
+msgstr "cpid"
+
+#: sys-utils/ipcs.c:276
+msgid "lpid"
+msgstr "lpid"
+
+#: sys-utils/ipcs.c:280
+msgid "------ Shared Memory Segments --------\n"
+msgstr "------ Segmenty sdílené paměti --------\n"
+
+#: sys-utils/ipcs.c:281
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr "%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n"
+
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:386 sys-utils/ipcs.c:479
+msgid "key"
+msgstr "klíč"
+
+#: sys-utils/ipcs.c:282
+msgid "bytes"
+msgstr "bajty"
+
+#: sys-utils/ipcs.c:282
+msgid "nattch"
+msgstr "nattch"
+
+#: sys-utils/ipcs.c:282 sys-utils/ipcs.c:386
+msgid "status"
+msgstr "stav"
+
+#: sys-utils/ipcs.c:302 sys-utils/ipcs.c:303 sys-utils/ipcs.c:304
+#: sys-utils/ipcs.c:407 sys-utils/ipcs.c:408 sys-utils/ipcs.c:500
+#: sys-utils/ipcs.c:501 sys-utils/ipcs.c:502
+msgid "Not set"
+msgstr "Nenastaveno"
+
+#: sys-utils/ipcs.c:324
+msgid "dest"
+msgstr "cíl"
+
+#: sys-utils/ipcs.c:325
+msgid "locked"
+msgstr "zamčeno"
+
+#: sys-utils/ipcs.c:345
+msgid "kernel not configured for semaphores\n"
+msgstr "jádro nepodporuje semafory\n"
+
+#: sys-utils/ipcs.c:351
+msgid "------ Semaphore Limits --------\n"
+msgstr "------Omezení pro semafory --------\n"
+
+#: sys-utils/ipcs.c:355
+#, c-format
+msgid "max number of arrays = %d\n"
+msgstr "maximální počet polí = %d\n"
+
+#: sys-utils/ipcs.c:356
+#, c-format
+msgid "max semaphores per array = %d\n"
+msgstr "maximální počet semaforů v poli = %d\n"
+
+#: sys-utils/ipcs.c:357
+#, c-format
+msgid "max semaphores system wide = %d\n"
+msgstr "celkový maximální počet semaforů = %d\n"
+
+#: sys-utils/ipcs.c:358
+#, c-format
+msgid "max ops per semop call = %d\n"
+msgstr "maximální počet operací na jedno semop volání = %d\n"
+
+#: sys-utils/ipcs.c:359
+#, c-format
+msgid "semaphore max value = %d\n"
+msgstr "maximální hodnota semaforu = %d\n"
+
+#: sys-utils/ipcs.c:363
+msgid "------ Semaphore Status --------\n"
+msgstr "------ Stav semaforu --------\n"
+
+#: sys-utils/ipcs.c:364
+#, c-format
+msgid "used arrays = %d\n"
+msgstr "použitá pole = %d\n"
+
+#: sys-utils/ipcs.c:365
+#, c-format
+msgid "allocated semaphores = %d\n"
+msgstr "alokované semafory = %d\n"
+
+#: sys-utils/ipcs.c:369
+msgid "------ Semaphore Arrays Creators/Owners --------\n"
+msgstr "------ Tvůrci/vlastníci polí semaforů --------\n"
+
+#: sys-utils/ipcs.c:371 sys-utils/ipcs.c:386
+msgid "semid"
+msgstr "semid"
+
+#: sys-utils/ipcs.c:375
+msgid "------ Shared Memory Operation/Change Times --------\n"
+msgstr "------ Časy operace/změny sdílené paměti --------\n"
+
+#: sys-utils/ipcs.c:376
+#, c-format
+msgid "%-8s%-10s %-26.24s %-26.24s\n"
+msgstr "%-8s%-10s %-26.24s %-26.24s\n"
+
+#: sys-utils/ipcs.c:377
+msgid "last-op"
+msgstr "poslední operace"
+
+#: sys-utils/ipcs.c:377
+msgid "last-changed"
+msgstr "poslední změna"
+
+#: sys-utils/ipcs.c:384
+msgid "------ Semaphore Arrays --------\n"
+msgstr "------ Pole semaforů --------\n"
+
+#: sys-utils/ipcs.c:385
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr "%-10s%-10s%-10s%-10s%-10s%-12s\n"
+
+#: sys-utils/ipcs.c:386
+msgid "nsems"
+msgstr "nsems"
+
+#: sys-utils/ipcs.c:447
+msgid "------ Messages: Limits --------\n"
+msgstr "------ Zprávy: Omezení --------\n"
+
+#: sys-utils/ipcs.c:448
+#, c-format
+msgid "max queues system wide = %d\n"
+msgstr "celkový maximální počet front = %d\n"
+
+#: sys-utils/ipcs.c:449
+#, c-format
+msgid "max size of message (bytes) = %d\n"
+msgstr "maximální velikost zprávy (v bajtech) = %d\n"
+
+#: sys-utils/ipcs.c:450
+#, c-format
+msgid "default max size of queue (bytes) = %d\n"
+msgstr "implicitní maximální velikost fronty (v bajtech) = %d\n"
+
+#: sys-utils/ipcs.c:454
+msgid "------ Messages: Status --------\n"
+msgstr "------ Zprávy: Stav --------\n"
+
+#: sys-utils/ipcs.c:455
+#, c-format
+msgid "allocated queues = %d\n"
+msgstr "alokované fronty = %d\n"
+
+#: sys-utils/ipcs.c:456
+#, c-format
+msgid "used headers = %d\n"
+msgstr "použité hlavičky = %d\n"
+
+#: sys-utils/ipcs.c:457
+#, c-format
+msgid "used space = %d bytes\n"
+msgstr "použitý prostor (v bajtech) = %d\n"
+
+#: sys-utils/ipcs.c:461
+msgid "------ Message Queues: Creators/Owners --------\n"
+msgstr "------ Fronty zpráv: Tvůrci/Vlastníci --------\n"
+
+#: sys-utils/ipcs.c:463 sys-utils/ipcs.c:469 sys-utils/ipcs.c:474
+#: sys-utils/ipcs.c:479
+msgid "msqid"
+msgstr "msqid"
+
+#: sys-utils/ipcs.c:467
+msgid "------ Message Queues Send/Recv/Change Times --------\n"
+msgstr "------ Časy odeslání.příchodu/změny pro fronty zpráv --------\n"
+
+#: sys-utils/ipcs.c:468
+#, c-format
+msgid "%-8s%-10s %-20s%-20s%-20s\n"
+msgstr "%-8s%-10s %-20s%-20s%-20s\n"
+
+#: sys-utils/ipcs.c:469
+msgid "send"
+msgstr "odeslání"
+
+#: sys-utils/ipcs.c:469
+msgid "recv"
+msgstr "příjem"
+
+#: sys-utils/ipcs.c:469
+msgid "change"
+msgstr "změna"
+
+#: sys-utils/ipcs.c:473
+msgid "------ Message Queues PIDs --------\n"
+msgstr "------ PID pro fronty zpráv --------\n"
+
+#: sys-utils/ipcs.c:474
+msgid "lspid"
+msgstr "lspid"
+
+#: sys-utils/ipcs.c:474
+msgid "lrpid"
+msgstr "lrpid"
+
+#: sys-utils/ipcs.c:478
+msgid "------ Message Queues --------\n"
+msgstr "------ Fronty zpráv --------\n"
+
+#: sys-utils/ipcs.c:479
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-12s%-12s\n"
+msgstr "%-10s%-10s%-10s%-10s%-12s%-12s\n"
+
+#: sys-utils/ipcs.c:480
+msgid "used-bytes"
+msgstr "užité bajty"
+
+#: sys-utils/ipcs.c:480
+msgid "messages"
+msgstr "zprávy"
+
+#: sys-utils/ipcs.c:539
+#, c-format
+msgid ""
+"\n"
+"Shared memory Segment shmid=%d\n"
+msgstr ""
+"\n"
+"shmid segmentu sdílené paměti = %d\n"
+
+#: sys-utils/ipcs.c:540
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
+msgstr "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
+
+#: sys-utils/ipcs.c:542
+#, c-format
+msgid "mode=%#o\taccess_perms=%#o\n"
+msgstr "mód=%#o\tpřístupová práva=%#o\n"
+
+#: sys-utils/ipcs.c:543
+#, c-format
+msgid "bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n"
+msgstr "bajtů=%d\tlpid=%d\tcpid=%d\tnattch=%d\n"
+
+#: sys-utils/ipcs.c:546
+#, c-format
+msgid "att_time=%s"
+msgstr "připoj_čas=%s"
+
+#: sys-utils/ipcs.c:547 sys-utils/ipcs.c:549 sys-utils/ipcs.c:598
+msgid "Not set\n"
+msgstr "Nenastaveno\n"
+
+#: sys-utils/ipcs.c:548
+#, c-format
+msgid "det_time=%s"
+msgstr "odpoj_čas=%s"
+
+#: sys-utils/ipcs.c:550
+#, c-format
+msgid "change_time=%s"
+msgstr "čas_změny=%s"
+
+#: sys-utils/ipcs.c:566
+#, c-format
+msgid ""
+"\n"
+"Message Queue msqid=%d\n"
+msgstr ""
+"\n"
+"msgid fronty zpráv=%d\n"
+
+#: sys-utils/ipcs.c:567
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
+msgstr "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmód=%#o\n"
+
+#: sys-utils/ipcs.c:569
+#, c-format
+msgid "cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n"
+msgstr "cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n"
+
+#: sys-utils/ipcs.c:572
+#, c-format
+msgid "send_time=%srcv_time=%schange_time=%s"
+msgstr "send_time=%srcv_time=%schange_time=%s"
+
+#: sys-utils/ipcs.c:573 sys-utils/ipcs.c:574 sys-utils/ipcs.c:575
+msgid "Not Set\n"
+msgstr "Nenastaveno\n"
+
+#: sys-utils/ipcs.c:592
+#, c-format
+msgid ""
+"\n"
+"Semaphore Array semid=%d\n"
+msgstr ""
+"\n"
+"semid pole semaforů = %d\n"
+
+#: sys-utils/ipcs.c:593
+#, c-format
+msgid "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
+msgstr "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
+
+#: sys-utils/ipcs.c:595
+#, c-format
+msgid "mode=%#o, access_perms=%#o\n"
+msgstr "mód=%#o, přístupová práva=%#o\n"
+
+#: sys-utils/ipcs.c:596
+#, c-format
+msgid "nsems = %d\n"
+msgstr "nsems = %d\n"
+
+#: sys-utils/ipcs.c:597
+#, c-format
+msgid "otime = %s"
+msgstr "čas poslední operace = %s"
+
+#: sys-utils/ipcs.c:599
+#, c-format
+msgid "ctime = %s"
+msgstr "čas změny = %s"
+
+#: sys-utils/ipcs.c:601
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s\n"
+msgstr "%-10s%-10s%-10s%-10s%-10s\n"
+
+#: sys-utils/ipcs.c:601
+msgid "semnum"
+msgstr "semnum"
+
+#: sys-utils/ipcs.c:601
+msgid "value"
+msgstr "hodnota"
+
+#: sys-utils/ipcs.c:601
+msgid "ncount"
+msgstr "ncount"
+
+#: sys-utils/ipcs.c:602
+msgid "zcount"
+msgstr "zcount"
+
+#: sys-utils/ipcs.c:602
+msgid "pid"
+msgstr "pid"
+
+#: sys-utils/rdev.c:68
+msgid "usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]"
+msgstr "Použití: rsv [ -rsv ] [ -o POSUN ] [ OBRAZ [ HODNOTA [ POSUN ] ] ]"
+
+#: sys-utils/rdev.c:69
+msgid ""
+" rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device"
+msgstr " rdev /dev/fd0 (či rdev /linux, etc.) vypíše aktuální ROOT zařízení"
+
+#: sys-utils/rdev.c:70
+msgid " rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2"
+msgstr " rdev /dev/fd0 /dev/hda2 nastaví ROOT na /dev/hda2"
+
+#: sys-utils/rdev.c:71
+msgid " rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)"
+msgstr ""
+" rdev -R /dev/fd0 1 nastaví PŘÍZNAKY ROOT (pouze pro čtení)"
+
+#: sys-utils/rdev.c:72
+msgid " rdev -s /dev/fd0 /dev/hda2 set the SWAP device"
+msgstr ""
+" rdev -s /dev/fd0 /dev/hda2 nastaví zařízení pro odkládací prostor"
+
+#: sys-utils/rdev.c:73
+msgid " rdev -r /dev/fd0 627 set the RAMDISK size"
+msgstr " rdev -r /dev/fd0 627 nastaví velikost RAMDISKU"
+
+#: sys-utils/rdev.c:74
+msgid " rdev -v /dev/fd0 1 set the bootup VIDEOMODE"
+msgstr " rdev -v /dev/fd0 1 nastaví startovací VIDEOMÓD"
+
+#: sys-utils/rdev.c:75
+msgid " rdev -o N ... use the byte offset N"
+msgstr " rdev -o N ... posun v bajtech"
+
+#: sys-utils/rdev.c:76
+msgid " rootflags ... same as rdev -R"
+msgstr " root příznaky ... stejné jako rdev -R"
+
+#: sys-utils/rdev.c:77
+msgid " swapdev ... same as rdev -s"
+msgstr " odkládací prostor ... stejné jako rdev -s"
+
+#: sys-utils/rdev.c:78
+msgid " ramsize ... same as rdev -r"
+msgstr " velikost ram ... stejné jako rdev -r"
+
+#: sys-utils/rdev.c:79
+msgid " vidmode ... same as rdev -v"
+msgstr " vidmód ... stejné jako rdev -v"
+
+#: sys-utils/rdev.c:80
+msgid ""
+"Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,..."
+msgstr ""
+"Poznámka: video módy: -3=Ask, -2=Extended, -1=NormalVga, 1=kláv1, 2=kláv2,..."
+
+#: sys-utils/rdev.c:81
+msgid " use -R 1 to mount root readonly, -R 0 for read/write."
+msgstr " Pomocí -R 1 připojíte pouze pro čtení, -R 0 umožní zápis."
+
+#: sys-utils/readprofile.c:50
+#, c-format
+msgid ""
+"%s: Usage: \"%s [options]\n"
+"\t -m <mapfile> (default = \"%s\")\n"
+"\t -p <pro-file> (default = \"%s\")\n"
+"\t -i print only info about the sampling step\n"
+"\t -v print verbose data\n"
+"\t -a print all symbols, even if count is 0\n"
+"\t -r reset all the counters (root only)\n"
+"\t -V print version and exit\n"
+msgstr ""
+"%s: Použití: \"%s [přepínače]\n"
+"\t -m <mapsoubor> (implicitní = \"%s\")\n"
+"\t -p <pro-soubor> (implicitní = \"%s\")\n"
+"\t -i vypíše pouze informace o profilovacím kroku\n"
+"\t -v vypíše podrobné informace\n"
+"\t -a vypíše veškeré symboly i pokud je hodnota čítače 0\n"
+"\t -r vynuluje veškeré čítače (pouze root)\n"
+"\t -V vypíše informace o verzi a skončí\n"
+
+#: sys-utils/readprofile.c:113
+#, c-format
+msgid "%s Version %s\n"
+msgstr "%s Verze %s\n"
+
+#: sys-utils/readprofile.c:125
+msgid "anything\n"
+msgstr "cokoliv\n"
+
+#: sys-utils/readprofile.c:154
+#, c-format
+msgid "Sampling_step: %i\n"
+msgstr "Profilovací_krok: %i\n"
+
+#: sys-utils/readprofile.c:167 sys-utils/readprofile.c:193
+#, c-format
+msgid "%s: %s(%i): wrong map line\n"
+msgstr "%s: %s(%i): chybný map řádek\n"
+
+#: sys-utils/readprofile.c:180
+#, c-format
+msgid "%s: can't find \"_stext\" in %s\n"
+msgstr "%s: \"_stext\" nelze v %s nalézt\n"
+
+#: sys-utils/readprofile.c:221
+msgid "total"
+msgstr "celkem"
+
+#: sys-utils/renice.c:67
+msgid ""
+"usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]\n"
+msgstr ""
+"Použití: renice priorita [ [ -p ] pid ] [[ -g ] pgrp ] [ [ -u ] uživatel ]\n"
+
+#: sys-utils/renice.c:94
+#, c-format
+msgid "renice: %s: unknown user\n"
+msgstr "renice: %s: neznámý uživatel\n"
+
+#: sys-utils/renice.c:102
+#, c-format
+msgid "renice: %s: bad value\n"
+msgstr "renice: %s: chybná hodnota\n"
+
+#: sys-utils/renice.c:121
+msgid "getpriority"
+msgstr "getpriority"
+
+#: sys-utils/renice.c:126
+msgid "setpriority"
+msgstr "setpriority"
+
+#: sys-utils/renice.c:129
+#, c-format
+msgid "%d: old priority %d, new priority %d\n"
+msgstr "%d: původní priorita %d, nová priorita %d\n"
+
+#: sys-utils/setsid.c:23
+#, c-format
+msgid "usage: %s program [arg ...]\n"
+msgstr "Použití: %s program [arg ...]\n"
+
+#: sys-utils/tunelp.c:76
+#, c-format
+msgid ""
+"Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
+" -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s | \n"
+" -T [on|off] ]\n"
+msgstr ""
+"Použití: %s <zařízení> [ -i <IRQ> | -t <ČAS> | -c <ZNAKY> | -w <ČEKÁNÍ> | \n"
+" -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s |\n"
+" -T [on|off] ]\n"
+
+#: sys-utils/tunelp.c:92
+msgid "malloc error"
+msgstr "chyba malloc"
+
+#: sys-utils/tunelp.c:103
+msgid "sscanf error"
+msgstr "chyba sscanf"
+
+#: sys-utils/tunelp.c:236
+#, c-format
+msgid "%s: %s not an lp device.\n"
+msgstr "%s: %s není lp zařízením\n"
+
+#: sys-utils/tunelp.c:257
+#, c-format
+msgid "%s status is %d"
+msgstr "status %s je %d"
+
+#: sys-utils/tunelp.c:258
+msgid ", busy"
+msgstr ", zaneprázdněna"
+
+#: sys-utils/tunelp.c:259
+msgid ", ready"
+msgstr ", připravena"
+
+#: sys-utils/tunelp.c:260
+msgid ", out of paper"
+msgstr ", došel papír"
+
+#: sys-utils/tunelp.c:261
+msgid ", on-line"
+msgstr ", zapnuta"
+
+#: sys-utils/tunelp.c:262
+msgid ", error"
+msgstr ", chyba"
+
+#: sys-utils/tunelp.c:279
+msgid "LPGETIRQ error"
+msgstr "chyba LPGETIRQ"
+
+#: sys-utils/tunelp.c:285
+#, c-format
+msgid "%s using IRQ %d\n"
+msgstr "%s používá IRQ %d\n"
+
+#: sys-utils/tunelp.c:287
+#, c-format
+msgid "%s using polling\n"
+msgstr "%s používá poll\n"
+
+#: text-utils/col.c:150
+#, c-format
+msgid "col: bad -l argument %s.\n"
+msgstr "col: chybný argument %s pro přepínač -l\n"
+
+#: text-utils/col.c:511
+msgid "usage: col [-bfx] [-l nline]\n"
+msgstr "Použití: col [-bfx] [-l poč. řádků]\n"
+
+#: text-utils/col.c:517
+msgid "col: write error.\n"
+msgstr "col: chyba při ukládání\n"
+
+#: text-utils/col.c:524
+#, c-format
+msgid "col: warning: can't back up %s.\n"
+msgstr "col: varování: %s nelze zazálohovat.\n"
+
+#: text-utils/col.c:525
+msgid "past first line"
+msgstr "jsem za prvním řádkem"
+
+#: text-utils/col.c:525
+msgid "-- line already flushed"
+msgstr "-- řádek již není v bufru"
+
+#: text-utils/colcrt.c:93
+#, c-format
+msgid "usage: %s [ - ] [ -2 ] [ file ... ]\n"
+msgstr "Použití: %s [ - ] [-2 ] [ soubor ... ]\n"
+
+#: text-utils/column.c:276
+msgid "line too long"
+msgstr "řádek je příliš dlouhý"
+
+#: text-utils/column.c:311
+msgid "usage: column [-tx] [-c columns] [file ...]\n"
+msgstr "Použití: column [-tx] [c sloupce] [soubor ...]\n"
+
+#: text-utils/hexsyntax.c:80
+msgid "hexdump: bad length value.\n"
+msgstr "hexdump: chybná délka\n"
+
+#: text-utils/hexsyntax.c:91
+msgid "hexdump: bad skip value.\n"
+msgstr "hexdump: chybná vzdálenost\n"
+
+#: text-utils/hexsyntax.c:129
+msgid ""
+"hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"
+msgstr ""
+"hexdump: [-bcdovx] [-e fmt] [-f fmt_soubor] [-n délka] [-s vzdálenost] "
+"[soubor ...]\n"
+
+#: text-utils/more.c:328
+#, c-format
+msgid "usage: %s [-dfln] [+linenum | +/pattern] name1 name2 ...\n"
+msgstr "Použití: %s [-dfln] [+číslo řádku | +/vzorek] jméno1 jméno2 ...\n"
+
+#: text-utils/more.c:503
+#, c-format
+msgid ""
+"\n"
+"*** %s: directory ***\n"
+"\n"
+msgstr ""
+"\n"
+"*** %s je adresář ***\n"
+"\n"
+
+#. simple ELF detection
+#: text-utils/more.c:542
+#, c-format
+msgid ""
+"\n"
+"******** %s: Not a text file ********\n"
+"\n"
+msgstr ""
+"\n"
+"***** %s není textovým souborem *****\n"
+"\n"
+
+#: text-utils/more.c:646
+msgid "[Use q or Q to quit]"
+msgstr "[Stiskněte q či Q pro ukončení]"
+
+#: text-utils/more.c:832
+msgid "--More--"
+msgstr "--Více--"
+
+#: text-utils/more.c:834
+#, c-format
+msgid "(Next file: %s)"
+msgstr "(Další soubor: %s)"
+
+#: text-utils/more.c:840
+msgid "[Press space to continue, 'q' to quit.]"
+msgstr "[Stiskněte mezerník pro pokračování, 'q' pro ukončení.]"
+
+#: text-utils/more.c:1138
+#, c-format
+msgid "...back %d page"
+msgstr "...přeskakuji zpět o počet stran: %d"
+
+#: text-utils/more.c:1184
+#, c-format
+msgid "...skipping %d line"
+msgstr "...přeskakuji o počet řádků: %d"
+
+#: text-utils/more.c:1225
+msgid ""
+"\n"
+"***Back***\n"
+"\n"
+msgstr ""
+"\n"
+"***Zpět***\n"
+
+#: text-utils/more.c:1263
+msgid "Can't open help file"
+msgstr "Soubor s nápovědou nelze otevřít."
+
+#: text-utils/more.c:1284 text-utils/more.c:1288
+msgid "[Press 'h' for instructions.]"
+msgstr "[Stiskněte 'h' pro nápovědu.]"
+
+#: text-utils/more.c:1323
+#, c-format
+msgid "\"%s\" line %d"
+msgstr "\"%s\" řádek %d"
+
+#: text-utils/more.c:1325
+#, c-format
+msgid "[Not a file] line %d"
+msgstr "[Nejedná se o soubor] řádek %d"
+
+#: text-utils/more.c:1409
+msgid " Overflow\n"
+msgstr " Přetečení\n"
+
+#: text-utils/more.c:1456
+msgid "...skipping\n"
+msgstr "...vynechávám\n"
+
+#: text-utils/more.c:1486
+msgid "Regular expression botch"
+msgstr "Chyba v regulárním výrazu"
+
+#: text-utils/more.c:1498
+msgid ""
+"\n"
+"Pattern not found\n"
+msgstr ""
+"\n"
+"Vzorek nebyl nalezen\n"
+
+#: text-utils/more.c:1501
+msgid "Pattern not found"
+msgstr "Vzorek nebyl nalezen"
+
+#: text-utils/more.c:1562
+msgid "can't fork\n"
+msgstr "volání fork selhalo\n"
+
+#: text-utils/more.c:1601
+msgid ""
+"\n"
+"...Skipping "
+msgstr ""
+"\n"
+"...Vynechávám "
+
+#: text-utils/more.c:1605
+msgid "...Skipping "
+msgstr "...Přecházím "
+
+#: text-utils/more.c:1606
+msgid "to file "
+msgstr "na soubor "
+
+#: text-utils/more.c:1606
+msgid "back to file "
+msgstr "zpět na soubor "
+
+#: text-utils/more.c:1845
+msgid "Line too long"
+msgstr "Řádek je příliš dlouhý"
+
+#: text-utils/more.c:1889
+msgid "No previous command to substitute for"
+msgstr "Neexistuje žádný příkaz, jenž by bylo možno nahradit"
+
+#: text-utils/odsyntax.c:133
+msgid "od: od(1) has been deprecated for hexdump(1).\n"
+msgstr "od: program od(1) je zastaralý, místo něj použijte hexdump(1).\n"
+
+#: text-utils/odsyntax.c:136
+#, c-format
+msgid "od: hexdump(1) compatibility doesn't support the -%c option%s\n"
+msgstr "od: režim kompatibility s hexdump(1) nepodporuje -%c volbu%s\n"
+
+#: text-utils/odsyntax.c:137
+msgid "; see strings(1)."
+msgstr "; viz strings(1)."
+
+#: text-utils/parse.c:63
+#, c-format
+msgid "hexdump: can't read %s.\n"
+msgstr "hexdump: %s nelze číst.\n"
+
+#: text-utils/parse.c:68
+msgid "hexdump: line too long.\n"
+msgstr "hexdump: řádek je příliš dlouhý.\n"
+
+#: text-utils/parse.c:406
+msgid "hexdump: byte count with multiple conversion characters.\n"
+msgstr "hexdump: počet bajtů s více než jedním konverzním znakem.\n"
+
+#: text-utils/parse.c:490
+#, c-format
+msgid "hexdump: bad byte count for conversion character %s.\n"
+msgstr "hexdump: chybný počet bajtů pro konverzní znak %s.\n"
+
+#: text-utils/parse.c:497
+msgid "hexdump: %%s requires a precision or a byte count.\n"
+msgstr "hexdump: %%s vyžaduje uvedení přesnosti či počtu bajtů.\n"
+
+#: text-utils/parse.c:503
+#, c-format
+msgid "hexdump: bad format {%s}\n"
+msgstr "hexdump: chybný formát {%s}\n"
+
+#: text-utils/parse.c:509
+msgid "hexdump: bad conversion character %%%s.\n"
+msgstr "hexdump: chybný znak v konverzi %%%s.\n"
+
+#: text-utils/rev.c:109
+msgid "Unable to allocate bufferspace\n"
+msgstr "Místo pro buffer nelze naalokovat.\n"
+
+#: text-utils/rev.c:167
+msgid "usage: rev [file ...]\n"
+msgstr "Použití: rev [soubor ...]\n"
+
+#: text-utils/ul.c:125
+#, c-format
+msgid "usage: %s [ -i ] [ -tTerm ] file...\n"
+msgstr "Použití: %s [ -i ] [-tTerm ] soubor...\n"
+
+#: text-utils/ul.c:136
+msgid "trouble reading terminfo"
+msgstr "chyba při čtení terminfo databáze"
+
+#: text-utils/ul.c:223
+#, c-format
+msgid "Unknown escape sequence in input: %o, %o\n"
+msgstr "Neznámá posloupnost řídících znaků na vstupu: %o, %o\n"
+
+#: text-utils/ul.c:372
+msgid "Unable to allocate buffer.\n"
+msgstr "Buffer nelze naalokovat.\n"
+
+#: text-utils/ul.c:529
+msgid "Input line too long.\n"
+msgstr "Vstupní řádka je příliš dlouhá.\n"
+
+#: text-utils/ul.c:542
+msgid "Out of memory when growing buffer.\n"
+msgstr "Nedostatek paměti pro rostoucí buffer.\n"
+
+#: kbd/kbdrate.c:139 kbd/kbdrate.c:271
+#, c-format
+msgid "Typematic Rate set to %.1f cps (delay = %d ms)\n"
+msgstr "Rychlost opakování kláves nastavena na %.1f cps (prodleva = %d ms)\n"
+
+#: kbd/kbdrate.c:247
+msgid "Cannot open /dev/port"
+msgstr "/dev/port nelze otevřít"
+
+#~ msgid "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+#~ msgstr "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+
+#~ msgid "Using %s as default device!\n"
+#~ msgstr "Používám %s jako implicitní zařízení!\n"
+
+#~ msgid "last: %s: "
+#~ msgstr "last: %s: "
+
+#~ msgid "'/' in \"%s\""
+#~ msgstr "'/' v \"%s\""
+
+#~ msgid "wall: cannot read %s.\n"
+#~ msgstr "wall: %s nelze číst.\n"
+
+#~ msgid "wall: %s\n"
+#~ msgstr "wall: %s\n"
+
+#~ msgid "look: "
+#~ msgstr "look: "
+
+#~ msgid "%s\n"
+#~ msgstr "%s\n"
+
+#~ msgid "[ [ -g ] pgrps ] [ [ -u ] users ]\n"
+#~ msgstr "[ [ -g ] PGRP ... ] [ [ -u ] uživatel ... ]\n"
+
+#~ msgid "usage: "
+#~ msgstr "Použití: "
+
+#~ msgid "That must be tomorrow, "
+#~ msgstr "To bude zítra, "
+
+#~ msgid "Cannot exec swapoff, "
+#~ msgstr "Swapoff nelze spustit - volání exec selhalo, "
+
+#~ msgid "Cannot exec "
+#~ msgstr "Volání exec selhalo"
+
+#~ msgid ", trying umount."
+#~ msgstr ", zkouším umount."
+
+#~ msgid "can't open %s (%s) - mtab not updated"
+#~ msgstr "nelze otevřít %s (%s) - mtab nebyl aktualizován"
+
+#~ msgid "util-linux kbdrate %s \n"
+#~ msgstr "util-linux kbdrate %s \n"
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 000000000..2de30163a
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,7787 @@
+# util-linux.po
+# German translation
+# Copyright (C) 1999
+# Elrond <Elrond@Wunder-Nett.org>, 1999.
+#
+# Permission is granted to freely copy and distribute
+# this file and modified versions, provided, that this
+# header is not removed and modified versions are marked
+# as such.
+#
+# People who helped or contributed (in historical order):
+# Martin Schulze <joey@infodrom.north.de>
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: util-linux 2.9s\n"
+"POT-Creation-Date: 1999-06-27 19:14+0200\n"
+"PO-Revision-Date: 1999-06-29 21:56+0200\n"
+"Last-Translator: Elrond <Elrond@Wunder-Nett.org>\n"
+"Language-Team: Elrond <Elrond@Wunder-Nett.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: disk-utils/fdformat.c:33
+msgid "Formatting ... "
+msgstr "Formatieren ... "
+
+#: disk-utils/fdformat.c:51 disk-utils/fdformat.c:86
+msgid "done\n"
+msgstr "Beendet\n"
+
+#: disk-utils/fdformat.c:62
+msgid "Verifying ... "
+msgstr "Überprüfen ... "
+
+# This is from a perror()
+#: disk-utils/fdformat.c:73
+msgid "Read: "
+msgstr "Lesen: "
+
+#: disk-utils/fdformat.c:75
+#, c-format
+msgid "Problem reading cylinder %d, expected %d, read %d\n"
+msgstr ""
+"Problem beim Lesen von Zylinder %d, es wurde %d erwartet, aber %d gelesen\n"
+
+# Oh, well, that doesn't sound pretty good.
+#: disk-utils/fdformat.c:81
+#, c-format
+msgid ""
+"bad data in cyl %d\n"
+"Continuing ... "
+msgstr ""
+"Schlechte Daten bei Zylinder %d\n"
+"Operation wird fortgesetzt ... "
+
+#: disk-utils/fdformat.c:96
+#, c-format
+msgid "usage: %s [ -n ] device\n"
+msgstr "Aufruf: %s [ -n ] Gerät\n"
+
+#: disk-utils/fdformat.c:122
+#, c-format
+msgid "%s: not a floppy device\n"
+msgstr "%s ist kein Diskettenlaufwerk\n"
+
+#: disk-utils/fdformat.c:128
+msgid "Could not determine current format type"
+msgstr "Konnte das aktuelle Format nicht feststellen"
+
+#: disk-utils/fdformat.c:129
+#, c-format
+msgid "%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"
+msgstr "%sseitig, %d Spuren, %d Sektoren/Spur, Totale Kapazität: %dkB.\n"
+
+#: disk-utils/fdformat.c:130
+msgid "Double"
+msgstr "Doppel"
+
+#: disk-utils/fdformat.c:130
+msgid "Single"
+msgstr "Einfach"
+
+#: disk-utils/fsck.minix.c:288
+#, c-format
+msgid "%s is mounted.\t "
+msgstr ""
+
+#: disk-utils/fsck.minix.c:290
+msgid "Do you really want to continue"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:294
+msgid "check aborted.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:311 disk-utils/fsck.minix.c:331
+msgid "Zone nr < FIRSTZONE in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:313 disk-utils/fsck.minix.c:333
+msgid "Zone nr >= ZONES in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:318 disk-utils/fsck.minix.c:338
+msgid "Remove block"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:356
+msgid "Read error: unable to seek to block in file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:362
+msgid "Read error: bad block in file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:378
+msgid ""
+"Internal error: trying to write bad block\n"
+"Write request ignored\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:386
+msgid "Write error: bad block in file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:607
+msgid "Warning: Firstzone != Norm_firstzone\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:612 disk-utils/mkfs.minix.c:528
+#, c-format
+msgid "%ld inodes\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:613 disk-utils/mkfs.minix.c:529
+#, c-format
+msgid "%ld blocks\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:614 disk-utils/mkfs.minix.c:530
+#, c-format
+msgid "Firstdatazone=%ld (%ld)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:615 disk-utils/mkfs.minix.c:531
+#, c-format
+msgid "Zonesize=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:616
+#, c-format
+msgid "Maxsize=%ld\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:617
+#, c-format
+msgid "Filesystem state=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:618
+#, c-format
+msgid ""
+"namelen=%d\n"
+"\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:632 disk-utils/fsck.minix.c:684
+#, c-format
+msgid "Inode %d marked not used, but used for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:637 disk-utils/fsck.minix.c:688
+msgid "Mark in use"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:659 disk-utils/fsck.minix.c:708
+#, c-format
+msgid " has mode %05o\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:665 disk-utils/fsck.minix.c:713
+msgid "Warning: inode count too big.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:749 disk-utils/fsck.minix.c:783
+msgid "Block has been used before. Now in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:752 disk-utils/fsck.minix.c:786
+#: disk-utils/fsck.minix.c:1114 disk-utils/fsck.minix.c:1123
+#: disk-utils/fsck.minix.c:1167 disk-utils/fsck.minix.c:1176
+msgid "Clear"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:761 disk-utils/fsck.minix.c:795
+#, c-format
+msgid "Block %d in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:763 disk-utils/fsck.minix.c:797
+msgid "' is marked not in use."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:764 disk-utils/fsck.minix.c:798
+msgid "Correct"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:948 disk-utils/fsck.minix.c:1012
+msgid " contains a bad inode number for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:950 disk-utils/fsck.minix.c:1014
+msgid " Remove"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:964 disk-utils/fsck.minix.c:1028
+msgid ": bad directory: '.' isn't first\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:971 disk-utils/fsck.minix.c:1036
+msgid ": bad directory: '..' isn't second\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1071
+msgid ": bad directory: size<32"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1090
+msgid ": bad directory: size < 32"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1113 disk-utils/fsck.minix.c:1166
+#, c-format
+msgid "Inode %d mode not cleared."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1122 disk-utils/fsck.minix.c:1175
+#, c-format
+msgid "Inode %d not used, marked used in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1128 disk-utils/fsck.minix.c:1181
+#, c-format
+msgid "Inode %d used, marked unused in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1134 disk-utils/fsck.minix.c:1186
+#, c-format
+msgid "Inode %d (mode = %07o), i_nlinks=%d, counted=%d."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1136 disk-utils/fsck.minix.c:1188
+msgid "Set i_nlinks to count"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1148 disk-utils/fsck.minix.c:1200
+#, c-format
+msgid "Zone %d: marked in use, no file uses it."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1149 disk-utils/fsck.minix.c:1201
+msgid "Unmark"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1153 disk-utils/fsck.minix.c:1205
+#, c-format
+msgid "Zone %d: %sin use, counted=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1154 disk-utils/fsck.minix.c:1206
+msgid "not "
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1182
+msgid "Set"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1296
+#, c-format
+msgid "%s is clean, no check.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1300
+#, c-format
+msgid "Forcing filesystem check on %s.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1302
+#, c-format
+msgid "Filesystem on %s is dirty, needs checking.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1331
+msgid ""
+"\n"
+"%6ld inodes used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1336
+msgid "%6ld zones used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1338
+#, c-format
+msgid ""
+"\n"
+"%6d regular files\n"
+"%6d directories\n"
+"%6d character device files\n"
+"%6d block device files\n"
+"%6d links\n"
+"%6d symbolic links\n"
+"------\n"
+"%6d files\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1351
+msgid ""
+"----------------------------\n"
+"FILE SYSTEM HAS BEEN CHANGED\n"
+"----------------------------\n"
+msgstr ""
+
+#: disk-utils/mkfs.c:66
+msgid "Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n"
+msgstr "Aufruf: mkfs [-V] [-t FS-Typ] [FS-Optionen] Gerät [Größe]\n"
+
+#: disk-utils/mkfs.c:80 fdisk/cfdisk.c:328 getopt-1.0.3b/getopt.c:85
+#: getopt-1.0.3b/getopt.c:95 login-utils/wall.c:217 mount/sundries.c:192
+#, c-format
+msgid "%s: Out of memory!\n"
+msgstr "%s: Speicher ist alle!\n"
+
+#: disk-utils/mkfs.c:89
+msgid "mkfs version "
+msgstr "mkfs Version "
+
+#: disk-utils/mkfs.minix.c:186
+#, c-format
+msgid "Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:210
+#, c-format
+msgid "%s is mounted; will not make a filesystem here!"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:271
+msgid "seek to boot block failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:273
+msgid "unable to clear boot sector"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:275
+msgid "seek failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:277
+msgid "unable to write super-block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:279
+msgid "unable to write inode map"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:281
+msgid "unable to write zone map"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:283
+msgid "unable to write inodes"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:290
+msgid "seek failed in write_block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:292
+msgid "write failed in write_block"
+msgstr ""
+
+#. Could make triple indirect block here
+#: disk-utils/mkfs.minix.c:300 disk-utils/mkfs.minix.c:374
+#: disk-utils/mkfs.minix.c:425
+msgid "too many bad blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:308
+msgid "not enough good blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:517
+msgid "unable to allocate buffers for maps"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:526
+msgid "unable to allocate buffer for inodes"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:532
+#, c-format
+msgid ""
+"Maxsize=%ld\n"
+"\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:546
+msgid "seek failed during testing of blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:554
+msgid "Weird values in do_check: probably bugs\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:585
+msgid "seek failed in check_blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:594
+msgid "bad blocks before data-area: cannot make fs"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:600 disk-utils/mkfs.minix.c:622
+#, c-format
+msgid "%d bad blocks\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:602 disk-utils/mkfs.minix.c:624
+msgid "one bad block\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:614
+msgid "can't open file of bad blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:637 disk-utils/mkfs.minix.c:640
+msgid "bad inode size"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:669
+#, c-format
+msgid "%s: not compiled with minix v2 support\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:685
+msgid "strtol error: number of blocks not specified"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:717
+#, fuzzy, c-format
+msgid "unable to open %s"
+msgstr "Konnte %s nicht öffnen"
+
+#: disk-utils/mkfs.minix.c:719
+#, c-format
+msgid "unable to stat %s"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:723
+#, fuzzy, c-format
+msgid "will not try to make filesystem on '%s'"
+msgstr "Auf ť%sŤ wird kein Dateisystem erzeugt"
+
+#: disk-utils/mkswap.c:101
+#, c-format
+msgid "Assuming pages of size %d\n"
+msgstr "Es wird eine Seitengröße von %d angenommen.\n"
+
+#: disk-utils/mkswap.c:234
+msgid "one bad page\n"
+msgstr "Eine beschädigte ťSeiteŤ\n"
+
+#: disk-utils/mkswap.c:236
+#, c-format
+msgid "%d bad pages\n"
+msgstr "%d beschädigte ťSeitenŤ\n"
+
+#: disk-utils/mkswap.c:340
+#, c-format
+msgid "%s: error: Nowhere to set up swap on?\n"
+msgstr ""
+"%s: Es wurde nicht angegeben, wo der Swapbereich angelegt werden soll.\n"
+
+#: disk-utils/mkswap.c:349
+#, c-format
+msgid "%s: error: size %ld is larger than device size %d\n"
+msgstr ""
+"%s: Fehler: Die angegebene Größe %ld ist größer als die des Gerätes: %d\n"
+
+#: disk-utils/mkswap.c:367
+#, c-format
+msgid "%s: error: unknown version %d\n"
+msgstr "%s: Fehler: unbekannte Version %d\n"
+
+#: disk-utils/mkswap.c:373
+#, c-format
+msgid "%s: error: swap area needs to be at least %ldkB\n"
+msgstr "%s: Fehler: Der Swapbereich muß mindestens %ldkB groß sein\n"
+
+#: disk-utils/mkswap.c:392
+#, c-format
+msgid "%s: warning: truncating swap area to %ldkB\n"
+msgstr "%s: Warnung: Der Swapbereich wird nur mit der Größe %ldkB angelegt\n"
+
+#: disk-utils/mkswap.c:419
+#, c-format
+msgid ""
+"%s: Device '%s' contains a valid Sun disklabel.\n"
+"This probably means creating v0 swap would destroy your partition table\n"
+"No swap created. If you really want to create swap v0 on that device, use\n"
+"the -f option to force it.\n"
+msgstr ""
+"%s: Das Gerät %s enthält einen gültigen ťSun disklabelŤ.\n"
+"Das bedeutet wahrscheinlich, daß das Anlegen eines v0-Swapbereiches die\n"
+"Partitionstabelle zerstören wird.\n"
+"Es wird kein Swapbereich angelegt. Wenn Sie wirklich einen Swapbereich\n"
+"anlegen wollen, so benutzen Sie die -f Option.\n"
+
+#: disk-utils/mkswap.c:444
+#, c-format
+msgid "Setting up swapspace version %d, size = %ld bytes\n"
+msgstr "Swapbereich Version %d mit der Größe %ld Bytes wird angelegt\n"
+
+#: disk-utils/setfdprm.c:30
+#, fuzzy, c-format
+msgid "Invalid number: %s\n"
+msgstr "Ungültige Nummer: %s\n"
+
+#: disk-utils/setfdprm.c:80
+#, fuzzy, c-format
+msgid "Syntax error: '%s'\n"
+msgstr "Syntaxfehler: ť%sŤ\n"
+
+#: disk-utils/setfdprm.c:90
+#, c-format
+msgid "No such parameter set: '%s'\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:100
+#, c-format
+msgid "usage: %s [ -p ] dev name\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:101
+#, c-format
+msgid ""
+" %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:104
+#, c-format
+msgid " %s [ -c | -y | -n | -d ] dev\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:106
+#, c-format
+msgid " %s [ -c | -y | -n ] dev\n"
+msgstr ""
+
+# "Unbrauchbar"
+#: fdisk/cfdisk.c:353 fdisk/cfdisk.c:1840
+msgid "Unusable"
+msgstr "Unbenutzbar"
+
+#: fdisk/cfdisk.c:355 fdisk/cfdisk.c:1842
+msgid "Free Space"
+msgstr "Freier Bereich"
+
+#: fdisk/cfdisk.c:358
+msgid "Linux ext2"
+msgstr "Linux ext2"
+
+#. also Solaris
+#: fdisk/cfdisk.c:360 fdisk/i386_sys_types.c:53
+msgid "Linux"
+msgstr "Linux"
+
+#: fdisk/cfdisk.c:363
+msgid "OS/2 HPFS"
+msgstr "OS/2 HPFS"
+
+#: fdisk/cfdisk.c:365
+msgid "OS/2 IFS"
+msgstr "OS/2 IFS"
+
+#: fdisk/cfdisk.c:369
+msgid "NTFS"
+msgstr "NTFS"
+
+#: fdisk/cfdisk.c:380
+msgid "Disk has been changed.\n"
+msgstr "Festplatte wurde verändert.\n"
+
+#: fdisk/cfdisk.c:381
+msgid "Reboot the system to ensure the partition table is correctly updated.\n"
+msgstr ""
+"Rebooten Sie das System, um sicherzustellen, daß die Partitionstabelle neu "
+"gelesen wird.\n"
+
+#: fdisk/cfdisk.c:384
+msgid ""
+"\n"
+"WARNING: If you have created or modified any\n"
+"DOS 6.x partitions, please see the cfdisk manual\n"
+"page for additional information.\n"
+msgstr ""
+"\n"
+"WARNUNG: Wenn Sie eine DOS 6.x Partition angelegt\n"
+"oder verändert haben, dann schauen Sie bitte in die\n"
+"cfdisk-manual-Seite nach weiteren Informationen\n"
+
+#: fdisk/cfdisk.c:479
+msgid "FATAL ERROR"
+msgstr "FATALER FEHLER"
+
+#: fdisk/cfdisk.c:488
+msgid "Press any key to exit cfdisk"
+msgstr "Eine Taste drücken, um cfdisk zu beenden"
+
+#: fdisk/cfdisk.c:524 fdisk/cfdisk.c:532
+msgid "Cannot seek on disk drive"
+msgstr "Konnte ťseek()Ť nicht auf der Festplatte benutzen"
+
+#: fdisk/cfdisk.c:526
+msgid "Cannot read disk drive"
+msgstr "Konnte nicht von der Festplatte lesen"
+
+#: fdisk/cfdisk.c:534
+msgid "Cannot write disk drive"
+msgstr "Konnte nicht auf die Festplatte schreiben"
+
+#: fdisk/cfdisk.c:771
+msgid "Too many partitions"
+msgstr "Zu viele Partitionen"
+
+#: fdisk/cfdisk.c:776
+msgid "Partition begins before sector 0"
+msgstr "Partition fängt vor Sektor 0 an"
+
+#: fdisk/cfdisk.c:781
+msgid "Partition ends before sector 0"
+msgstr "Partition endet vor Sektor 0"
+
+#: fdisk/cfdisk.c:786
+msgid "Partition begins after end-of-disk"
+msgstr "Partition fängt hinter dem Ende der Festplatte an"
+
+#: fdisk/cfdisk.c:791
+msgid "Partition ends after end-of-disk"
+msgstr "Partition endet hinter dem Ende der Festplatte"
+
+#: fdisk/cfdisk.c:839
+msgid ""
+"!!!! Internal error creating logical drive with no extended partition !!!!"
+msgstr ""
+"!! Interner Fehler beim Erzeugen einer log. Part. ohne eine erw. Part. !!"
+
+#: fdisk/cfdisk.c:850 fdisk/cfdisk.c:862
+msgid ""
+"Cannot create logical drive here -- would create two extended partitions"
+msgstr ""
+"Kann hier keine log. Part. anlegen -- eine zweite erw. müßte erzeugt werden."
+
+#: fdisk/cfdisk.c:1012
+msgid "Menu item too long. Menu may look odd."
+msgstr "Menüeintrag ist zu lang. Das Menü könnte ungewöhnlich aussehen"
+
+# "Ausrichtung" "Nehme horizontale Voreinstellung."
+#: fdisk/cfdisk.c:1068
+msgid "Menu without direction. Defaulting horizontal."
+msgstr "Menü ohne Richtung, verwende horizontal."
+
+#: fdisk/cfdisk.c:1185
+msgid "Illegal key"
+msgstr "Diese Taste ist hier nicht verwendbar"
+
+#: fdisk/cfdisk.c:1208
+msgid "Press a key to continue"
+msgstr "Eine Taste drücken, um fortzufahren"
+
+#: fdisk/cfdisk.c:1255 fdisk/cfdisk.c:1811 fdisk/cfdisk.c:2334
+#: fdisk/cfdisk.c:2336
+msgid "Primary"
+msgstr "Primäre"
+
+#: fdisk/cfdisk.c:1255
+msgid "Create a new primary partition"
+msgstr "Erzeuge eine neue primäre Partition"
+
+#: fdisk/cfdisk.c:1256 fdisk/cfdisk.c:1811 fdisk/cfdisk.c:2333
+#: fdisk/cfdisk.c:2336
+msgid "Logical"
+msgstr "Logische"
+
+#: fdisk/cfdisk.c:1256
+msgid "Create a new logical partition"
+msgstr "Erzeuge eine neue logische Partition"
+
+#: fdisk/cfdisk.c:1257 fdisk/cfdisk.c:1310 fdisk/cfdisk.c:2023
+msgid "Cancel"
+msgstr "Abbruch"
+
+#: fdisk/cfdisk.c:1257 fdisk/cfdisk.c:1310
+msgid "Don't create a partition"
+msgstr "Erzeuge keine neue Partition"
+
+#: fdisk/cfdisk.c:1273
+msgid "!!! Internal error !!!"
+msgstr "!!! Interner Fehler !!!"
+
+#: fdisk/cfdisk.c:1276
+msgid "Size (in MB): "
+msgstr "Größe (in MB): "
+
+#: fdisk/cfdisk.c:1308
+msgid "Beginning"
+msgstr "Anfang"
+
+#: fdisk/cfdisk.c:1308
+msgid "Add partition at beginning of free space"
+msgstr "Erzeuge Partition am Anfang des freien Bereiches"
+
+#: fdisk/cfdisk.c:1309
+msgid "End"
+msgstr "Ende"
+
+#: fdisk/cfdisk.c:1309
+msgid "Add partition at end of free space"
+msgstr "Erzeuge Partition am Ende des freien Bereiches"
+
+#: fdisk/cfdisk.c:1327
+msgid "No room to create the extended partition"
+msgstr "Kein Platz, um die erweiterte Partition anzulegen"
+
+#. probably a file or cdrom
+#: fdisk/cfdisk.c:1359
+msgid "Cannot read disk drive geometry"
+msgstr "Konnte die Festplattengeometrie nicht lesen"
+
+#: fdisk/cfdisk.c:1374
+msgid "Bad signature on partition table"
+msgstr "Beschädigte Signatur in der Partitionstabelle"
+
+#: fdisk/cfdisk.c:1377
+msgid "Cannot get disk size"
+msgstr "Konnte die Größe der Festplatte nicht feststellen"
+
+#: fdisk/cfdisk.c:1395
+msgid "Cannot derive a geometry from an empty partition table"
+msgstr "Konnte die Geometrie nicht aus einer leeren Partitionstabelle ableiten"
+
+#: fdisk/cfdisk.c:1403
+msgid "Cannot derive a geometry from the partition table"
+msgstr "Konnte die Geometrie nicht aus der Partitionstabelle ableiten"
+
+# That's not a direct translation, but I've tried to be
+# more informative.
+#: fdisk/cfdisk.c:1436
+msgid "Cannot open disk drive"
+msgstr "Konnte nicht auf die Festplatte zugreifen"
+
+# "Nur lesender Zugriff möglich - Sie haben keine Schreibberechtigung" (joey)
+#: fdisk/cfdisk.c:1438 fdisk/cfdisk.c:1622
+msgid "Opened disk read-only - you have no permission to write"
+msgstr ""
+"Platte wurde nur zum Lesen geöffnet - Sie haben keine Rechte zum Schreiben"
+
+# "Ungültige primäre Partition"
+#. avoid snprintf - it does not exist on ancient systems
+#: fdisk/cfdisk.c:1481
+msgid "Bad primary partition"
+msgstr "Beschädigte primäre Partition"
+
+#. avoid snprintf
+#: fdisk/cfdisk.c:1512
+msgid "Bad logical partition"
+msgstr "Beschädigte logische Partition"
+
+#: fdisk/cfdisk.c:1634
+msgid "Warning!! This may destroy data on your disk!"
+msgstr "Warnung!! Dies kann Daten auf der Festplatte zerstören!"
+
+#: fdisk/cfdisk.c:1638
+msgid "Are you sure you want write the partition table to disk? (yes or no): "
+msgstr ""
+"Sind Sie sicher, daß Sie die Partitionstabelle schreiben wollen? (yes/no): "
+
+#: fdisk/cfdisk.c:1644
+#, fuzzy
+msgid "no"
+msgstr "nein"
+
+#: fdisk/cfdisk.c:1645
+msgid "Did not write partition table to disk"
+msgstr "Die Partitionstabelle wurde nicht auf die Festplatte geschrieben"
+
+#: fdisk/cfdisk.c:1647
+#, fuzzy
+msgid "yes"
+msgstr "ja"
+
+#: fdisk/cfdisk.c:1650
+msgid "Please enter `yes' or `no'"
+msgstr "Bitte ťyesŤ oder ťnoŤ eingeben"
+
+#: fdisk/cfdisk.c:1659
+msgid "Writing partition table to disk..."
+msgstr "Die Partitionstabelle wird auf die Festplatte geschrieben..."
+
+#: fdisk/cfdisk.c:1684 fdisk/cfdisk.c:1688
+msgid "Wrote partition table to disk"
+msgstr "Die Partitionstabelle wurde auf die Festplatte geschrieben"
+
+# That's not a good translation, but I guess, I can't make it longer.
+#: fdisk/cfdisk.c:1686
+msgid ""
+"Wrote partition table, but re-read table failed. Reboot to update table."
+msgstr ""
+"Die Tabelle wurde geschr., aber das Neueinlesen schlug fehl. Rebooten Sie."
+
+# This one isn't realy correct.
+#: fdisk/cfdisk.c:1696
+msgid ""
+"Not precisely one primary partition is bootable. DOS MBR cannot boot this."
+msgstr ""
+"Mehrere Partitionen sind als bootbar markiert, der DOS MBR kann nicht booten."
+
+# "Geben sie einen Dateinamen ein oder drücken Sie Return, um es auf dem Bildschirm anzuzeigen: "
+# is too long
+#: fdisk/cfdisk.c:1754 fdisk/cfdisk.c:1872 fdisk/cfdisk.c:1964
+msgid "Enter filename or press RETURN to display on screen: "
+msgstr "Dateiname oder Return um es auf dem Bildschirm anzuzeigen: "
+
+#: fdisk/cfdisk.c:1762 fdisk/cfdisk.c:1880 fdisk/cfdisk.c:1972
+#, c-format
+msgid "Cannot open file '%s'"
+msgstr "Konnte %s nicht öffnen"
+
+#: fdisk/cfdisk.c:1773
+#, c-format
+msgid "Disk Drive: %s\n"
+msgstr "Festplatte: %s\n"
+
+#: fdisk/cfdisk.c:1775
+msgid "Sector 0:\n"
+msgstr "Sektor 0:\n"
+
+#: fdisk/cfdisk.c:1782
+#, c-format
+msgid "Sector %d:\n"
+msgstr "Sektor %d:\n"
+
+#: fdisk/cfdisk.c:1802
+msgid " None "
+msgstr " Keine "
+
+#: fdisk/cfdisk.c:1804
+msgid " Pri/Log"
+msgstr " Pri/Log"
+
+#: fdisk/cfdisk.c:1806
+msgid " Primary"
+msgstr " Primäre"
+
+#: fdisk/cfdisk.c:1808
+msgid " Logical"
+msgstr " Logische"
+
+#. odd flag on end
+#. type id
+#. type name
+#: fdisk/cfdisk.c:1846 fdisk/fdisk.c:1059 fdisk/fdisk.c:1208
+#: fdisk/fdisksgilabel.c:224 fdisk/fdisksunlabel.c:646 fdisk/sfdisk.c:560
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: fdisk/cfdisk.c:1852
+#, c-format
+msgid "Boot (%02X)"
+msgstr "Boot (%02X)"
+
+#: fdisk/cfdisk.c:1854 fdisk/cfdisk.c:2342
+#, c-format
+msgid "Unknown (%02X)"
+msgstr "Unbekannt (%02X)"
+
+#: fdisk/cfdisk.c:1856
+#, c-format
+msgid "None (%02X)"
+msgstr "Keine (%02X)"
+
+#: fdisk/cfdisk.c:1891 fdisk/cfdisk.c:1983
+#, c-format
+msgid "Partition Table for %s\n"
+msgstr "Partitionstabelle von %s\n"
+
+#: fdisk/cfdisk.c:1893
+msgid " First Last\n"
+msgstr " Erster Letzter\n"
+
+#: fdisk/cfdisk.c:1894
+msgid ""
+" # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n"
+msgstr ""
+" # Typ Sektor Sektor Offset Länge Dateisystemtyp (ID) Flags\n"
+
+#: fdisk/cfdisk.c:1895
+msgid ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+msgstr ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+
+#: fdisk/cfdisk.c:1985
+msgid " ---Starting--- ----Ending---- Start Number of\n"
+msgstr " ---Anfangs---- -----End------ Start Anzahl der\n"
+
+#: fdisk/cfdisk.c:1986
+msgid " # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n"
+msgstr " # Flags Kopf Sekt Zyl. ID Kopf Sekt Zyl Sektor Sektoren\n"
+
+#: fdisk/cfdisk.c:1987
+msgid "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+msgstr "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+
+#: fdisk/cfdisk.c:2020
+#, fuzzy
+msgid "Raw"
+msgstr "\"Roh\""
+
+#: fdisk/cfdisk.c:2020
+#, fuzzy
+msgid "Print the table using raw data format"
+msgstr "Die \"rohen\" Daten der Tabelle ausgeben"
+
+#: fdisk/cfdisk.c:2021 fdisk/cfdisk.c:2123
+msgid "Sectors"
+msgstr "Sektoren"
+
+#: fdisk/cfdisk.c:2021
+msgid "Print the table ordered by sectors"
+msgstr "Die Tabelle nach Sektoren sortiert ausgeben"
+
+#: fdisk/cfdisk.c:2022
+msgid "Table"
+msgstr "Tabelle"
+
+# "Nur die Partitionstabelle ausgeben" (joey)
+#: fdisk/cfdisk.c:2022
+msgid "Just print the partition table"
+msgstr "Einfach die Tabelle ausgeben"
+
+#: fdisk/cfdisk.c:2023
+msgid "Don't print the table"
+msgstr "Zeige die Tabelle nicht an"
+
+#: fdisk/cfdisk.c:2051
+msgid "Help Screen for cfdisk "
+msgstr "Hilfe für cfdisk "
+
+#: fdisk/cfdisk.c:2053
+msgid "This is cfdisk, a curses based disk partitioning program, which"
+msgstr "Dies ist cfdisk, ein Programm das curses benutzt und es ihnen"
+
+#: fdisk/cfdisk.c:2054
+msgid "allows you to create, delete and modify partitions on your hard"
+msgstr "erlaubt, auf Ihren Festplatten Partitionen anzulegen, zu löschen"
+
+#: fdisk/cfdisk.c:2055
+msgid "disk drive."
+msgstr "und zu verändern."
+
+#: fdisk/cfdisk.c:2057
+msgid "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+msgstr "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+
+# "Befehl"
+#: fdisk/cfdisk.c:2059
+msgid "Command Meaning"
+msgstr "Kommando Bedeutung"
+
+#: fdisk/cfdisk.c:2060
+msgid "------- -------"
+msgstr "-------- ---------"
+
+# " b Wechselt zwischen bootfähig und nicht bootfähig."
+#: fdisk/cfdisk.c:2061
+msgid " b Toggle bootable flag of the current partition"
+msgstr " b (De)Aktiviere das bootbar-flag der aktuellen Partition"
+
+#: fdisk/cfdisk.c:2062
+msgid " d Delete the current partition"
+msgstr " d Lösche die aktuelle Partition"
+
+#: fdisk/cfdisk.c:2063
+msgid " g Change cylinders, heads, sectors-per-track parameters"
+msgstr ""
+" g Ändere die Anzahl der Zylinder, Köpfe und Sektoren pro Spur"
+
+#: fdisk/cfdisk.c:2064
+msgid " WARNING: This option should only be used by people who"
+msgstr " WARNUNG: Diese Funktion sollte nur von Leuten benutzt"
+
+#: fdisk/cfdisk.c:2065
+msgid " know what they are doing."
+msgstr " werden, die wissen, was sie tun."
+
+#: fdisk/cfdisk.c:2066
+msgid " h Print this screen"
+msgstr " h Zeigt diese Hilfe"
+
+#: fdisk/cfdisk.c:2067
+msgid " m Maximize disk usage of the current partition"
+msgstr " m Maximieren der Nutzung der aktuellen Partition"
+
+#: fdisk/cfdisk.c:2068
+msgid " Note: This may make the partition incompatible with"
+msgstr ""
+" Beachten Sie, daß dies die Partition nicht mehr kompatibel"
+
+#: fdisk/cfdisk.c:2069
+msgid " DOS, OS/2, ..."
+msgstr " zu DOS, OS/2, ... machen kann"
+
+#: fdisk/cfdisk.c:2070
+msgid " n Create new partition from free space"
+msgstr " n Erzeuge aus dem freien Bereich eine neue Partition"
+
+#: fdisk/cfdisk.c:2071
+msgid " p Print partition table to the screen or to a file"
+msgstr ""
+" p Gib die Partitionstabelle auf dem Bildschirm oder in eine Datei "
+"aus"
+
+# "verschiedene"
+#: fdisk/cfdisk.c:2072
+msgid " There are several different formats for the partition"
+msgstr " Es gibt mehrere Formate für die Partitionstabelle, aus"
+
+#: fdisk/cfdisk.c:2073
+msgid " that you can choose from:"
+msgstr " denen man wählen kann"
+
+#: fdisk/cfdisk.c:2074
+msgid " r - Raw data (exactly what would be written to disk)"
+msgstr ""
+" r - ťRoheŤ Daten (was auf die Festplatte geschrieben würde)"
+
+#: fdisk/cfdisk.c:2075
+msgid " s - Table ordered by sectors"
+msgstr " s - Tabelle nach Sektoren sortiert"
+
+#: fdisk/cfdisk.c:2076
+msgid " t - Table in raw format"
+msgstr " t - Tabelle mit den reinen Daten"
+
+#: fdisk/cfdisk.c:2077
+msgid " q Quit program without writing partition table"
+msgstr ""
+" q Beende das Programm ohne die Partitionstabelle zu schreiben"
+
+#: fdisk/cfdisk.c:2078
+msgid " t Change the filesystem type"
+msgstr " t Ändere den Dateisystemtyp"
+
+# " u Einheit der Größenanzeige ändern"
+#: fdisk/cfdisk.c:2079
+msgid " u Change units of the partition size display"
+msgstr " u Wechsle zwischen den Einheiten für die Größenanzeige"
+
+#: fdisk/cfdisk.c:2080
+msgid " Rotates through Mb, sectors and cylinders"
+msgstr " Wechselt zwischen MB, Sektoren und Zylindern"
+
+#: fdisk/cfdisk.c:2081
+msgid " W Write partition table to disk (must enter upper case W)"
+msgstr ""
+" W Schreibe die Partitionstabelle auf die Festplatte (großes W)"
+
+# or "Da dieses ..." ?
+#: fdisk/cfdisk.c:2082
+msgid " Since this might destroy data on the disk, you must"
+msgstr " Da dies Daten auf der Festplatte zerstören kann, müssen"
+
+#: fdisk/cfdisk.c:2083
+msgid " either confirm or deny the write by entering `yes' or"
+msgstr " Sie das Schreiben mit ťyesŤ oder ťnoŤ bestätigen oder"
+
+#: fdisk/cfdisk.c:2084
+msgid " `no'"
+msgstr " ablehnen"
+
+#: fdisk/cfdisk.c:2085
+msgid "Up Arrow Move cursor to the previous partition"
+msgstr "Pfeil-hoch Bewege den Cursor zur vorherigen Partition"
+
+#: fdisk/cfdisk.c:2086
+msgid "Down Arrow Move cursor to the next partition"
+msgstr "Pfeil-runter Bewege den Cursor zur nächsten Partition"
+
+# "Strg" ?
+# "Baut den Bildschirm neu auf"
+#: fdisk/cfdisk.c:2087
+msgid "CTRL-L Redraws the screen"
+msgstr "Ctrl-L Zeichnet den Bildschirm erneut"
+
+#: fdisk/cfdisk.c:2088
+msgid " ? Print this screen"
+msgstr " ? Zeigt diese Hilfe"
+
+# "Hinweis"
+#: fdisk/cfdisk.c:2090
+msgid "Note: All of the commands can be entered with either upper or lower"
+msgstr "Alle Kommandos können sowohl als Klein- oder Großbuchstaben"
+
+#: fdisk/cfdisk.c:2091
+msgid "case letters (except for Writes)."
+msgstr "eingegeben werden (außer W zum Schreiben)."
+
+#: fdisk/cfdisk.c:2121 fdisk/cfdisk.c:2423 fdisk/fdisksunlabel.c:305
+#: fdisk/fdisksunlabel.c:307
+msgid "Cylinders"
+msgstr " Zylinder"
+
+#: fdisk/cfdisk.c:2121
+msgid "Change cylinder geometry"
+msgstr "Ändern der Anzahl der Zylinder"
+
+#: fdisk/cfdisk.c:2122 fdisk/fdisksunlabel.c:302
+msgid "Heads"
+msgstr "Köpfe"
+
+#: fdisk/cfdisk.c:2122
+msgid "Change head geometry"
+msgstr "Ändern der Anzahl der Köpfe"
+
+#: fdisk/cfdisk.c:2123
+msgid "Change sector geometry"
+msgstr "Ändern der Anzahl der Sektoren pro Spur"
+
+#: fdisk/cfdisk.c:2124
+msgid "Done"
+msgstr "Fertig"
+
+#: fdisk/cfdisk.c:2124
+msgid "Done with changing geometry"
+msgstr "Ändern der Geometrie beenden"
+
+#: fdisk/cfdisk.c:2137
+msgid "Enter the number of cylinders: "
+msgstr "Geben Sie die Anzahl der Zylinder ein: "
+
+#: fdisk/cfdisk.c:2144 fdisk/cfdisk.c:2687
+msgid "Illegal cylinders value"
+msgstr "Ungültiger Wert für die Anzahl der Zylinder"
+
+#: fdisk/cfdisk.c:2150
+msgid "Enter the number of heads: "
+msgstr "Geben Sie die Anzahl der Köpfe ein: "
+
+#: fdisk/cfdisk.c:2157 fdisk/cfdisk.c:2697
+msgid "Illegal heads value"
+msgstr "Ungültiger Wert für die Anzahl der Köpfe"
+
+#: fdisk/cfdisk.c:2163
+msgid "Enter the number of sectors per track: "
+msgstr "Geben Sie die Anzahl der Sektoren pro Spur ein: "
+
+#: fdisk/cfdisk.c:2170 fdisk/cfdisk.c:2704
+msgid "Illegal sectors value"
+msgstr "Ungültiger Wert für die Anzahl der Sektoren"
+
+#: fdisk/cfdisk.c:2269
+msgid "Enter filesystem type: "
+msgstr "Geben Sie den Dateisystemtyp ein: "
+
+#: fdisk/cfdisk.c:2287
+msgid "Cannot change FS Type to empty"
+msgstr "Der Dateisystemtyp kann nicht auf ťleerŤ gesetzt werden"
+
+#: fdisk/cfdisk.c:2289
+msgid "Cannot change FS Type to extended"
+msgstr "Der Dateisystemtyp kann nicht auf ťerweitertŤ gesetzt werden"
+
+#: fdisk/cfdisk.c:2311 fdisk/fdisksunlabel.c:44
+msgid "Boot"
+msgstr "Boot"
+
+#: fdisk/cfdisk.c:2313
+#, c-format
+msgid "Unk(%02X)"
+msgstr "Unb(%02X)"
+
+#: fdisk/cfdisk.c:2316 fdisk/cfdisk.c:2319
+msgid ", NC"
+msgstr ", NC"
+
+#: fdisk/cfdisk.c:2324 fdisk/cfdisk.c:2327
+msgid "NC"
+msgstr "NC"
+
+#: fdisk/cfdisk.c:2335
+msgid "Pri/Log"
+msgstr "Pri/Log"
+
+#: fdisk/cfdisk.c:2409
+#, c-format
+msgid "Disk Drive: %s"
+msgstr "Festplatte: %s"
+
+#: fdisk/cfdisk.c:2411
+#, c-format
+msgid "Heads: %d Sectors per Track: %d Cylinders: %d"
+msgstr "Köpfe: %d Sektoren pro Spur: %d Zylinder: %d"
+
+#: fdisk/cfdisk.c:2415
+msgid "Name"
+msgstr "Name"
+
+# I currently don't know a better translation
+#: fdisk/cfdisk.c:2416
+msgid "Flags"
+msgstr "Flags"
+
+#: fdisk/cfdisk.c:2417
+msgid "Part Type"
+msgstr "Part. Typ"
+
+#: fdisk/cfdisk.c:2418
+msgid "FS Type"
+msgstr "Dateisystemtyp"
+
+#: fdisk/cfdisk.c:2419
+msgid "[Label]"
+msgstr "[Bezeichner]"
+
+#: fdisk/cfdisk.c:2421
+msgid " Sectors"
+msgstr " Sektoren"
+
+#: fdisk/cfdisk.c:2425
+msgid "Size (MB)"
+msgstr "Größe (MB)"
+
+#: fdisk/cfdisk.c:2480
+msgid "Bootable"
+msgstr "Bootbar"
+
+# "Bootfähigkeit der aktuellen Partition ändern" (joey)
+#: fdisk/cfdisk.c:2480
+msgid "Toggle bootable flag of the current partition"
+msgstr "(De)Aktiviere das bootbar-flag der aktuellen Partition"
+
+# "Löschen"
+#: fdisk/cfdisk.c:2481
+msgid "Delete"
+msgstr "Löschen"
+
+#: fdisk/cfdisk.c:2481
+msgid "Delete the current partition"
+msgstr "Löscht die aktuelle Partition"
+
+#: fdisk/cfdisk.c:2482
+msgid "Geometry"
+msgstr "Geometrie"
+
+#: fdisk/cfdisk.c:2482
+msgid "Change disk geometry (experts only)"
+msgstr "Ändern der Festplattengeometrieparameter (nur für Experten)"
+
+#: fdisk/cfdisk.c:2483
+msgid "Help"
+msgstr "Hilfe"
+
+#: fdisk/cfdisk.c:2483
+msgid "Print help screen"
+msgstr "Zeigt die Hilfe"
+
+#: fdisk/cfdisk.c:2484
+msgid "Maximize"
+msgstr "Maxim."
+
+#: fdisk/cfdisk.c:2484
+msgid "Maximize disk usage of the current partition (experts only)"
+msgstr "Maximieren der Nutzung der aktuellen Partition (nur für Experten)"
+
+#: fdisk/cfdisk.c:2485
+msgid "New"
+msgstr "Neue"
+
+# "Erzeuge aus dem freien Bereich eine neue Partition"
+#: fdisk/cfdisk.c:2485
+msgid "Create new partition from free space"
+msgstr "Neue Partition im freiem Bereich anlegen"
+
+#: fdisk/cfdisk.c:2486
+msgid "Print"
+msgstr "Ausgabe"
+
+# "Gib die Partitionstabelle auf dem Bildschirm oder in eine Datei aus"
+#: fdisk/cfdisk.c:2486
+msgid "Print partition table to the screen or to a file"
+msgstr "Partitionstabelle auf dem Bildschirm oder in Datei ausgeben"
+
+#: fdisk/cfdisk.c:2487
+msgid "Quit"
+msgstr "Ende"
+
+# "Beende das Programm ohne die Partitionstabelle zu schreiben"
+#: fdisk/cfdisk.c:2487
+msgid "Quit program without writing partition table"
+msgstr "Das Programm beenden, ohne die Partitionstabelle zu speichern"
+
+#: fdisk/cfdisk.c:2488
+msgid "Type"
+msgstr "Typ"
+
+#: fdisk/cfdisk.c:2488
+msgid "Change the filesystem type (DOS, Linux, OS/2 and so on)"
+msgstr "Ändere den Dateisystemtyp (DOS, Linux, OS/2, etc.)"
+
+# Maybe without the dot.
+#: fdisk/cfdisk.c:2489
+msgid "Units"
+msgstr "Einheit."
+
+# "Ändert die Einheiten der Größenanzeige ("
+#: fdisk/cfdisk.c:2489
+msgid "Change units of the partition size display (MB, sect, cyl)"
+msgstr "Wechsle zwischen den Einheiten für die Größenanzeige (MB, Sekt., Zyl.)"
+
+#: fdisk/cfdisk.c:2490
+msgid "Write"
+msgstr "Schreib."
+
+#: fdisk/cfdisk.c:2490
+msgid "Write partition table to disk (this might destroy data)"
+msgstr "Die Partitionstabelle schreiben (dies kann Daten zerstören)"
+
+#: fdisk/cfdisk.c:2536
+msgid "Cannot make this partition bootable"
+msgstr "Diese Partition kann nicht als bootbar markiert werden"
+
+#: fdisk/cfdisk.c:2546
+msgid "Cannot delete an empty partition"
+msgstr "Eine leere Partition kann nicht gelöscht werden"
+
+#: fdisk/cfdisk.c:2566 fdisk/cfdisk.c:2568
+msgid "Cannot maximize this partition"
+msgstr "Die Nutzung dieser Partition kann nicht maximiert werden"
+
+#: fdisk/cfdisk.c:2576
+msgid "This partition is unusable"
+msgstr "Diese Partition ist unbenutzbar"
+
+#: fdisk/cfdisk.c:2578
+msgid "This partition is already in use"
+msgstr "Diese Partition ist bereits in Benutzung"
+
+#: fdisk/cfdisk.c:2595
+msgid "Cannot change the type of an empty partition"
+msgstr "Der Dateisystemtyp einer leeren Partition kann nicht geändert werden"
+
+#: fdisk/cfdisk.c:2620 fdisk/cfdisk.c:2626
+msgid "No more partitions"
+msgstr "Keine weiteren Partitionen"
+
+# "Ungültige Taste"
+#: fdisk/cfdisk.c:2633
+msgid "Illegal command"
+msgstr "Unzulässiges Kommando"
+
+#: fdisk/cfdisk.c:2643
+msgid "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+msgstr "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+
+#. Unfortunately, xgettext does not handle multi-line strings
+#. so, let's use explicit \n's instead
+#: fdisk/cfdisk.c:2650
+#, c-format
+msgid ""
+"\n"
+"Usage:\n"
+"Print version:\n"
+" %s -v\n"
+"Print partition table:\n"
+" %s -P {r|s|t} [options] device\n"
+"Interactive use:\n"
+" %s [options] device\n"
+"\n"
+"Options:\n"
+"-a: Use arrow instead of highlighting;\n"
+"-z: Start with a zero partition table, instead of reading the pt from disk;\n"
+"-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n"
+" the number of heads and the number of sectors/track.\n"
+"\n"
+msgstr ""
+"\n"
+"Aufruf:\n"
+"Ausgabe der Version:\n"
+" %s -v\n"
+"Ausgabe der Partitionstabelle:\n"
+" %s -P {r|s|t} [Optionen] GERÄTEDATEI\n"
+"Interaktive Benutzung:\n"
+" %s [Optionen] GERÄTEDATEI\n"
+"\n"
+"Optionen:\n"
+"-a: Use arrow instead of highlighting;\n"
+"-z: Start with a zero partition table, instead of reading the pt from disk;\n"
+"-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n"
+" the number of heads and the number of sectors/track.\n"
+"\n"
+
+#: fdisk/fdisk.c:241
+msgid ""
+"Usage: fdisk [-b SSZ] [-u] [DISK] Change partition table\n"
+" fdisk -l [-b SSZ] [-u] [DISK] List partition table(s)\n"
+" fdisk -s PARTITION Give partition size(s) in blocks\n"
+" fdisk -v Give fdisk version\n"
+"Here DISK is something like /dev/hdb or /dev/sda\n"
+"and PARTITION is something like /dev/hda7\n"
+"-u: give Start and End in sector (instead of cylinder) units\n"
+"-b 2048: (for certain MO drives) use 2048-byte sectors\n"
+msgstr ""
+"Aufruf: fdisk [-b SSZ] [-u] [Festplatte] Partitionstabelle bearbeiten\n"
+" fdisk -l [-b SSZ] [-u] [Festplatte] Partitionstabelle ausgeben\n"
+" fdisk -s Partition Größe einer Partition in "
+"Blöcken\n"
+" fdisk -v Version anzeigen\n"
+"\n"
+"Festplatte ist zum Beispiel /dev/hda oder /dev/sda\n"
+"Partition ist zum Beispiel /dev/hda7\n"
+"\n"
+"-u: Anfang und Ende werden in Sektoren statt in Zylindern angegeben\n"
+"-b 2048: (bestimmte MO-Geräte) benutze 2048 Byte Sektoren\n"
+
+#: fdisk/fdisk.c:251
+msgid "A disk block device is needed.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:254
+msgid ""
+"Given name does not refer to a partition,\n"
+"or maybe not even to a block device.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:258
+#, c-format
+msgid "Unable to open %s\n"
+msgstr "Konnte %s nicht öffnen\n"
+
+#: fdisk/fdisk.c:261
+#, c-format
+msgid "Unable to read %s\n"
+msgstr "Konnte %s nicht lesen\n"
+
+# "Konnte in %s nicht positionieren"
+#: fdisk/fdisk.c:264
+#, c-format
+msgid "Unable to seek on %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:267
+#, c-format
+msgid "Unable to write %s\n"
+msgstr "Konnte %s nicht schreiben\n"
+
+#: fdisk/fdisk.c:270
+msgid "Unable to allocate any more memory\n"
+msgstr "Konnte keinen weiteren Speicher reservieren\n"
+
+#: fdisk/fdisk.c:272
+msgid "Fatal error\n"
+msgstr "Fataler Fehler\n"
+
+#: fdisk/fdisk.c:283 fdisk/fdisk.c:302 fdisk/fdisk.c:320 fdisk/fdisk.c:327
+#: fdisk/fdisk.c:350 fdisk/fdisk.c:368 fdisk/fdiskbsdlabel.c:105
+msgid "Command action"
+msgstr "Kommando Bedeutung"
+
+#: fdisk/fdisk.c:284
+msgid " a toggle a read only flag"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:285 fdisk/fdisk.c:329
+msgid " b edit bsd disklabel"
+msgstr " b ťbsd disklabelŤ bearbeiten"
+
+#: fdisk/fdisk.c:286
+msgid " c toggle the mountable flag"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:287 fdisk/fdisk.c:306 fdisk/fdisk.c:331
+msgid " d delete a partition"
+msgstr " d Eine Partition löschen"
+
+#: fdisk/fdisk.c:288 fdisk/fdisk.c:307 fdisk/fdisk.c:332
+msgid " l list known partition types"
+msgstr " l Die bekannten Dateisystemtypen anzeigen"
+
+#. sun
+#: fdisk/fdisk.c:289 fdisk/fdisk.c:308 fdisk/fdisk.c:321 fdisk/fdisk.c:333
+#: fdisk/fdisk.c:358 fdisk/fdisk.c:375 fdisk/fdiskbsdlabel.c:110
+msgid " m print this menu"
+msgstr " m Dieses Menü anzeigen"
+
+#: fdisk/fdisk.c:290 fdisk/fdisk.c:309 fdisk/fdisk.c:334
+msgid " n add a new partition"
+msgstr " n Eine neue Partition anlegen"
+
+#: fdisk/fdisk.c:291 fdisk/fdisk.c:310 fdisk/fdisk.c:322 fdisk/fdisk.c:335
+msgid " o create a new empty DOS partition table"
+msgstr " o Eine neue leere DOS Partitionstabelle anlegen"
+
+#: fdisk/fdisk.c:292 fdisk/fdisk.c:311 fdisk/fdisk.c:336 fdisk/fdisk.c:359
+#: fdisk/fdisk.c:376
+msgid " p print the partition table"
+msgstr " p Die Partitionstabelle anzeigen"
+
+#: fdisk/fdisk.c:293 fdisk/fdisk.c:312 fdisk/fdisk.c:323 fdisk/fdisk.c:337
+#: fdisk/fdisk.c:360 fdisk/fdisk.c:377 fdisk/fdiskbsdlabel.c:113
+msgid " q quit without saving changes"
+msgstr " q Ende ohne Speichern der Änderungen"
+
+#: fdisk/fdisk.c:294 fdisk/fdisk.c:313 fdisk/fdisk.c:324 fdisk/fdisk.c:338
+msgid " s create a new empty Sun disklabel"
+msgstr " s Einen neuen leeren ťSun disklabelŤ anlegen"
+
+#. sun
+#: fdisk/fdisk.c:295 fdisk/fdisk.c:314 fdisk/fdisk.c:339
+msgid " t change a partition's system id"
+msgstr " t Den Dateisystemtyp einer Partition ändern"
+
+#: fdisk/fdisk.c:296 fdisk/fdisk.c:315 fdisk/fdisk.c:340
+msgid " u change display/entry units"
+msgstr " u Die Einheit für die Anzeige/Eingabe ändern"
+
+#: fdisk/fdisk.c:297 fdisk/fdisk.c:316 fdisk/fdisk.c:341 fdisk/fdisk.c:363
+#: fdisk/fdisk.c:380
+msgid " v verify the partition table"
+msgstr " v Die Partitionstabelle überprüfen"
+
+#: fdisk/fdisk.c:298 fdisk/fdisk.c:317 fdisk/fdisk.c:342 fdisk/fdisk.c:364
+#: fdisk/fdisk.c:381
+msgid " w write table to disk and exit"
+msgstr ""
+" w Die Tabelle auf die Festplatte schreiben und das Programm beenden"
+
+#: fdisk/fdisk.c:299 fdisk/fdisk.c:343
+msgid " x extra functionality (experts only)"
+msgstr " x Zusätzliche Funktionen (nur für Experten)"
+
+#: fdisk/fdisk.c:303
+msgid " a select bootable partition"
+msgstr " a Wählen der bootbaren Partition"
+
+#. sgi flavour
+#: fdisk/fdisk.c:304
+msgid " b edit bootfile entry"
+msgstr " b Bearbeiten des ťbootfileŤ-Eintrags"
+
+#. sgi
+#: fdisk/fdisk.c:305
+msgid " c select sgi swap partition"
+msgstr " c Die sgi swap Partition auswählen"
+
+#: fdisk/fdisk.c:328
+msgid " a toggle a bootable flag"
+msgstr " a (De)Aktivieren des bootbar-Flags"
+
+#: fdisk/fdisk.c:330
+msgid " c toggle the dos compatibility flag"
+msgstr " c (De)Aktivieren des DOS Kompatibilitätsflags"
+
+#: fdisk/fdisk.c:351
+msgid " a change number of alternate cylinders"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:352 fdisk/fdisk.c:370
+msgid " c change number of cylinders"
+msgstr " c Die Anzahl der Zylinder ändern"
+
+#: fdisk/fdisk.c:353 fdisk/fdisk.c:371
+msgid " d print the raw data in the partition table"
+msgstr ""
+
+#: fdisk/fdisk.c:354
+msgid " e change number of extra sectors per cylinder"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:355 fdisk/fdisk.c:374
+msgid " h change number of heads"
+msgstr " h Die Anzahl der Köpfe ändern"
+
+#: fdisk/fdisk.c:356
+msgid " i change interleave factor"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:357
+msgid " o change rotation speed (rpm)"
+msgstr ""
+
+#: fdisk/fdisk.c:361 fdisk/fdisk.c:378 fdisk/fdiskbsdlabel.c:115
+msgid " r return to main menu"
+msgstr " r Zurück zum Hauptmenü"
+
+#: fdisk/fdisk.c:362 fdisk/fdisk.c:379
+msgid " s change number of sectors"
+msgstr " s Die Anzahl der Sektoren ändern"
+
+#: fdisk/fdisk.c:365
+msgid " y change number of physical cylinders"
+msgstr ""
+
+#: fdisk/fdisk.c:369
+msgid " b move beginning of data in a partition"
+msgstr ""
+
+#: fdisk/fdisk.c:372
+msgid " e list extended partitions"
+msgstr ""
+
+#. !sun
+#: fdisk/fdisk.c:373
+msgid " g create an IRIX partition table"
+msgstr ""
+
+#: fdisk/fdisk.c:469
+msgid "You must set"
+msgstr ""
+
+#: fdisk/fdisk.c:483
+msgid "heads"
+msgstr "Köpfe"
+
+#: fdisk/fdisk.c:485 fdisk/fdisk.c:893 fdisk/sfdisk.c:835
+msgid "sectors"
+msgstr "Sektoren"
+
+#: fdisk/fdisk.c:487 fdisk/fdisk.c:893 fdisk/fdiskbsdlabel.c:441
+#: fdisk/sfdisk.c:835
+msgid "cylinders"
+msgstr "Zylinder"
+
+#: fdisk/fdisk.c:491
+#, c-format
+msgid ""
+"%s%s.\n"
+"You can do this from the extra functions menu.\n"
+msgstr ""
+"%s%s.\n"
+"Sie können dies im Zusatzfunktionsmenü tun.\n"
+
+#: fdisk/fdisk.c:492
+msgid " and "
+msgstr " und "
+
+#: fdisk/fdisk.c:526
+msgid "Bad offset in primary extended partition\n"
+msgstr ""
+
+#: fdisk/fdisk.c:533
+#, c-format
+msgid "Warning: deleting partitions after %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:554
+#, c-format
+msgid "Warning: extra link pointer in partition table %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:562
+#, c-format
+msgid "Warning: ignoring extra data in partition table %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:588
+msgid ""
+"Building a new DOS disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:624
+msgid "You will not be able to write the partition table.\n"
+msgstr "Sie werden die Partitionstabelle nicht schreiben können.\n"
+
+#: fdisk/fdisk.c:633
+#, c-format
+msgid "Note: sector size is %d (not %d)\n"
+msgstr "Hinweis: Die Sektorgröße ist %d (nicht %d)\n"
+
+#: fdisk/fdisk.c:681
+msgid ""
+"Device contains neither a valid DOS partition table, nor Sun or SGI "
+"disklabel\n"
+msgstr ""
+"Das Gerät enthält weder eine gültige DOS-Partitionstabelle,\n"
+"noch einen Sun oder ťSGI disklabelŤ\n"
+
+#: fdisk/fdisk.c:697
+msgid "Internal error\n"
+msgstr "Interner Fehler\n"
+
+#: fdisk/fdisk.c:707
+#, c-format
+msgid "Ignoring extra extended partition %d\n"
+msgstr "Ignoriere die zusätzliche erweiterte Partition %d\n"
+
+#: fdisk/fdisk.c:714
+#, c-format
+msgid ""
+"Warning: invalid flag 0x%04x of partition table %d will be corrected by "
+"w(rite)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:735
+msgid ""
+"\n"
+"got EOF thrice - exiting..\n"
+msgstr ""
+
+#: fdisk/fdisk.c:772
+msgid "Hex code (type L to list codes): "
+msgstr "Hex code (L um eine Liste anzuzeigen): "
+
+#: fdisk/fdisk.c:811
+#, c-format
+msgid "%s (%d-%d, default %d): "
+msgstr "%s (%d-%d) [Standardwert: %d]: "
+
+#: fdisk/fdisk.c:865
+#, c-format
+msgid "Using default value %d\n"
+msgstr "Benutze den Standardwert %d\n"
+
+#: fdisk/fdisk.c:869
+msgid "Value out of range.\n"
+msgstr "Wert außerhalb des Bereichs.\n"
+
+#: fdisk/fdisk.c:876
+msgid "Partition number"
+msgstr "Partitionsnummer"
+
+#: fdisk/fdisk.c:884
+#, c-format
+msgid "Warning: partition %d has empty type\n"
+msgstr ""
+
+#: fdisk/fdisk.c:891
+msgid "cylinder"
+msgstr "Zylinder"
+
+#: fdisk/fdisk.c:891
+msgid "sector"
+msgstr "Sektor"
+
+#: fdisk/fdisk.c:900
+#, c-format
+msgid "Changing display/entry units to %s\n"
+msgstr "Die Einheit für die Anzeige/Eingabe ist nun %s\n"
+
+#: fdisk/fdisk.c:910
+#, c-format
+msgid "WARNING: Partition %d is an extended partition\n"
+msgstr "WARNUNG: Partition %d ist eine erweiterte Partition\n"
+
+#: fdisk/fdisk.c:923
+msgid "DOS Compatibility flag is set\n"
+msgstr ""
+
+#: fdisk/fdisk.c:927
+msgid "DOS Compatibility flag is not set\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1013
+#, c-format
+msgid "Partition %d does not exist yet!\n"
+msgstr "Partition %d existiert noch nicht!\n"
+
+#: fdisk/fdisk.c:1018
+msgid ""
+"Type 0 means free space to many systems\n"
+"(but not to Linux). Having partitions of\n"
+"type 0 is probably unwise. You can delete\n"
+"a partition using the `d' command.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1027
+msgid ""
+"You cannot change a partition into an extended one or vice versa\n"
+"Delete it first.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1036
+msgid ""
+"Consider leaving partition 3 as Whole disk (5),\n"
+"as SunOS/Solaris expects it and even Linux likes it.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1042
+msgid ""
+"Consider leaving partition 9 as volume header (0),\n"
+"and partition 11 as entire volume (6)as IRIX expects it.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1056
+#, c-format
+msgid "Changed system type of partition %d to %x (%s)\n"
+msgstr "Der Dateisystemtyp der Partition %d ist nun %x (%s)\n"
+
+#: fdisk/fdisk.c:1109
+#, c-format
+msgid "Partition %d has different physical/logical beginnings (non-Linux?):\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1111 fdisk/fdisk.c:1119 fdisk/fdisk.c:1128 fdisk/fdisk.c:1137
+#, c-format
+msgid " phys=(%d, %d, %d) "
+msgstr ""
+
+#: fdisk/fdisk.c:1112 fdisk/fdisk.c:1120
+#, c-format
+msgid "logical=(%d, %d, %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1117
+#, c-format
+msgid "Partition %d has different physical/logical endings:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1126
+#, c-format
+msgid "Partition %i does not start on cylinder boundary:\n"
+msgstr "Partition %i beginnt nicht an einer Zylindergrenze:\n"
+
+#: fdisk/fdisk.c:1129
+#, c-format
+msgid "should be (%d, %d, 1)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1135
+#, c-format
+msgid "Partition %i does not end on cylinder boundary:\n"
+msgstr "Partition %i endet nicht an einer Zylindergrenze:\n"
+
+#: fdisk/fdisk.c:1138
+#, c-format
+msgid "should be (%d, %d, %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1145
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * %d bytes\n"
+"\n"
+msgstr ""
+"\n"
+"Festplatte %s: %d Köpfe, %d Sektoren, %d Zylinder\n"
+"Einheiten: %s mit %d * %d Bytes\n"
+"\n"
+
+#. FIXME! let's see how this shows up with other languagues
+#. acme@conectiva.com.br
+#: fdisk/fdisk.c:1182
+#, c-format
+msgid "%*s Boot Start End Blocks Id System\n"
+msgstr "%*s boot. Anfang Ende Blöcke Id Dateisystemtyp\n"
+
+#: fdisk/fdisk.c:1183 fdisk/fdisksgilabel.c:207 fdisk/fdisksunlabel.c:631
+msgid "Device"
+msgstr "Gerät"
+
+#: fdisk/fdisk.c:1223
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"\n"
+msgstr ""
+"\n"
+"Festplatte %s: %d Köpfe, %d Sektoren, %d Zylinder\n"
+"\n"
+
+#: fdisk/fdisk.c:1225
+msgid "Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1264
+#, c-format
+msgid "Warning: partition %d contains sector 0\n"
+msgstr "Warnung: Partition %d enthält Sektor 0\n"
+
+#: fdisk/fdisk.c:1267
+#, c-format
+msgid "Partition %d: head %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1270
+#, c-format
+msgid "Partition %d: sector %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1273
+#, c-format
+msgid "Partitions %d: cylinder %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1277
+#, c-format
+msgid "Partition %d: previous sectors %d disagrees with total %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1307
+#, c-format
+msgid "Warning: bad start-of-data in partition %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1315
+#, c-format
+msgid "Warning: partition %d overlaps partition %d.\n"
+msgstr "Warnung: Partition %d überlappt mit Partition %d.\n"
+
+#: fdisk/fdisk.c:1333
+#, c-format
+msgid "Warning: partition %d is empty\n"
+msgstr "Warnung: Partition %d ist leer\n"
+
+#: fdisk/fdisk.c:1338
+#, c-format
+msgid "Logical partition %d not entirely in partition %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1344
+#, c-format
+msgid "Total allocated sectors %d greater than the maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1347
+#, c-format
+msgid "%d unallocated sectors\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1359 fdisk/fdisksgilabel.c:684 fdisk/fdisksunlabel.c:479
+#, c-format
+msgid "Partition %d is already defined. Delete it before re-adding it.\n"
+msgstr ""
+
+# %s can be "Sektor" or "Zylinder".
+#: fdisk/fdisk.c:1380 fdisk/fdiskbsdlabel.c:252 fdisk/fdisksgilabel.c:706
+#: fdisk/fdisksunlabel.c:494
+#, c-format
+msgid "First %s"
+msgstr "Erster %s"
+
+#: fdisk/fdisk.c:1395 fdisk/fdisksunlabel.c:519
+#, c-format
+msgid "Sector %d is already allocated\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1421
+msgid "No free sectors available\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1431 fdisk/fdiskbsdlabel.c:256 fdisk/fdisksunlabel.c:529
+#, c-format
+msgid "Last %s or +size or +sizeM or +sizeK"
+msgstr "Letzter %s oder +Größe, +GrößeK oder +GrößeM"
+
+#: fdisk/fdisk.c:1461
+#, c-format
+msgid "Warning: partition %d has an odd number of sectors.\n"
+msgstr "Warnung: Partition %d hat eine ungerade Anzahl an Sektoren.\n"
+
+#: fdisk/fdisk.c:1498 fdisk/fdiskbsdlabel.c:590
+msgid "The maximum number of partitions has been created\n"
+msgstr "Die maximale Anzahl von Partitionen wurde erzeugt\n"
+
+#: fdisk/fdisk.c:1508
+msgid "You must delete some partition and add an extended partition first\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1512
+#, c-format
+msgid ""
+"Command action\n"
+" %s\n"
+" p primary partition (1-4)\n"
+msgstr ""
+"Kommando Aktion\n"
+" %s\n"
+" p Primäre Partition (1-4)\n"
+
+#: fdisk/fdisk.c:1514
+msgid "l logical (5 or over)"
+msgstr "l Logische Partition (5 oder größer)"
+
+#: fdisk/fdisk.c:1514
+msgid "e extended"
+msgstr "e Erweiterte"
+
+#: fdisk/fdisk.c:1531
+#, c-format
+msgid "Invalid partition number for type `%c'\n"
+msgstr "Ungültige Partitionsnummer für den Typ ť%cŤ\n"
+
+#: fdisk/fdisk.c:1563
+msgid ""
+"The partition table has been altered!\n"
+"\n"
+msgstr ""
+"Die Partitionstabelle wurde verändert!\n"
+"\n"
+
+#: fdisk/fdisk.c:1565
+msgid "Calling ioctl() to re-read partition table.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1582
+msgid "Syncing disks.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1587
+#, c-format
+msgid ""
+"Re-read table failed with error %d: %s.\n"
+"Reboot your system to ensure the partition table is updated.\n"
+msgstr ""
+"Das Kernel konnte die Partitionstabelle nicht erneut lesen (Fehler %d):\n"
+"%s\n"
+"Rebooten Sie das System, um sicherzustellen, daß die Partitionstabelle neu "
+"gelesen wird.\n"
+
+#: fdisk/fdisk.c:1593
+msgid ""
+"\n"
+"WARNING: If you have created or modified any DOS 6.x\n"
+"partitions, please see the fdisk manual page for additional\n"
+"information.\n"
+msgstr ""
+"\n"
+"WARNUNG: Wenn Sie eine DOS 6.x Partition angelegt\n"
+"oder verändert haben, dann schauen Sie bitte in die\n"
+"fdisk-manual-Seite nach weiteren Informationen\n"
+
+#: fdisk/fdisk.c:1624
+#, c-format
+msgid "Device: %s\n"
+msgstr "Gerät: %s\n"
+
+#: fdisk/fdisk.c:1639
+#, c-format
+msgid "Partition %d has no data area\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1645
+msgid "New beginning of data"
+msgstr ""
+
+# That sounds pretty ummm...
+#: fdisk/fdisk.c:1659
+msgid "Expert command (m for help): "
+msgstr "Expertenkommando (m für Hilfe): "
+
+#: fdisk/fdisk.c:1670
+msgid "Number of cylinders"
+msgstr "Anzahl der Zylinder"
+
+#: fdisk/fdisk.c:1691
+msgid "Number of heads"
+msgstr "Anzahl der Köpfe"
+
+#: fdisk/fdisk.c:1716
+msgid "Number of sectors"
+msgstr "Anzahl der Sektoren"
+
+#: fdisk/fdisk.c:1719
+msgid "Warning: setting sector offset for DOS compatiblity\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1781
+#, c-format
+msgid "Disk %s doesn't contain a valid partition table\n"
+msgstr "Festplatte %s enthält keine gültige Partitionstabelle\n"
+
+#: fdisk/fdisk.c:1795
+#, c-format
+msgid "Cannot open %s\n"
+msgstr "Konnte %s nicht öffnen\n"
+
+#: fdisk/fdisk.c:1861
+msgid "This kernel finds the sector size itself - -b option ignored\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1864
+msgid ""
+"Warning: the -b (set sector size) option should be used with one specified "
+"device\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1985
+#, c-format
+msgid "Using %s as default device!\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1991
+msgid "Command (m for help): "
+msgstr "Kommando (m für Hilfe): "
+
+#: fdisk/fdisk.c:2005
+#, c-format
+msgid ""
+"\n"
+"The current boot file is: %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:2007
+msgid "Please enter the name of the new boot file: "
+msgstr ""
+
+#: fdisk/fdisk.c:2009
+msgid "Boot file unchanged\n"
+msgstr ""
+
+#: fdisk/fdisk.c:2069
+msgid ""
+"\n"
+"\tSorry, no experts menu for SGI partition tables available.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdiskaixlabel.c:29
+msgid ""
+"\n"
+"\tThere is a valid AIX label on this disk.\n"
+"\tUnfortunately Linux cannot handle these\n"
+"\tdisks at the moment. Nevertheless some\n"
+"\tadvice:\n"
+"\t1. fdisk will destroy its contents on write.\n"
+"\t2. Be sure that this disk is NOT a still vital\n"
+"\t part of a volume group. (Otherwise you may\n"
+"\t erase the other disks as well, if unmirrored.)\n"
+"\t3. Before deleting this physical volume be sure\n"
+"\t to remove the disk logically from your AIX\n"
+"\t machine. (Otherwise you become an AIXpert)."
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:97
+#, c-format
+msgid ""
+"\n"
+"BSD label for device: %s\n"
+msgstr ""
+"\n"
+"ťBSD labelŤ von %s\n"
+
+#: fdisk/fdiskbsdlabel.c:106
+msgid " d delete a BSD partition"
+msgstr " d Eine BSD-Partition löschen"
+
+#: fdisk/fdiskbsdlabel.c:107
+msgid " e edit drive data"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:108
+msgid " i install bootstrap"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:109
+msgid " l list known filesystem types"
+msgstr " l Die bekannten Dateisystemtypen anzeigen"
+
+#: fdisk/fdiskbsdlabel.c:111
+msgid " n add a new BSD partition"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:112
+msgid " p print BSD partition table"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:117
+msgid " s show complete disklabel"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:118
+msgid " t change a partition's filesystem id"
+msgstr " t Den Dateisystemtyp einer Partition ändern"
+
+#: fdisk/fdiskbsdlabel.c:119
+msgid " w write disklabel to disk"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:121
+msgid " x link BSD partition to non-BSD partition"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:146
+#, c-format
+msgid "Partition %s%d has invalid starting sector 0.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:150
+#, c-format
+msgid "Reading disklabel of %s%d at sector %d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:159
+#, c-format
+msgid "There is no *BSD partition on %s.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:174
+msgid "BSD disklabel command (m for help): "
+msgstr "ťBSD disklabelŤ Kommando (m für Hilfe): "
+
+#: fdisk/fdiskbsdlabel.c:286
+#, c-format
+msgid "type: %s\n"
+msgstr "Typ: %s\n"
+
+#: fdisk/fdiskbsdlabel.c:288
+#, c-format
+msgid "type: %d\n"
+msgstr "Typ: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:289
+#, c-format
+msgid "disk: %.*s\n"
+msgstr "Festplatte: %.*s\n"
+
+#: fdisk/fdiskbsdlabel.c:290
+#, c-format
+msgid "label: %.*s\n"
+msgstr ""
+
+# I currently don't know a better translation
+#: fdisk/fdiskbsdlabel.c:291
+msgid "flags:"
+msgstr "Flags:"
+
+#: fdisk/fdiskbsdlabel.c:293
+msgid " removable"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:295
+msgid " ecc"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:297
+msgid " badsect"
+msgstr ""
+
+#. On various machines the fields of *lp are short/int/long
+#. In order to avoid problems, we cast them all to long.
+#: fdisk/fdiskbsdlabel.c:301
+#, c-format
+msgid "bytes/sector: %ld\n"
+msgstr "Bytes/Sektor: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:302
+#, c-format
+msgid "sectors/track: %ld\n"
+msgstr "Sektoren/Spur: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:303
+#, c-format
+msgid "tracks/cylinder: %ld\n"
+msgstr "Spuren/Zylinder: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:304
+#, c-format
+msgid "sectors/cylinder: %ld\n"
+msgstr "Sektoren/Zylinder: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:305
+#, c-format
+msgid "cylinders: %ld\n"
+msgstr "Zylinder: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:306
+#, c-format
+msgid "rpm: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:307
+#, c-format
+msgid "interleave: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:308
+#, c-format
+msgid "trackskew: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:309
+#, c-format
+msgid "cylinderskew: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:310
+#, c-format
+msgid "headswitch: %ld\t\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:311
+#, c-format
+msgid "track-to-track seek: %ld\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:312
+msgid "drivedata: "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:321
+#, c-format
+msgid ""
+"\n"
+"%d partitions:\n"
+msgstr ""
+"\n"
+"%d Partitionen:\n"
+
+#: fdisk/fdiskbsdlabel.c:322
+msgid "# size offset fstype [fsize bsize cpg]\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:378
+#, c-format
+msgid "Writing disklabel to %s%d.\n"
+msgstr "Schreibe ťdisklabelŤ auf %s%d.\n"
+
+#: fdisk/fdiskbsdlabel.c:381
+#, c-format
+msgid "Writing disklabel to %s.\n"
+msgstr "Schreibe ťdisklabelŤ auf %s.\n"
+
+#: fdisk/fdiskbsdlabel.c:392
+#, c-format
+msgid "%s%d contains no disklabel.\n"
+msgstr "%s%d enthält keinen ťdisklabelŤ.\n"
+
+#: fdisk/fdiskbsdlabel.c:395
+#, c-format
+msgid "%s contains no disklabel.\n"
+msgstr "%s enthält keinen ťdisklabelŤ.\n"
+
+#: fdisk/fdiskbsdlabel.c:399
+msgid "Do you want to create a disklabel? (y/n) "
+msgstr "Wollen Sie einen ťdisklabelŤ anlegen (y/n)? "
+
+#: fdisk/fdiskbsdlabel.c:438
+msgid "bytes/sector"
+msgstr "Bytes/Sektor"
+
+#: fdisk/fdiskbsdlabel.c:439
+msgid "sectors/track"
+msgstr "Sektoren/Spur"
+
+#: fdisk/fdiskbsdlabel.c:440
+msgid "tracks/cylinder"
+msgstr "Spuren/Zylinder"
+
+#: fdisk/fdiskbsdlabel.c:448
+msgid "sectors/cylinder"
+msgstr "Sektoren/Zylinder"
+
+#: fdisk/fdiskbsdlabel.c:452
+msgid "Must be <= sectors/track * tracks/cylinder (default).\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:454
+msgid "rpm"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:455
+msgid "interleave"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:456
+msgid "trackskew"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:457
+msgid "cylinderskew"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:458
+msgid "headswitch"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:459
+msgid "track-to-track seek"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:500
+#, c-format
+msgid "Bootstrap: %sboot -> boot%s (%s): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:526
+msgid "Bootstrap overlaps with disk label!\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:547
+#, c-format
+msgid "Bootstrap installed on %s%d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:549
+#, c-format
+msgid "Bootstrap installed on %s.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:570
+#, c-format
+msgid "Partition (a-%c): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:601
+msgid "This partition already exists.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:723
+#, c-format
+msgid "Warning: too many partitions (%d, maximum is %d).\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:769
+msgid ""
+"\n"
+"Syncing disks.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:56
+msgid "SGI volhdr"
+msgstr "SGI volhdr"
+
+#: fdisk/fdisksgilabel.c:57
+msgid "SGI trkrepl"
+msgstr "SGI trkrepl"
+
+#: fdisk/fdisksgilabel.c:58
+msgid "SGI secrepl"
+msgstr "SGI secrepl"
+
+#: fdisk/fdisksgilabel.c:59
+msgid "SGI raw"
+msgstr "SGI raw"
+
+#: fdisk/fdisksgilabel.c:60
+msgid "SGI bsd"
+msgstr "SGI bsd"
+
+#: fdisk/fdisksgilabel.c:61
+msgid "SGI sysv"
+msgstr "SGI sysv"
+
+#: fdisk/fdisksgilabel.c:62
+msgid "SGI volume"
+msgstr "SGI volume"
+
+#: fdisk/fdisksgilabel.c:63
+msgid "SGI efs"
+msgstr "SGI efs"
+
+#: fdisk/fdisksgilabel.c:64
+msgid "SGI lvol"
+msgstr "SGI lvol"
+
+#: fdisk/fdisksgilabel.c:65
+msgid "SGI rlvol"
+msgstr "SGI rlvol"
+
+#: fdisk/fdisksgilabel.c:66
+msgid "SGI xfs"
+msgstr "SGI xfs"
+
+#: fdisk/fdisksgilabel.c:67
+msgid "SGI xlvol"
+msgstr "SGI xlvol"
+
+#: fdisk/fdisksgilabel.c:68
+msgid "SGI rxlvol"
+msgstr "SGI rxlvol"
+
+#. Minix 1.4b and later
+#: fdisk/fdisksgilabel.c:69 fdisk/fdisksunlabel.c:52 fdisk/i386_sys_types.c:52
+msgid "Linux swap"
+msgstr "Linux Swap"
+
+#: fdisk/fdisksgilabel.c:70 fdisk/fdisksunlabel.c:53
+msgid "Linux native"
+msgstr "Linux native"
+
+#: fdisk/fdisksgilabel.c:143
+msgid ""
+"According to MIPS Computer Systems, Inc the Label must not contain more than "
+"512 bytes\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:162
+msgid "Detected sgi disklabel with wrong checksum.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:186
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors\n"
+"%d cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:199
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"Festplatte %s (ťSGI disklabelŤ): %d Köpfe, %d Sektoren, %d Zylinder\n"
+"Einheiten: %s mit %d * 512 Bytes\n"
+"\n"
+
+#: fdisk/fdisksgilabel.c:205
+#, c-format
+msgid ""
+"----- partitions -----\n"
+"%*s Info Start End Sectors Id System\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:227
+#, c-format
+msgid ""
+"----- bootinfo -----\n"
+"Bootfile: %s\n"
+"----- directory entries -----\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:237
+#, c-format
+msgid "%2d: %-10s sector%5u size%8u\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:298
+msgid ""
+"\n"
+"Invalid Bootfile!\n"
+"\tThe bootfile must be an absolute non-zero pathname,\n"
+"\te.g. \"/unix\" or \"/unix.save\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:305
+msgid ""
+"\n"
+"\tName of Bootfile too long: 16 bytes maximum.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:310
+msgid ""
+"\n"
+"\tBootfile must have a fully qualified pathname.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:315
+msgid ""
+"\n"
+"\tBe aware, that the bootfile is not checked for existence.\n"
+"\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:343
+#, c-format
+msgid ""
+"\n"
+"\tBootfile is changed to \"%s\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:448
+msgid "More than one entire disk entry present.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:456 fdisk/fdisksunlabel.c:455
+msgid "No partitions defined\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:463
+msgid "IRIX likes when Partition 11 covers the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:465
+#, c-format
+msgid ""
+"The entire disk partition should start at block 0,\n"
+"not at diskblock %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:469
+#, c-format
+msgid ""
+"The entire disk partition is only %d diskblock large,\n"
+"but the disk is %d diskblocks long.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:476
+msgid "One Partition (#11) should cover the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:488
+#, c-format
+msgid "Partition %d does not start on cylinder boundary.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:495
+#, c-format
+msgid "Partition %d does not end on cylinder boundary.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:503
+#, c-format
+msgid "The Partition %d and %d overlap by %d sectors.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:512 fdisk/fdisksgilabel.c:532
+#, c-format
+msgid "Unused gap of %8d sectors - sectors %8d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:545
+msgid ""
+"\n"
+"The boot partition does not exist.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:549
+msgid ""
+"\n"
+"The swap partition does not exist.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:554
+msgid ""
+"\n"
+"The swap partition has no swap type.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:558
+msgid "\tYou have chosen an unusual boot file name.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:569
+msgid "Sorry You may change the Tag of non-empty partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:576
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is of type \"SGI volhdr\", the IRIX system will rely on it to\n"
+"retrieve from its directory standalone tools like sash and fx.\n"
+"Only the \"SGI volume\" entire disk section may violate this.\n"
+"Type YES if you are sure about tagging this partition differently.\n"
+msgstr ""
+
+#. rebuild freelist
+#: fdisk/fdisksgilabel.c:621
+msgid "Do You know, You got a partition overlap on the disk?\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:691
+msgid "Attempting to generate entire disk entry automatically.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:698
+msgid "The entire disk is already covered with partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:703
+msgid "You got a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:712 fdisk/fdisksgilabel.c:741
+msgid ""
+"It is highly recommended that eleventh partition\n"
+"covers the entire disk and is of type `SGI volume'\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:728
+msgid "You will get a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:733
+#, c-format
+msgid " Last %s"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:756
+msgid ""
+"Building a new SGI disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content will be unrecoverable lost.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:784
+#, c-format
+msgid "Trying to keep parameters of partition %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:786
+#, c-format
+msgid "ID=%02x\tSTART=%d\tLENGTH=%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:43 fdisk/i386_sys_types.c:6
+msgid "Empty"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:45
+msgid "SunOS root"
+msgstr "SunOS root"
+
+#: fdisk/fdisksunlabel.c:46
+msgid "SunOS swap"
+msgstr "SunOS Swap"
+
+#: fdisk/fdisksunlabel.c:47
+msgid "SunOS usr"
+msgstr "SunOS usr"
+
+#: fdisk/fdisksunlabel.c:48
+msgid "Whole disk"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:49
+msgid "SunOS stand"
+msgstr "SunOS stand"
+
+#: fdisk/fdisksunlabel.c:50
+msgid "SunOS var"
+msgstr "SunOS var"
+
+#: fdisk/fdisksunlabel.c:51
+msgid "SunOS home"
+msgstr "SunOS home"
+
+#: fdisk/fdisksunlabel.c:122
+msgid ""
+"Detected sun disklabel with wrong checksum.\n"
+"Probably you'll have to set all the values,\n"
+"e.g. heads, sectors, cylinders and partitions\n"
+"or force a fresh label (s command in main menu)\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:215
+#, c-format
+msgid "Autoconfigure found a %s%s%s\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:242
+msgid ""
+"Building a new sun disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:253
+msgid ""
+"Drive type\n"
+" ? auto configure\n"
+" 0 custom (with hardware detected defaults)"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:263
+msgid "Select type (? for auto, 0 for custom): "
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:275
+msgid "Autoconfigure failed.\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:303
+msgid "Sectors/track"
+msgstr "Sektoren/Spur"
+
+#: fdisk/fdisksunlabel.c:310
+msgid "Alternate cylinders"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:313
+msgid "Physical cylinders"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:316 fdisk/fdisksunlabel.c:681
+msgid "Rotation speed (rpm)"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:318 fdisk/fdisksunlabel.c:674
+msgid "Interleave factor"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:321 fdisk/fdisksunlabel.c:667
+msgid "Extra sectors per cylinder"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:334
+msgid "You may change all the disk params from the x menu"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+msgid "3,5\" floppy"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+msgid "Linux custom"
+msgstr "Linux custom"
+
+#: fdisk/fdisksunlabel.c:418
+#, c-format
+msgid "Partition %d doesn't end on cylinder boundary\n"
+msgstr "Partition %d endet nicht an einer Zylindergrenze\n"
+
+#: fdisk/fdisksunlabel.c:438
+#, c-format
+msgid "Partition %d overlaps with others in sectors %d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:460
+#, c-format
+msgid "Unused gap - sectors 0-%d\n"
+msgstr "Unbenutzter Bereich - Sektor 0-%d\n"
+
+#: fdisk/fdisksunlabel.c:462 fdisk/fdisksunlabel.c:466
+#, c-format
+msgid "Unused gap - sectors %d-%d\n"
+msgstr "Unbenutzter Bereich - Sektor %d-%d\n"
+
+#: fdisk/fdisksunlabel.c:489
+msgid ""
+"Other partitions already cover the whole disk.\n"
+"Delete some/shrink them before retry.\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:547
+#, c-format
+msgid ""
+"You haven't covered the whole disk with the 3rd partition, but your value\n"
+"%d %s covers some other partition. Your entry has been changed\n"
+"to %d %s\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:567
+#, c-format
+msgid ""
+"If you want to maintain SunOS/Solaris compatibility, consider leaving this\n"
+"partition as Whole disk (5), starting at 0, with %u sectors\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:580
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n"
+"there may destroy your partition table and bootblock.\n"
+"Type YES if you're very sure you would like that partition\n"
+"tagged with 82 (Linux swap): "
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:611
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n"
+"%d cylinders, %d alternate cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:625
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"Festplatte %s (ťSun disklabelŤ): %d Köpfe, %d Sektoren, %d Zylinder\n"
+"Einheiten: %s mit %d * 512 Bytes\n"
+"\n"
+
+#: fdisk/fdisksunlabel.c:630
+#, c-format
+msgid "%*s Flag Start End Blocks Id System\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:655
+msgid "Number of alternate cylinders"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:688
+msgid "Number of physical cylinders"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:7
+msgid "FAT12"
+msgstr "FAT12"
+
+#: fdisk/i386_sys_types.c:8
+msgid "XENIX root"
+msgstr "XENIX root"
+
+#: fdisk/i386_sys_types.c:9
+msgid "XENIX usr"
+msgstr "XENIX usr"
+
+#: fdisk/i386_sys_types.c:10
+msgid "FAT16 <32M"
+msgstr "FAT16 <32M"
+
+#: fdisk/i386_sys_types.c:11
+msgid "Extended"
+msgstr "Erweiterte"
+
+#. DOS 3.3+ extended partition
+#: fdisk/i386_sys_types.c:12
+msgid "FAT16"
+msgstr "FAT16"
+
+#. DOS 16-bit >=32M
+#: fdisk/i386_sys_types.c:13
+msgid "HPFS/NTFS"
+msgstr "HPFS/NTFS"
+
+#. OS/2 IFS, eg, HPFS or NTFS or QNX
+#: fdisk/i386_sys_types.c:14
+msgid "AIX"
+msgstr "AIX"
+
+# "bootfähig"
+#. AIX boot (AIX -- PS/2 port) or SplitDrive
+#: fdisk/i386_sys_types.c:15
+msgid "AIX bootable"
+msgstr "AIX bootfähig"
+
+#. AIX data or Coherent
+#: fdisk/i386_sys_types.c:16
+msgid "OS/2 Boot Manager"
+msgstr "OS/2 Bootmanager"
+
+#. OS/2 Boot Manager
+#: fdisk/i386_sys_types.c:17
+msgid "Win95 FAT32"
+msgstr "Win95 FAT32"
+
+#: fdisk/i386_sys_types.c:18
+msgid "Win95 FAT32 (LBA)"
+msgstr "Win95 FAT32 (LBA)"
+
+#. LBA really is `Extended Int 13h'
+#: fdisk/i386_sys_types.c:19
+msgid "Win95 FAT16 (LBA)"
+msgstr "Win95 FAT16 (LBA)"
+
+#: fdisk/i386_sys_types.c:20
+msgid "Win95 Ext'd (LBA)"
+msgstr "Win95 Erw. (LBA)"
+
+#: fdisk/i386_sys_types.c:21
+msgid "OPUS"
+msgstr "OPUS"
+
+#: fdisk/i386_sys_types.c:22
+msgid "Hidden FAT12"
+msgstr "Verst. FAT12"
+
+#: fdisk/i386_sys_types.c:23
+msgid "Compaq diagnostics"
+msgstr "Compaq Diagnostics"
+
+#: fdisk/i386_sys_types.c:24
+msgid "Hidden FAT16 <32M"
+msgstr "Verst. FAT16 <32M"
+
+#: fdisk/i386_sys_types.c:25
+msgid "Hidden FAT16"
+msgstr "Verst. FAT16"
+
+#: fdisk/i386_sys_types.c:26
+msgid "Hidden HPFS/NTFS"
+msgstr "Verst. HPFS/NTFS"
+
+#: fdisk/i386_sys_types.c:27
+msgid "AST Windows swapfile"
+msgstr "AST Windows swapfile"
+
+#: fdisk/i386_sys_types.c:28
+msgid "NEC DOS"
+msgstr "NEC DOS"
+
+#: fdisk/i386_sys_types.c:29
+msgid "PartitionMagic recovery"
+msgstr "PartitionMagic recovery"
+
+#: fdisk/i386_sys_types.c:30
+msgid "Venix 80286"
+msgstr "Venix 80286"
+
+#: fdisk/i386_sys_types.c:31
+msgid "PPC PReP Boot"
+msgstr "PPC PReP Boot"
+
+#: fdisk/i386_sys_types.c:32
+msgid "SFS"
+msgstr "SFS"
+
+#: fdisk/i386_sys_types.c:33
+msgid "QNX4.x"
+msgstr "QNX4.x"
+
+#: fdisk/i386_sys_types.c:34
+msgid "QNX4.x 2nd part"
+msgstr "QNX4.x 2nd part"
+
+#: fdisk/i386_sys_types.c:35
+msgid "QNX4.x 3rd part"
+msgstr "QNX4.x 3rd part"
+
+#: fdisk/i386_sys_types.c:36
+msgid "OnTrack DM"
+msgstr "OnTrack DM"
+
+#: fdisk/i386_sys_types.c:37
+msgid "OnTrack DM6 Aux1"
+msgstr "OnTrack DM6 Aux1"
+
+#. (or Novell)
+#: fdisk/i386_sys_types.c:38
+msgid "CP/M"
+msgstr "CP/M"
+
+#. CP/M or Microport SysV/AT
+#: fdisk/i386_sys_types.c:39
+msgid "OnTrack DM6 Aux3"
+msgstr "OnTrack DM6 Aux3"
+
+#: fdisk/i386_sys_types.c:40
+msgid "OnTrackDM6"
+msgstr "OnTrackDM6"
+
+#: fdisk/i386_sys_types.c:41
+msgid "EZ-Drive"
+msgstr "EZ-Drive"
+
+#: fdisk/i386_sys_types.c:42
+msgid "Golden Bow"
+msgstr "Golden Bow"
+
+#: fdisk/i386_sys_types.c:43
+msgid "Priam Edisk"
+msgstr "Priam Edisk"
+
+#. DOS R/O or SpeedStor
+#: fdisk/i386_sys_types.c:44 fdisk/i386_sys_types.c:73
+#: fdisk/i386_sys_types.c:75 fdisk/i386_sys_types.c:76
+msgid "SpeedStor"
+msgstr "SpeedStor"
+
+#: fdisk/i386_sys_types.c:45
+msgid "GNU HURD or SysV"
+msgstr "GNU HURD / SysV"
+
+#. GNU HURD or Mach or Sys V/386 (such as ISC UNIX)
+#: fdisk/i386_sys_types.c:46
+msgid "Novell Netware 286"
+msgstr "Novell Netware 286"
+
+#: fdisk/i386_sys_types.c:47
+msgid "Novell Netware 386"
+msgstr "Novell Netware 386"
+
+#: fdisk/i386_sys_types.c:48
+msgid "DiskSecure Multi-Boot"
+msgstr "DiskSecure Multi-Boot"
+
+#: fdisk/i386_sys_types.c:49
+msgid "PC/IX"
+msgstr "PC/IX"
+
+#: fdisk/i386_sys_types.c:50
+msgid "Old Minix"
+msgstr "Old Minix"
+
+#. Minix 1.4a and earlier
+#: fdisk/i386_sys_types.c:51
+msgid "Minix / old Linux"
+msgstr "Minix / old Linux"
+
+#: fdisk/i386_sys_types.c:54
+msgid "OS/2 hidden C: drive"
+msgstr "OS/2 verst. C:-Lw."
+
+#: fdisk/i386_sys_types.c:55
+msgid "Linux extended"
+msgstr "Linux erweitert"
+
+#: fdisk/i386_sys_types.c:56 fdisk/i386_sys_types.c:57
+msgid "NTFS volume set"
+msgstr "NTFS volume set"
+
+#: fdisk/i386_sys_types.c:58
+msgid "Amoeba"
+msgstr "Amoeba"
+
+#: fdisk/i386_sys_types.c:59
+msgid "Amoeba BBT"
+msgstr "Amoeba BBT"
+
+#. (bad block table)
+#: fdisk/i386_sys_types.c:60
+msgid "IBM Thinkpad hibernation"
+msgstr "IBM Thinkpad hibernation"
+
+#: fdisk/i386_sys_types.c:61
+msgid "BSD/386"
+msgstr "BSD/386"
+
+#: fdisk/i386_sys_types.c:62
+msgid "OpenBSD"
+msgstr "OpenBSD"
+
+#: fdisk/i386_sys_types.c:63
+msgid "NeXTSTEP"
+msgstr "NeXTSTEP"
+
+#: fdisk/i386_sys_types.c:64
+msgid "BSDI fs"
+msgstr "BSDI fs"
+
+#: fdisk/i386_sys_types.c:65
+msgid "BSDI swap"
+msgstr "BSDI swap"
+
+#: fdisk/i386_sys_types.c:66
+msgid "DRDOS/sec (FAT-12)"
+msgstr "DRDOS/sec (FAT-12)"
+
+#: fdisk/i386_sys_types.c:67
+msgid "DRDOS/sec (FAT-16 < 32M)"
+msgstr "DRDOS/sec (FAT-16 < 32M)"
+
+#: fdisk/i386_sys_types.c:68
+msgid "DRDOS/sec (FAT-16)"
+msgstr "DRDOS/sec (FAT-16)"
+
+#: fdisk/i386_sys_types.c:69
+msgid "Syrinx"
+msgstr "Syrinx"
+
+#: fdisk/i386_sys_types.c:70
+msgid "CP/M / CTOS / ..."
+msgstr "CP/M / CTOS / ..."
+
+#. CP/M or Concurrent CP/M or Concurrent DOS or CTOS
+#: fdisk/i386_sys_types.c:71
+msgid "DOS access"
+msgstr "DOS access"
+
+#. DOS access or SpeedStor 12-bit FAT extended partition
+#: fdisk/i386_sys_types.c:72
+msgid "DOS R/O"
+msgstr "DOS R/O"
+
+#. SpeedStor 16-bit FAT extended partition < 1024 cyl.
+#: fdisk/i386_sys_types.c:74
+msgid "BeOS fs"
+msgstr "BeOS fs"
+
+#. SpeedStor large partition
+#: fdisk/i386_sys_types.c:77
+msgid "DOS secondary"
+msgstr "DOS secondary"
+
+#. DOS 3.3+ secondary
+#: fdisk/i386_sys_types.c:78
+msgid "LANstep"
+msgstr "LANstep"
+
+#. SpeedStor >1024 cyl. or LANstep
+#: fdisk/i386_sys_types.c:79
+msgid "BBT"
+msgstr "BBT"
+
+#: fdisk/sfdisk.c:148
+#, c-format
+msgid "seek error on %s - cannot seek to %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:153
+#, c-format
+msgid "seek error: wanted 0x%08x%08x, got 0x%08x%08x\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:199
+msgid "out of memory - giving up\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:203 fdisk/sfdisk.c:286
+#, c-format
+msgid "read error on %s - cannot read sector %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:219
+#, c-format
+msgid "ERROR: sector %lu does not have an msdos signature\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:236
+#, c-format
+msgid "write error on %s - cannot write sector %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:274
+#, c-format
+msgid "cannot open partition sector save file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:292
+#, c-format
+msgid "write error on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:310
+#, c-format
+msgid "cannot stat partition restore file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:315
+msgid "partition restore file has wrong size - not restoring\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:319
+#, fuzzy
+msgid "out of memory?\n"
+msgstr "Speicher ist alle\n"
+
+#: fdisk/sfdisk.c:325
+#, c-format
+msgid "cannot open partition restore file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:331
+#, fuzzy, c-format
+msgid "error reading %s\n"
+msgstr "Fehler beim Lesen von %s\n"
+
+#: fdisk/sfdisk.c:338
+#, c-format
+msgid "cannot open device %s for writing\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:350
+#, c-format
+msgid "error writing sector %lu on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:416
+#, c-format
+msgid ""
+"Warning: start=%d - this looks like a partition rather than\n"
+"the entire disk. Using fdisk on it is probably meaningless.\n"
+"[Use the --force option if you really want this]\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:422
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d heads\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:425
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d sectors\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:428
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d cylinders\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:432
+#, c-format
+msgid "Disk %s: cannot get geometry\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:434
+#, c-format
+msgid ""
+"Warning: unlikely number of sectors (%d) - usually at most 63\n"
+"This will give problems with all software that uses C/H/S addressing.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:438
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Disk %s: %lu cylinders, %lu heads, %lu sectors/track\n"
+msgstr ""
+"\n"
+"Festplatte %s: %lu Zylinder, %lu Köpfe, %lu Sektoren/Spur\n"
+"\n"
+
+#: fdisk/sfdisk.c:518
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for head: %d (should be in 0-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:523
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for sector: %d (should be in 1-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:528
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for cylinders: %d (should be in "
+"0-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:567
+msgid ""
+"Id Name\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:712
+msgid "Re-reading the partition table ...\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:718
+msgid ""
+"The command to re-read the partition table failed\n"
+"Reboot your system now, before using mkfs\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:723
+#, fuzzy, c-format
+msgid "Error closing %s\n"
+msgstr "Fehler beim Schließen von %s\n"
+
+#: fdisk/sfdisk.c:761
+#, c-format
+msgid "%s: no such partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:784
+msgid "unrecognized format - using sectors\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:823
+#, fuzzy, c-format
+msgid "# partition table of %s\n"
+msgstr "# Partitionstabelle von %s\n"
+
+#: fdisk/sfdisk.c:824
+#, fuzzy
+msgid ""
+"unit: sectors\n"
+"\n"
+msgstr ""
+"Einheit: Sektoren\n"
+"\n"
+
+#: fdisk/sfdisk.c:834
+#, c-format
+msgid "unimplemented format - using %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:838
+#, c-format
+msgid ""
+"Units = cylinders of %lu bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:841
+msgid " Device Boot Start End #cyls #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:846
+#, c-format
+msgid ""
+"Units = sectors of 512 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:848
+msgid " Device Boot Start End #sectors Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:851
+#, c-format
+msgid ""
+"Units = blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:853
+msgid " Device Boot Start End #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:856
+#, c-format
+msgid ""
+"Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:858
+msgid " Device Boot Start End MB #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:924
+#, c-format
+msgid " start=%9lu"
+msgstr ""
+
+#: fdisk/sfdisk.c:925
+#, c-format
+msgid ", size=%8lu"
+msgstr ""
+
+#: fdisk/sfdisk.c:927
+#, c-format
+msgid ", Id=%2x"
+msgstr ""
+
+#: fdisk/sfdisk.c:929
+#, fuzzy
+msgid ", bootable"
+msgstr ", bootbar"
+
+#: fdisk/sfdisk.c:990
+#, c-format
+msgid "\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:997
+#, c-format
+msgid "\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1000
+#, c-format
+msgid "partition ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1010
+#, fuzzy
+msgid "No partitions found\n"
+msgstr "Keine Partitionen gefunden\n"
+
+#: fdisk/sfdisk.c:1013
+#, c-format
+msgid ""
+"Warning: The first partition looks like it was made\n"
+" for C/H/S=*/%ld/%ld (instead of %ld/%ld/%ld).\n"
+"For this listing I'll assume that geometry.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1060
+msgid "no partition table present.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1062
+#, c-format
+msgid "strange, only %d partitions defined.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1071
+#, c-format
+msgid "Warning: partition %s has size 0 but is not marked Empty\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1074
+#, c-format
+msgid "Warning: partition %s has size 0 and is bootable\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1077
+#, c-format
+msgid "Warning: partition %s has size 0 and nonzero start\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1088
+#, c-format
+msgid "Warning: partition %s "
+msgstr ""
+
+#: fdisk/sfdisk.c:1089
+#, c-format
+msgid "is not contained in partition %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1100
+#, c-format
+msgid "Warning: partitions %s "
+msgstr ""
+
+#: fdisk/sfdisk.c:1101
+#, c-format
+msgid "and %s overlap\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1112
+#, c-format
+msgid "Warning: partition %s contains part of "
+msgstr ""
+
+#: fdisk/sfdisk.c:1113
+#, c-format
+msgid "the partition table (sector %lu),\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1114
+msgid "and will destroy it when filled\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1123
+#, c-format
+msgid "Warning: partition %s starts at sector 0\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1127
+#, c-format
+msgid "Warning: partition %s extends past end of disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1141
+msgid "Among the primary partitions, at most one can be extended\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1142
+msgid " (although this is not a problem under Linux)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1159
+#, fuzzy, c-format
+msgid "Warning: partition %s does not start at a cylinder boundary\n"
+msgstr "Warnung: Partition %s beginnt nicht an einer Zylindergrenze\n"
+
+#: fdisk/sfdisk.c:1165
+#, fuzzy, c-format
+msgid "Warning: partition %s does not end at a cylinder boundary\n"
+msgstr "Warnung: Partition %s endet nicht an einer Zylindergrenze\n"
+
+#: fdisk/sfdisk.c:1183
+msgid ""
+"Warning: more than one primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1190
+msgid ""
+"Warning: usually one can boot from primary partitions only\n"
+"LILO disregards the `bootable' flag.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1196
+msgid ""
+"Warning: no primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1213
+#, c-format
+msgid ""
+"partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1222
+#, c-format
+msgid "partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1225
+#, c-format
+msgid "partition %s ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1258 fdisk/sfdisk.c:1335
+#, c-format
+msgid "too many partitions - ignoring those past nr (%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1273
+msgid "tree of partitions?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1377
+msgid "detected Disk Manager - unable to handle that\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1384
+msgid "DM6 signature found - giving up\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1404
+msgid "strange..., an extended partition of size 0?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1411
+msgid "strange..., a BSD partition of size 0?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1443
+#, c-format
+msgid " %s: unrecognized partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1455
+msgid "-n flag was given: Nothing changed\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1468
+msgid "Failed saving the old sectors - aborting\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1473
+#, c-format
+msgid "Failed writing the partition on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1550
+msgid "long or incomplete input line - quitting\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1586
+#, c-format
+msgid "input error: `=' expected after %s field\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1593
+#, c-format
+msgid "input error: unexpected character %c after %s field\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1599
+#, c-format
+msgid "unrecognized input: %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1631
+msgid "number too big\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1635
+msgid "trailing junk after number\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1751
+msgid "no room for partition descriptor\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1784
+msgid "cannot build surrounding extended partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1835
+msgid "too many input fields\n"
+msgstr ""
+
+#. no free blocks left - don't read any further
+#: fdisk/sfdisk.c:1869
+msgid "No room for more\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1888
+msgid "Illegal type\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1920
+#, c-format
+msgid "Warning: exceeds max allowable size (%lu)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1925
+msgid "Warning: empty partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1939
+#, c-format
+msgid "Warning: bad partition start (earliest %lu)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1952
+msgid "unrecognized bootable flag - choose - or *\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1969 fdisk/sfdisk.c:1982
+msgid "partial c,h,s specification?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1993
+msgid "Extended partition not where expected\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2025
+msgid "bad input\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2047
+#, fuzzy
+msgid "too many partitions\n"
+msgstr "Zu viele Partitionen\n"
+
+#: fdisk/sfdisk.c:2080
+msgid ""
+"Input in the following format; absent fields get a default value.\n"
+"<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+"Usually you only need to specify <start> and <size> (and perhaps <type>).\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2100
+msgid "version"
+msgstr ""
+
+#: fdisk/sfdisk.c:2106
+#, c-format
+msgid "Usage: %s [options] device ...\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2107
+msgid "device: something like /dev/hda or /dev/sda"
+msgstr ""
+
+#: fdisk/sfdisk.c:2108
+msgid "useful options:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2109
+msgid " -s [or --show-size]: list size of a partition"
+msgstr ""
+
+#: fdisk/sfdisk.c:2110
+msgid " -c [or --id]: print or change partition Id"
+msgstr ""
+
+#: fdisk/sfdisk.c:2111
+msgid " -l [or --list]: list partitions of each device"
+msgstr ""
+
+#: fdisk/sfdisk.c:2112
+msgid " -d [or --dump]: idem, but in a format suitable for later input"
+msgstr ""
+
+#: fdisk/sfdisk.c:2113
+msgid " -i [or --increment]: number cylinders etc. from 1 instead of from 0"
+msgstr ""
+
+#: fdisk/sfdisk.c:2114
+msgid ""
+" -uS, -uB, -uC, -uM: accept/report in units of "
+"sectors/blocks/cylinders/MB"
+msgstr ""
+
+#: fdisk/sfdisk.c:2115
+msgid " -T [or --list-types]:list the known partition types"
+msgstr ""
+
+#: fdisk/sfdisk.c:2116
+msgid " -D [or --DOS]: for DOS-compatibility: waste a little space"
+msgstr ""
+
+#: fdisk/sfdisk.c:2117
+msgid " -R [or --re-read]: make kernel reread partition table"
+msgstr ""
+
+#: fdisk/sfdisk.c:2118
+msgid " -N# : change only the partition with number #"
+msgstr ""
+
+#: fdisk/sfdisk.c:2119
+msgid " -n : do not actually write to disk"
+msgstr ""
+
+#: fdisk/sfdisk.c:2120
+msgid ""
+" -O file : save the sectors that will be overwritten to file"
+msgstr ""
+
+#: fdisk/sfdisk.c:2121
+msgid " -I file : restore these sectors again"
+msgstr ""
+
+#: fdisk/sfdisk.c:2122
+msgid " -v [or --version]: print version"
+msgstr ""
+
+#: fdisk/sfdisk.c:2123
+msgid " -? [or --help]: print this message"
+msgstr ""
+
+#: fdisk/sfdisk.c:2124
+msgid "dangerous options:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2125
+msgid " -g [or --show-geometry]: print the kernel's idea of the geometry"
+msgstr ""
+
+#: fdisk/sfdisk.c:2126
+msgid ""
+" -x [or --show-extended]: also list extended partitions on output\n"
+" or expect descriptors for them on input"
+msgstr ""
+
+#: fdisk/sfdisk.c:2128
+msgid ""
+" -L [or --Linux]: do not complain about things irrelevant for Linux"
+msgstr ""
+
+#: fdisk/sfdisk.c:2129
+msgid " -q [or --quiet]: suppress warning messages"
+msgstr ""
+
+#: fdisk/sfdisk.c:2130
+msgid " You can override the detected geometry using:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2131
+msgid " -C# [or --cylinders #]:set the number of cylinders to use"
+msgstr ""
+
+#: fdisk/sfdisk.c:2132
+msgid " -H# [or --heads #]: set the number of heads to use"
+msgstr ""
+
+#: fdisk/sfdisk.c:2133
+msgid " -S# [or --sectors #]: set the number of sectors to use"
+msgstr ""
+
+#: fdisk/sfdisk.c:2134
+msgid "You can disable all consistency checking with:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2135
+msgid " -f [or --force]: do what I say, even if it is stupid"
+msgstr ""
+
+#: fdisk/sfdisk.c:2141
+#, fuzzy
+msgid "Usage:"
+msgstr "Aufruf:"
+
+#: fdisk/sfdisk.c:2142
+#, c-format
+msgid "%s device\t\t list active partitions on device\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2143
+#, c-format
+msgid "%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2144
+#, c-format
+msgid "%s -An device\t activate partition n, inactivate the other ones\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2263
+msgid "no command?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2386
+#, c-format
+msgid "total: %d blocks\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2423
+msgid "usage: sfdisk --print-id device partition-number\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2425
+msgid "usage: sfdisk --change-id device partition-number Id\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2427
+msgid "usage: sfdisk --id device partition-number [Id]\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2434
+msgid "can specify only one device (except with -l or -s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2459
+#, c-format
+msgid "cannot open %s %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2459
+msgid "read-write"
+msgstr ""
+
+#: fdisk/sfdisk.c:2459
+msgid "for reading"
+msgstr ""
+
+#: fdisk/sfdisk.c:2484
+#, c-format
+msgid "%s: OK\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2501
+#, c-format
+msgid "%s: %d cylinders, %d heads, %d sectors/track\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2504
+#, c-format
+msgid "%s: unknown geometry\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2520
+#, c-format
+msgid "BLKGETSIZE ioctl failed for %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2597
+#, c-format
+msgid "bad active byte: 0x%x instead of 0x80\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2614 fdisk/sfdisk.c:2667 fdisk/sfdisk.c:2697
+#, fuzzy
+msgid ""
+"Done\n"
+"\n"
+msgstr ""
+"Fertig\n"
+"\n"
+
+#: fdisk/sfdisk.c:2623
+#, c-format
+msgid ""
+"You have %d active primary partitions. This does not matter for LILO,\n"
+"but the DOS MBR will only boot a disk with 1 active partition.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2637
+#, c-format
+msgid "partition %s has id %x and is not hidden\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2693
+#, c-format
+msgid "Bad Id %x\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2708
+msgid "This disk is currently in use.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2725
+#, c-format
+msgid "Fatal error: cannot find %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2728
+#, c-format
+msgid "Warning: %s is not a block device\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2734
+msgid "Checking that no-one is using this disk right now ...\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2736
+msgid ""
+"\n"
+"This disk is currently in use - repartitioning is probably a bad idea.Umount "
+"all file systems, and swapoff all swap partitions on this disk.Use the "
+"--no-reread flag to suppress this check.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2740
+msgid "Use the --force flag to overrule all checks.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2744
+msgid "OK"
+msgstr ""
+
+#: fdisk/sfdisk.c:2753
+msgid "Old situation:\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2757
+#, c-format
+msgid "Partition %d does not exist, cannot change it\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2765
+msgid "New situation:\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2770
+msgid ""
+"I don't like these partitions - nothing changed.\n"
+"(If you really want this, use the --force option.)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2773
+msgid "I don't like this - probably you should answer No\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2778
+msgid "Are you satisfied with this? [ynq] "
+msgstr ""
+
+#: fdisk/sfdisk.c:2780
+msgid "Do you want to write this to disk? [ynq] "
+msgstr ""
+
+#: fdisk/sfdisk.c:2785
+msgid ""
+"\n"
+"sfdisk: premature end of input\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2787
+msgid "Quitting - nothing changed\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2793
+msgid "Please answer one of y,n,q\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2801
+msgid ""
+"Successfully wrote the new partition table\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2807
+msgid ""
+"If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
+"to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
+"(See fdisk(8).)\n"
+msgstr ""
+
+#: games/banner.c:1048
+#, fuzzy
+msgid "usage: banner [-w width]\n"
+msgstr "Aufruf: banner [-w Breite]\n"
+
+#: games/banner.c:1068
+#, fuzzy
+msgid "Message: "
+msgstr "Meldung: "
+
+#: games/banner.c:1102
+#, fuzzy, c-format
+msgid "The character '%c' is not in my character set"
+msgstr "Das Zeichen ť%cŤ ist nicht im Zeichensatz vorhanden"
+
+#: games/banner.c:1110
+#, c-format
+msgid "Message '%s' is OK\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:229
+#, fuzzy
+msgid "Try `getopt --help' for more information.\n"
+msgstr "ťgetopt --helpŤ gibt weitere Informationen.\n"
+
+#: getopt-1.0.3b/getopt.c:295
+msgid "empty long option after -l or --long argument"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:315
+#, fuzzy
+msgid "unknown shell after -s or --shell argument"
+msgstr "Unbekannte Shell als Argument von -s oder --shell"
+
+#: getopt-1.0.3b/getopt.c:320
+msgid "Usage: getopt optstring parameters\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:321
+msgid " getopt [options] [--] optstring parameters\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:322
+msgid " getopt [options] -o|--options optstring [options] [--]\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:323
+msgid " parameters\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:324
+msgid ""
+" -a, --alternative Allow long options starting with single -\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:325
+msgid " -h, --help This small usage guide\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:326
+msgid " -l, --longoptions=longopts Long options to be recognized\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:327
+msgid ""
+" -n, --name=progname The name under which errors are reported\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:328
+msgid " -o, --options=optstring Short options to be recognized\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:329
+msgid " -q, --quiet Disable error reporting by getopt(3)\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:330
+msgid " -Q, --quiet-output No normal output\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:331
+msgid " -s, --shell=shell Set shell quoting conventions\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:332
+msgid " -T, --test Test for getopt(1) version\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:333
+msgid " -V, --version Output version information\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:387 getopt-1.0.3b/getopt.c:445
+msgid "missing optstring argument"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:433
+#, fuzzy
+msgid "getopt (enhanced) 1.0.3\n"
+msgstr "getopt (enhanced) 1.0.3\n"
+
+#: getopt-1.0.3b/getopt.c:439
+#, fuzzy
+msgid "internal error, contact the author."
+msgstr "Interner Fehler, kontaktieren Sie den Autor."
+
+#: login-utils/agetty.c:300
+msgid "calling open_tty\n"
+msgstr ""
+
+#. Initialize the termio settings (raw mode, eight-bit, blocking i/o).
+#: login-utils/agetty.c:313
+msgid "calling termio_init\n"
+msgstr ""
+
+#: login-utils/agetty.c:318
+msgid "writing init string\n"
+msgstr ""
+
+#. Optionally detect the baud rate from the modem status message.
+#: login-utils/agetty.c:328
+msgid "before autobaud\n"
+msgstr ""
+
+#: login-utils/agetty.c:340
+msgid "waiting for cr-lf\n"
+msgstr ""
+
+#: login-utils/agetty.c:344
+#, c-format
+msgid "read %c\n"
+msgstr ""
+
+#. Read the login name.
+#: login-utils/agetty.c:353
+msgid "reading login name\n"
+msgstr ""
+
+#: login-utils/agetty.c:374
+#, c-format
+msgid "%s: can't exec %s: %m"
+msgstr "%s: Fehler beim Ausführen von %s: %m"
+
+#: login-utils/agetty.c:394
+msgid "can't malloc initstring"
+msgstr "Konnte keinen Speicher für den ťinitstringŤ reservieren"
+
+#: login-utils/agetty.c:456
+#, c-format
+msgid "bad timeout value: %s"
+msgstr ""
+
+#: login-utils/agetty.c:465
+msgid "after getopt loop\n"
+msgstr ""
+
+#: login-utils/agetty.c:483
+msgid "exiting parseargs\n"
+msgstr ""
+
+#: login-utils/agetty.c:496
+msgid "entered parse_speeds\n"
+msgstr ""
+
+#: login-utils/agetty.c:499
+#, c-format
+msgid "bad speed: %s"
+msgstr ""
+
+#: login-utils/agetty.c:501
+msgid "too many alternate speeds"
+msgstr ""
+
+#: login-utils/agetty.c:503
+msgid "exiting parsespeeds\n"
+msgstr ""
+
+#: login-utils/agetty.c:576
+#, c-format
+msgid "%s: open for update: %m"
+msgstr ""
+
+#: login-utils/agetty.c:592
+#, c-format
+msgid "%s: no utmp entry"
+msgstr ""
+
+#: login-utils/agetty.c:621
+#, c-format
+msgid "/dev: chdir() failed: %m"
+msgstr ""
+
+#: login-utils/agetty.c:625
+#, c-format
+msgid "/dev/%s: not a character device"
+msgstr ""
+
+#. ignore close(2) errors
+#: login-utils/agetty.c:632
+msgid "open(2)\n"
+msgstr ""
+
+#: login-utils/agetty.c:634
+#, c-format
+msgid "/dev/%s: cannot open as standard input: %m"
+msgstr ""
+
+#: login-utils/agetty.c:644
+#, c-format
+msgid "%s: not open for read/write"
+msgstr ""
+
+#. Set up standard output and standard error file descriptors.
+#: login-utils/agetty.c:648
+msgid "duping\n"
+msgstr ""
+
+#. set up stdout and stderr
+#: login-utils/agetty.c:650
+#, c-format
+msgid "%s: dup problem: %m"
+msgstr ""
+
+#: login-utils/agetty.c:712
+msgid "term_io 2\n"
+msgstr ""
+
+#: login-utils/agetty.c:894
+msgid "user"
+msgstr ""
+
+#: login-utils/agetty.c:894
+msgid "users"
+msgstr ""
+
+#: login-utils/agetty.c:982
+#, c-format
+msgid "%s: read: %m"
+msgstr ""
+
+#: login-utils/agetty.c:1028
+#, c-format
+msgid "%s: input overrun"
+msgstr ""
+
+#: login-utils/agetty.c:1152
+#, c-format
+msgid ""
+"Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] "
+"baud_rate,... line [termtype]\n"
+"or\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line "
+"baud_rate,... [termtype]\n"
+msgstr ""
+
+#: login-utils/checktty.c:46
+#, c-format
+msgid "badlogin: %s\n"
+msgstr ""
+
+#: login-utils/checktty.c:52
+#, c-format
+msgid "sleepexit %d\n"
+msgstr ""
+
+#: login-utils/checktty.c:108 login-utils/checktty.c:130
+msgid "login: memory low, login may fail\n"
+msgstr ""
+
+# This ends up in syslog.
+#: login-utils/checktty.c:109
+msgid "can't malloc for ttyclass"
+msgstr ""
+
+# This ends up in syslog.
+#: login-utils/checktty.c:131
+msgid "can't malloc for grplist"
+msgstr ""
+
+#. there was a default rule, but user didn't match, reject!
+#: login-utils/checktty.c:431
+#, c-format
+msgid "Login on %s from %s denied by default.\n"
+msgstr ""
+
+#. if we get here, /etc/usertty exists, there's a line
+#. matching our username, but it doesn't contain the
+#. name of the tty where the user is trying to log in.
+#. So deny access!
+#: login-utils/checktty.c:442
+#, c-format
+msgid "Login on %s from %s denied.\n"
+msgstr ""
+
+#: login-utils/chfn.c:139 login-utils/chsh.c:118
+#, c-format
+msgid "%s: you (user %d) don't exist.\n"
+msgstr ""
+
+#: login-utils/chfn.c:146 login-utils/chsh.c:125
+#, c-format
+msgid "%s: user \"%s\" does not exist.\n"
+msgstr ""
+
+#: login-utils/chfn.c:151 login-utils/chsh.c:130
+#, c-format
+msgid "%s: can only change local entries; use yp%s instead.\n"
+msgstr ""
+
+#: login-utils/chfn.c:163
+#, c-format
+msgid "Changing finger information for %s.\n"
+msgstr ""
+
+#: login-utils/chfn.c:169 login-utils/chfn.c:173 login-utils/chfn.c:180
+#: login-utils/chfn.c:184 login-utils/chsh.c:154 login-utils/chsh.c:158
+#: login-utils/chsh.c:165 login-utils/chsh.c:169
+msgid "Password error."
+msgstr ""
+
+#: login-utils/chfn.c:193 login-utils/chsh.c:178 login-utils/login.c:650
+#: login-utils/newgrp.c:47 login-utils/simpleinit.c:219 mount/lomount.c:200
+#: mount/lomount.c:206 mount/losetup.c:115 mount/losetup.c:121
+msgid "Password: "
+msgstr "Passwort: "
+
+#: login-utils/chfn.c:196 login-utils/chsh.c:181
+msgid "Incorrect password."
+msgstr ""
+
+#: login-utils/chfn.c:207
+msgid "Finger information not changed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:310
+#, c-format
+msgid "Usage: %s [ -f full-name ] [ -o office ] "
+msgstr ""
+
+#: login-utils/chfn.c:311
+msgid ""
+"[ -p office-phone ]\n"
+"\t[ -h home-phone ] "
+msgstr ""
+
+#: login-utils/chfn.c:312
+msgid "[ --help ] [ --version ]\n"
+msgstr ""
+
+#: login-utils/chfn.c:381 login-utils/chsh.c:294
+msgid ""
+"\n"
+"Aborted.\n"
+msgstr ""
+
+#: login-utils/chfn.c:414
+msgid "field is too long.\n"
+msgstr ""
+
+#: login-utils/chfn.c:422
+#, c-format
+msgid "'%c' is not allowed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:427
+msgid "Control characters are not allowed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:492
+msgid "Finger information *NOT* changed. Try again later.\n"
+msgstr ""
+
+#: login-utils/chfn.c:495
+msgid "Finger information changed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:509 login-utils/chsh.c:412 sys-utils/cytune.c:324
+#, fuzzy
+msgid "malloc failed"
+msgstr "ťmallocŤ schlug fehl"
+
+#: login-utils/chsh.c:141
+#, c-format
+msgid "%s: Your shell is not in /etc/shells, shell change denied\n"
+msgstr ""
+
+#: login-utils/chsh.c:148
+#, c-format
+msgid "Changing shell for %s.\n"
+msgstr ""
+
+#: login-utils/chsh.c:189
+msgid "New shell"
+msgstr ""
+
+#: login-utils/chsh.c:196
+msgid "Shell not changed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:203
+msgid "Shell *NOT* changed. Try again later.\n"
+msgstr ""
+
+#: login-utils/chsh.c:206
+msgid "Shell changed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:274
+#, c-format
+msgid "Usage: %s [ -s shell ] "
+msgstr ""
+
+#: login-utils/chsh.c:275
+msgid "[ --list-shells ] [ --help ] [ --version ]\n"
+msgstr ""
+
+#: login-utils/chsh.c:276
+msgid " [ username ]\n"
+msgstr ""
+
+#: login-utils/chsh.c:320
+#, c-format
+msgid "%s: shell must be a full path name.\n"
+msgstr ""
+
+#: login-utils/chsh.c:324
+#, c-format
+msgid "%s: \"%s\" does not exist.\n"
+msgstr ""
+
+#: login-utils/chsh.c:328
+#, c-format
+msgid "%s: \"%s\" is not executable.\n"
+msgstr ""
+
+#: login-utils/chsh.c:335
+#, c-format
+msgid "%s: '%c' is not allowed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:339
+#, c-format
+msgid "%s: Control characters are not allowed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:346
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells\n"
+msgstr ""
+
+#: login-utils/chsh.c:348
+#, c-format
+msgid "%s: \"%s\" is not listed in /etc/shells.\n"
+msgstr ""
+
+#: login-utils/chsh.c:350
+#, c-format
+msgid "%s: use -l option to see list\n"
+msgstr ""
+
+#: login-utils/chsh.c:356
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells.\n"
+msgstr ""
+
+#: login-utils/chsh.c:357
+#, c-format
+msgid "Use %s -l to see list.\n"
+msgstr ""
+
+#: login-utils/chsh.c:378
+msgid "No known shells.\n"
+msgstr ""
+
+#: login-utils/cryptocard.c:70
+msgid "couldn't open /dev/urandom"
+msgstr ""
+
+#: login-utils/cryptocard.c:75
+msgid "couldn't read random data from /dev/urandom"
+msgstr ""
+
+#: login-utils/cryptocard.c:98
+#, c-format
+msgid "can't open %s for reading"
+msgstr ""
+
+#: login-utils/cryptocard.c:102
+#, c-format
+msgid "can't stat(%s)"
+msgstr ""
+
+#: login-utils/cryptocard.c:108
+#, c-format
+msgid "%s doesn't have the correct filemodes"
+msgstr ""
+
+#: login-utils/cryptocard.c:113
+#, c-format
+msgid "can't read data from %s"
+msgstr ""
+
+#: login-utils/islocal.c:36
+#, c-format
+msgid "Can't read %s, exiting."
+msgstr ""
+
+#: login-utils/last.c:138
+msgid "usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n"
+msgstr ""
+
+#: login-utils/last.c:215
+#, c-format
+msgid "last: %s: "
+msgstr ""
+
+#: login-utils/last.c:270
+msgid " still logged in"
+msgstr ""
+
+#: login-utils/last.c:291
+#, c-format
+msgid ""
+"\n"
+"wtmp begins %10.10s %5.5s \n"
+msgstr ""
+
+#: login-utils/last.c:352 login-utils/last.c:372 login-utils/last.c:427
+msgid "last: malloc failure.\n"
+msgstr ""
+
+#: login-utils/last.c:401
+msgid "last: gethostname"
+msgstr ""
+
+#: login-utils/last.c:454
+#, c-format
+msgid ""
+"\n"
+"interrupted %10.10s %5.5s \n"
+msgstr ""
+
+#: login-utils/login.c:349
+msgid "login: -h for super-user only.\n"
+msgstr ""
+
+#: login-utils/login.c:374
+msgid "usage: login [-fp] [username]\n"
+msgstr ""
+
+#: login-utils/login.c:476
+#, c-format
+msgid "login: PAM Failure, aborting: %s\n"
+msgstr ""
+
+#: login-utils/login.c:478
+#, c-format
+msgid "Couldn't initialize PAM: %s"
+msgstr ""
+
+#: login-utils/login.c:518
+#, c-format
+msgid "FAILED LOGIN %d FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:520
+msgid ""
+"Login incorrect\n"
+"\n"
+msgstr ""
+
+#: login-utils/login.c:529
+#, c-format
+msgid "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:533
+#, c-format
+msgid "FAILED LOGIN SESSION FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:536
+msgid ""
+"\n"
+"Login incorrect\n"
+msgstr ""
+
+#: login-utils/login.c:585
+msgid "Illegal username"
+msgstr ""
+
+#: login-utils/login.c:628
+#, c-format
+msgid "%s login refused on this terminal.\n"
+msgstr ""
+
+#: login-utils/login.c:633
+#, c-format
+msgid "LOGIN %s REFUSED FROM %s ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:637
+#, c-format
+msgid "LOGIN %s REFUSED ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:689
+msgid "Login incorrect\n"
+msgstr ""
+
+#: login-utils/login.c:711
+msgid ""
+"Too many users logged on already.\n"
+"Try again later.\n"
+msgstr ""
+
+#: login-utils/login.c:715
+msgid "You have too many processes running.\n"
+msgstr ""
+
+#: login-utils/login.c:761
+msgid "Warning: no Kerberos tickets issued\n"
+msgstr ""
+
+#: login-utils/login.c:773
+msgid "Sorry -- your password has expired.\n"
+msgstr ""
+
+#: login-utils/login.c:779
+#, c-format
+msgid "Warning: your password expires on %s %d, %d\n"
+msgstr ""
+
+#: login-utils/login.c:787
+msgid "Sorry -- your account has expired.\n"
+msgstr ""
+
+#: login-utils/login.c:793
+#, c-format
+msgid "Warning: your account expires on %s %d, %d\n"
+msgstr ""
+
+#: login-utils/login.c:1025
+#, c-format
+msgid "DIALUP AT %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1032
+#, c-format
+msgid "ROOT LOGIN ON %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1035
+#, c-format
+msgid "ROOT LOGIN ON %s"
+msgstr ""
+
+#: login-utils/login.c:1038
+#, c-format
+msgid "LOGIN ON %s BY %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1041
+#, c-format
+msgid "LOGIN ON %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1052
+#, c-format
+msgid "You have %smail.\n"
+msgstr ""
+
+#: login-utils/login.c:1053
+msgid "new "
+msgstr ""
+
+#. error in fork()
+#: login-utils/login.c:1071
+#, c-format
+msgid "login: failure forking: %s"
+msgstr ""
+
+#: login-utils/login.c:1086
+msgid "setuid() failed"
+msgstr ""
+
+#: login-utils/login.c:1092
+#, c-format
+msgid "No directory %s!\n"
+msgstr ""
+
+#: login-utils/login.c:1096
+msgid "Logging in with home = \"/\".\n"
+msgstr ""
+
+#: login-utils/login.c:1104
+msgid "login: no memory for shell script.\n"
+msgstr ""
+
+#: login-utils/login.c:1132
+#, c-format
+msgid "login: couldn't exec shell script: %s.\n"
+msgstr ""
+
+#: login-utils/login.c:1135
+#, c-format
+msgid "login: no shell: %s.\n"
+msgstr ""
+
+#: login-utils/login.c:1151
+#, c-format
+msgid ""
+"\n"
+"%s login: "
+msgstr ""
+
+#: login-utils/login.c:1162
+msgid "login name much too long.\n"
+msgstr ""
+
+#: login-utils/login.c:1163
+msgid "NAME too long"
+msgstr ""
+
+#: login-utils/login.c:1170
+msgid "login names may not start with '-'.\n"
+msgstr ""
+
+#: login-utils/login.c:1180
+msgid "too many bare linefeeds.\n"
+msgstr ""
+
+#: login-utils/login.c:1181
+msgid "EXCESSIVE linefeeds"
+msgstr ""
+
+#: login-utils/login.c:1192
+#, c-format
+msgid "Login timed out after %d seconds\n"
+msgstr ""
+
+#: login-utils/login.c:1292
+#, c-format
+msgid "Last login: %.*s "
+msgstr ""
+
+#: login-utils/login.c:1296
+#, c-format
+msgid "from %.*s\n"
+msgstr ""
+
+#: login-utils/login.c:1299
+#, c-format
+msgid "on %.*s\n"
+msgstr ""
+
+#: login-utils/login.c:1322
+#, c-format
+msgid "LOGIN FAILURE FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1325
+#, c-format
+msgid "LOGIN FAILURE ON %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1329
+#, c-format
+msgid "%d LOGIN FAILURES FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1332
+#, c-format
+msgid "%d LOGIN FAILURES ON %s, %s"
+msgstr ""
+
+#: login-utils/mesg.c:89
+msgid "is y\n"
+msgstr ""
+
+#: login-utils/mesg.c:92
+msgid "is n\n"
+msgstr ""
+
+#: login-utils/mesg.c:112
+msgid "usage: mesg [y | n]\n"
+msgstr ""
+
+#: login-utils/newgrp.c:67
+msgid "newgrp: Who are you?"
+msgstr ""
+
+#: login-utils/newgrp.c:75 login-utils/newgrp.c:85
+msgid "newgrp: setgid"
+msgstr ""
+
+#: login-utils/newgrp.c:80
+msgid "newgrp: No such group."
+msgstr ""
+
+#: login-utils/newgrp.c:89
+msgid "newgrp: Permission denied"
+msgstr ""
+
+#: login-utils/newgrp.c:96
+msgid "newgrp: setuid"
+msgstr ""
+
+#: login-utils/newgrp.c:102
+msgid "No shell"
+msgstr ""
+
+#: login-utils/passwd.c:163
+msgid "The password must have at least 6 characters, try again.\n"
+msgstr ""
+
+#: login-utils/passwd.c:176
+msgid "The password must contain characters out of two of the following\n"
+msgstr ""
+
+#: login-utils/passwd.c:177
+msgid "classes: upper and lower case letters, digits and non alphanumeric\n"
+msgstr ""
+
+#: login-utils/passwd.c:178
+msgid "characters. See passwd(1) for more information.\n"
+msgstr ""
+
+#: login-utils/passwd.c:183
+msgid "You cannot reuse the old password.\n"
+msgstr ""
+
+#: login-utils/passwd.c:188
+msgid "Please don't use something like your username as password!\n"
+msgstr ""
+
+#: login-utils/passwd.c:199 login-utils/passwd.c:206
+msgid "Please don't use something like your realname as password!\n"
+msgstr ""
+
+#: login-utils/passwd.c:223
+msgid "Usage: passwd [username [password]]\n"
+msgstr ""
+
+#: login-utils/passwd.c:224
+msgid "Only root may use the one and two argument forms.\n"
+msgstr ""
+
+#: login-utils/passwd.c:280
+msgid "Usage: passwd [-foqsvV] [user [password]]\n"
+msgstr ""
+
+#: login-utils/passwd.c:301
+#, c-format
+msgid "Can't exec %s: %s\n"
+msgstr ""
+
+#: login-utils/passwd.c:312
+msgid "Cannot find login name"
+msgstr ""
+
+#: login-utils/passwd.c:319 login-utils/passwd.c:326
+msgid "Only root can change the password for others.\n"
+msgstr ""
+
+#: login-utils/passwd.c:334
+msgid "Too many arguments.\n"
+msgstr ""
+
+#: login-utils/passwd.c:339
+#, c-format
+msgid "Can't find username anywhere. Is `%s' really a user?"
+msgstr ""
+
+#: login-utils/passwd.c:343
+msgid "Sorry, I can only change local passwords. Use yppasswd instead."
+msgstr ""
+
+#: login-utils/passwd.c:349
+msgid "UID and username does not match, imposter!"
+msgstr ""
+
+#: login-utils/passwd.c:354
+#, c-format
+msgid "Changing password for %s\n"
+msgstr ""
+
+#: login-utils/passwd.c:358
+msgid "Enter old password: "
+msgstr ""
+
+#: login-utils/passwd.c:360
+msgid "Illegal password, imposter."
+msgstr ""
+
+#: login-utils/passwd.c:372
+msgid "Enter new password: "
+msgstr ""
+
+#: login-utils/passwd.c:374
+msgid "Password not changed."
+msgstr ""
+
+#: login-utils/passwd.c:384
+msgid "Re-type new password: "
+msgstr ""
+
+#: login-utils/passwd.c:387
+msgid "You misspelled it. Password not changed."
+msgstr ""
+
+#: login-utils/passwd.c:402
+#, c-format
+msgid "password changed, user %s"
+msgstr ""
+
+#: login-utils/passwd.c:405
+msgid "ROOT PASSWORD CHANGED"
+msgstr ""
+
+#: login-utils/passwd.c:407
+#, c-format
+msgid "password changed by root, user %s"
+msgstr ""
+
+#: login-utils/passwd.c:414
+msgid "calling setpwnam to set password.\n"
+msgstr ""
+
+#: login-utils/passwd.c:418
+msgid "Password *NOT* changed. Try again later.\n"
+msgstr ""
+
+#: login-utils/passwd.c:424
+msgid "Password changed.\n"
+msgstr ""
+
+#: login-utils/shutdown.c:85
+msgid "Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n"
+msgstr ""
+
+#: login-utils/shutdown.c:103
+msgid "Shutdown process aborted"
+msgstr ""
+
+#: login-utils/shutdown.c:125
+#, c-format
+msgid "%s: Only root can shut a system down.\n"
+msgstr ""
+
+#: login-utils/shutdown.c:219
+msgid "That must be tomorrow, can't you wait till then?\n"
+msgstr ""
+
+#: login-utils/shutdown.c:271
+msgid "for maintenance; bounce, bounce"
+msgstr ""
+
+#: login-utils/shutdown.c:275
+#, c-format
+msgid "timeout = %d, quiet = %d, reboot = %d\n"
+msgstr ""
+
+#: login-utils/shutdown.c:300
+msgid "The system is being shut down within 5 minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:304
+msgid "Login is therefore prohibited."
+msgstr ""
+
+# This ends up in the syslog. Translate it?
+#: login-utils/shutdown.c:325
+#, c-format
+msgid "%s by %s: %s"
+msgstr ""
+
+# This ends up in the syslog. Translate it?
+#: login-utils/shutdown.c:326
+msgid "rebooted"
+msgstr ""
+
+# This ends up in the syslog. Translate it?
+#: login-utils/shutdown.c:326
+msgid "halted"
+msgstr ""
+
+#. RB_AUTOBOOT
+#: login-utils/shutdown.c:377
+msgid ""
+"\n"
+"Why am I still alive after reboot?"
+msgstr ""
+
+#: login-utils/shutdown.c:379
+msgid ""
+"\n"
+"Now you can turn off the power..."
+msgstr ""
+
+#: login-utils/shutdown.c:394
+msgid "Calling kernel power-off facility...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:397
+#, c-format
+msgid "Error powering off\t%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:405
+#, c-format
+msgid "Executing the program \"%s\" ...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:408
+#, c-format
+msgid "Error executing\t%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:431
+#, c-format
+msgid "URGENT: broadcast message from %s:"
+msgstr ""
+
+#: login-utils/shutdown.c:437
+msgid "System going down IMMEDIATELY!\n"
+msgstr ""
+
+#: login-utils/shutdown.c:440
+#, c-format
+msgid "System going down in %d hour%s %d minutes"
+msgstr ""
+
+# This seems to be a plural s, which isn't good
+# for something, that should be translated.
+#: login-utils/shutdown.c:441 login-utils/shutdown.c:444
+msgid "s"
+msgstr ""
+
+#: login-utils/shutdown.c:443
+#, c-format
+msgid "System going down in %d minute%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:449
+#, c-format
+msgid "\t... %s ...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:506
+msgid "Cannot fork for swapoff. Shrug!"
+msgstr ""
+
+#: login-utils/shutdown.c:514
+msgid "Cannot exec swapoff, hoping umount will do the trick."
+msgstr ""
+
+#: login-utils/shutdown.c:533
+msgid "Cannot fork for umount, trying manually."
+msgstr ""
+
+#: login-utils/shutdown.c:539
+#, c-format
+msgid "Cannot exec %s, trying umount."
+msgstr ""
+
+#: login-utils/shutdown.c:541
+msgid "Cannot exec umount, giving up on umount."
+msgstr ""
+
+#: login-utils/shutdown.c:546
+msgid "Unmounting any remaining filesystems..."
+msgstr ""
+
+#: login-utils/shutdown.c:582
+#, c-format
+msgid "shutdown: Couldn't umount %s\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:79
+msgid "Booting to single user mode.\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:83
+msgid "exec of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:87
+msgid "fork of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:226
+msgid ""
+"\n"
+"Wrong password.\n"
+msgstr ""
+"\n"
+"Falsches Passwort.\n"
+
+#: login-utils/simpleinit.c:252
+msgid "exec rc failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:255
+msgid "open of rc file failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:261
+msgid "fork of rc shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:273
+msgid "fork failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:302 text-utils/more.c:1550
+msgid "exec failed\n"
+msgstr "ťexec()Ť schlug fehl\n"
+
+#: login-utils/simpleinit.c:324
+msgid "cannot open inittab\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:362
+msgid "no TERM or cannot stat tty\n"
+msgstr ""
+
+#: login-utils/ttymsg.c:81
+msgid "too many iov's (change code in wall/ttymsg.c)"
+msgstr ""
+
+#. A slash is an attempt to break security...
+#: login-utils/ttymsg.c:85
+#, c-format
+msgid "'/' in \"%s\""
+msgstr "ť%sŤ enthält einen ť/Ť"
+
+#: login-utils/ttymsg.c:90
+msgid "excessively long line arg"
+msgstr ""
+
+#: login-utils/ttymsg.c:144
+#, fuzzy
+msgid "cannot fork"
+msgstr "Konnte ťfork()Ť nicht ausführen"
+
+#: login-utils/ttymsg.c:148
+#, c-format
+msgid "fork: %s"
+msgstr "ťforkŤ: %s"
+
+#: login-utils/ttymsg.c:176
+#, c-format
+msgid "%s: BAD ERROR"
+msgstr ""
+
+#: login-utils/vipw.c:149
+#, c-format
+msgid "%s: the %s file is busy.\n"
+msgstr ""
+
+#: login-utils/vipw.c:165
+#, c-format
+msgid "%s: the %s file is busy (%s present)\n"
+msgstr ""
+
+#: login-utils/vipw.c:171
+#, c-format
+msgid "%s: can't link %s: %s\n"
+msgstr ""
+
+#: login-utils/vipw.c:193
+#, c-format
+msgid "%s: can't unlock %s: %s (your changes are still in %s)\n"
+msgstr ""
+
+#: login-utils/vipw.c:217
+#, c-format
+msgid "%s: Cannot fork\n"
+msgstr ""
+
+#: login-utils/vipw.c:257
+#, c-format
+msgid "%s: %s unchanged\n"
+msgstr ""
+
+#: login-utils/vipw.c:300
+#, c-format
+msgid "%s: no changes made\n"
+msgstr ""
+
+#: login-utils/wall.c:100
+msgid "usage: wall [file]\n"
+msgstr "Aufruf: wall [Datei]\n"
+
+#: login-utils/wall.c:111
+#, c-format
+msgid "wall: cannot read %s.\n"
+msgstr "wall: Konnte %s nicht lesen.\n"
+
+#: login-utils/wall.c:150
+msgid "wall: can't open temporary file.\n"
+msgstr "wall: Konnte eine temporäre Datei nicht öffnen.\n"
+
+# XXX - Have to look at other OSs translation for Broadcast
+# Message
+#: login-utils/wall.c:177
+#, c-format
+msgid "Broadcast Message from %s@%s"
+msgstr "Rundsendenachricht von %s@%s"
+
+#: login-utils/wall.c:187
+#, c-format
+msgid "wall: can't read %s.\n"
+msgstr "wall: Konnte %s nicht lesen.\n"
+
+#: login-utils/wall.c:212
+msgid "wall: can't stat temporary file.\n"
+msgstr "wall: Konnte ťstatŤ nicht auf eine temporäre Datei anwenden.\n"
+
+#: login-utils/wall.c:221
+msgid "wall: can't read temporary file.\n"
+msgstr "wall: Konnte eine temporäre Datei nicht lesen.\n"
+
+#: misc-utils/cal.c:184
+msgid "illegal month value: use 1-12"
+msgstr ""
+
+#: misc-utils/cal.c:188
+msgid "illegal year value: use 1-9999"
+msgstr ""
+
+#: misc-utils/cal.c:484
+msgid "usage: cal [-mjy] [[month] year]\n"
+msgstr ""
+
+#: misc-utils/ddate.c:184
+#, c-format
+msgid "usage: %s [+format] [day month year]\n"
+msgstr ""
+
+#. handle St. Tib's Day
+#: misc-utils/ddate.c:230
+msgid "St. Tib's Day"
+msgstr ""
+
+#: misc-utils/kill.c:199
+#, c-format
+msgid "%s: unknown signal %s\n"
+msgstr "%s: Unbekanntes Signal %s\n"
+
+#: misc-utils/kill.c:261
+#, c-format
+msgid "%s: can't find process \"%s\"\n"
+msgstr "%s: Konnte den Prozeß ť%sŤ nicht finden.\n"
+
+#: misc-utils/kill.c:303
+#, c-format
+msgid "%s: unknown signal %s; valid signals:\n"
+msgstr "%s: Unbekanntes Signal %s; gültige Signale:\n"
+
+#: misc-utils/kill.c:343
+#, c-format
+msgid "usage: %s [ -s signal | -p ] [ -a ] pid ...\n"
+msgstr "Aufruf: %s [ -s Signal | -p ] [ -a ] PID ...\n"
+
+#: misc-utils/kill.c:344
+#, c-format
+msgid " %s -l [ signal ]\n"
+msgstr " %s -l [ Signal ]\n"
+
+#: misc-utils/logger.c:144
+#, c-format
+msgid "logger: %s: %s.\n"
+msgstr "logger: Konnte %s nicht öffnen: %s.\n"
+
+#: misc-utils/logger.c:241
+#, c-format
+msgid "logger: unknown facility name: %s.\n"
+msgstr "logger: Unbekannter ťFacilityŤ-Name: %s.\n"
+
+#: misc-utils/logger.c:253
+#, c-format
+msgid "logger: unknown priority name: %s.\n"
+msgstr "logger: Unbekannter Prioritätsname: %s.\n"
+
+#: misc-utils/logger.c:280
+msgid "logger: [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n"
+msgstr ""
+"Aufruf: logger [-is] [-f Datei] [-p Pri] [-t Tag] [-u Socket] [ Meldung ... "
+"]\n"
+
+#: misc-utils/logger.c:280
+msgid ""
+"usage: logger [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n"
+msgstr ""
+"Aufruf: logger [-is] [-f Datei] [-p Pri] [-t Tag] [-u Socket] [ Meldung ... "
+"]\n"
+
+#: misc-utils/look.c:170 misc-utils/setterm.c:1153 text-utils/more.c:1864
+#: text-utils/more.c:1875
+msgid "Out of memory"
+msgstr "Speicher ist alle"
+
+#: misc-utils/look.c:340
+msgid "usage: look [-dfa] [-t char] string [file]\n"
+msgstr "Aufruf: look [-dfa] [-t Endzeichen] Zeichenkette [Datei]\n"
+
+#: misc-utils/mcookie.c:122 misc-utils/mcookie.c:149
+#, c-format
+msgid "Could not open %s\n"
+msgstr "Konnte %s nicht öffnen\n"
+
+#: misc-utils/mcookie.c:126 misc-utils/mcookie.c:145
+#, c-format
+msgid "Got %d bytes from %s\n"
+msgstr "%d Bytes aus %s gelesen\n"
+
+#: misc-utils/namei.c:107
+#, c-format
+msgid "namei: unable to get current directory - %s\n"
+msgstr "namei: Konnte das aktuelle Verzeichnis nicht feststellen: %s\n"
+
+#: misc-utils/namei.c:118
+#, c-format
+msgid "namei: unable to chdir to %s - %s (%d)\n"
+msgstr "namei: Konnte nicht nach %s wechseln - %s (%d)\n"
+
+#: misc-utils/namei.c:128
+msgid "usage: namei [-mx] pathname [pathname ...]\n"
+msgstr "Aufruf: namei [-mx] Dateiname [Dateiname ...]\n"
+
+#: misc-utils/namei.c:157
+msgid "namei: could not chdir to root!\n"
+msgstr "namei: Konnte nicht in das root-Verzeichnis wechseln!\n"
+
+# XXX
+#: misc-utils/namei.c:164
+msgid "namei: could not stat root!\n"
+msgstr ""
+
+#: misc-utils/namei.c:219
+#, c-format
+msgid " ? could not chdir into %s - %s (%d)\n"
+msgstr " ? Konnte nicht nach %s wechseln - %s (%d)\n"
+
+#: misc-utils/namei.c:248
+#, c-format
+msgid " ? problems reading symlink %s - %s (%d)\n"
+msgstr " ? Probleme beim Lesen der symbolischen Verknüpfung %s - %s (%d)\n"
+
+#: misc-utils/namei.c:258
+msgid " *** EXCEEDED UNIX LIMIT OF SYMLINKS ***"
+msgstr ""
+" *** Die maximale Zahl der symbolischen Verknüpfungen wurde überschritten "
+"***"
+
+#: misc-utils/namei.c:294
+#, c-format
+msgid "namei: unknown file type 0%06o on file %s\n"
+msgstr "namei: Unbekannter Dateityp 0%06o der Datei %s\n"
+
+#: misc-utils/script.c:108
+msgid "usage: script [-a] [file]\n"
+msgstr "Aufruf: script [-a] [Datei]\n"
+
+# Not realy nice...
+#: misc-utils/script.c:128
+#, c-format
+msgid "Script started, file is %s\n"
+msgstr "ťScriptŤ wurde gestartet, die Datei ist %s\n"
+
+# The %s must be at the end, cause it contains the \n
+#: misc-utils/script.c:197
+#, c-format
+msgid "Script started on %s"
+msgstr "ťScriptŤ wurde gestartet: %s"
+
+# The %s must be at the end, cause it contains the \n
+#: misc-utils/script.c:263
+#, c-format
+msgid ""
+"\n"
+"Script done on %s"
+msgstr ""
+"\n"
+"ťScriptŤ beendet: %s"
+
+#: misc-utils/script.c:268
+#, c-format
+msgid "Script done, file is %s\n"
+msgstr "ťScriptŤ wurde beendet, die Datei ist %s\n"
+
+#: misc-utils/script.c:280
+msgid "openpty failed\n"
+msgstr "ťopenptyŤ ist fehlgeschlagen\n"
+
+#: misc-utils/script.c:314
+msgid "Out of pty's\n"
+msgstr "Keine ptys mehr.\n"
+
+#. Print error message about arguments, and the command's syntax.
+#: misc-utils/setterm.c:745
+#, c-format
+msgid "%s: Argument error, usage\n"
+msgstr "%s: Fehler bei den Argumenten; Aufruf:\n"
+
+#: misc-utils/setterm.c:748
+msgid " [ -term terminal_name ]\n"
+msgstr " [ -term Terminalname ]\n"
+
+#: misc-utils/setterm.c:749
+msgid " [ -reset ]\n"
+msgstr " [ -reset ]\n"
+
+#: misc-utils/setterm.c:750
+msgid " [ -initialize ]\n"
+msgstr " [ -initialize ]\n"
+
+#: misc-utils/setterm.c:751
+msgid " [ -cursor [on|off] ]\n"
+msgstr " [ -cursor [on|off] ]\n"
+
+#: misc-utils/setterm.c:753
+msgid " [ -snow [on|off] ]\n"
+msgstr " [ -snow [on|off] ]\n"
+
+#: misc-utils/setterm.c:754
+msgid " [ -softscroll [on|off] ]\n"
+msgstr " [ -softscroll [on|off] ]\n"
+
+#: misc-utils/setterm.c:755
+msgid " [ -keyboard pc|olivetti|dutch|extended ]\n"
+msgstr " [ -keyboard pc|olivetti|dutch|extended ]\n"
+
+#: misc-utils/setterm.c:757
+msgid " [ -repeat [on|off] ]\n"
+msgstr " [ -repeat [on|off] ]\n"
+
+#: misc-utils/setterm.c:758
+msgid " [ -appcursorkeys [on|off] ]\n"
+msgstr " [ -appcursorkeys [on|off] ]\n"
+
+#: misc-utils/setterm.c:759
+msgid " [ -linewrap [on|off] ]\n"
+msgstr " [ -linewrap [on|off] ]\n"
+
+#: misc-utils/setterm.c:760
+msgid " [ -default ]\n"
+msgstr " [ -default ]\n"
+
+#: misc-utils/setterm.c:761
+msgid " [ -foreground black|blue|green|cyan"
+msgstr " [ -foreground black|blue|green|cyan"
+
+#: misc-utils/setterm.c:762 misc-utils/setterm.c:764
+msgid "|red|magenta|yellow|white|default ]\n"
+msgstr "|red|magenta|yellow|white|default ]\n"
+
+#: misc-utils/setterm.c:763
+msgid " [ -background black|blue|green|cyan"
+msgstr " [ -background black|blue|green|cyan"
+
+#: misc-utils/setterm.c:765
+msgid " [ -ulcolor black|grey|blue|green|cyan"
+msgstr " [ -ulcolor black|grey|blue|green|cyan"
+
+#: misc-utils/setterm.c:766 misc-utils/setterm.c:768 misc-utils/setterm.c:770
+#: misc-utils/setterm.c:772
+msgid "|red|magenta|yellow|white ]\n"
+msgstr "|red|magenta|yellow|white ]\n"
+
+#: misc-utils/setterm.c:767
+msgid " [ -ulcolor bright blue|green|cyan"
+msgstr " [ -ulcolor bright blue|green|cyan"
+
+#: misc-utils/setterm.c:769
+msgid " [ -hbcolor black|grey|blue|green|cyan"
+msgstr " [ -hbcolor black|grey|blue|green|cyan"
+
+#: misc-utils/setterm.c:771
+msgid " [ -hbcolor bright blue|green|cyan"
+msgstr " [ -hbcolor bright blue|green|cyan"
+
+#: misc-utils/setterm.c:774
+msgid " [ -standout [ attr ] ]\n"
+msgstr " [ -standout [ Attribut ] ]\n"
+
+#: misc-utils/setterm.c:776
+msgid " [ -inversescreen [on|off] ]\n"
+msgstr " [ -inversescreen [on|off] ]\n"
+
+#: misc-utils/setterm.c:777
+msgid " [ -bold [on|off] ]\n"
+msgstr " [ -bold [on|off] ]\n"
+
+#: misc-utils/setterm.c:778
+msgid " [ -half-bright [on|off] ]\n"
+msgstr " [ -half-bright [on|off] ]\n"
+
+#: misc-utils/setterm.c:779
+msgid " [ -blink [on|off] ]\n"
+msgstr " [ -blink [on|off] ]\n"
+
+#: misc-utils/setterm.c:780
+msgid " [ -reverse [on|off] ]\n"
+msgstr " [ -reverse [on|off] ]\n"
+
+#: misc-utils/setterm.c:781
+msgid " [ -underline [on|off] ]\n"
+msgstr " [ -underline [on|off] ]\n"
+
+#: misc-utils/setterm.c:782
+msgid " [ -store ]\n"
+msgstr " [ -store ]\n"
+
+#: misc-utils/setterm.c:783
+msgid " [ -clear [all|rest] ]\n"
+msgstr " [ -clear [all|rest] ]\n"
+
+#: misc-utils/setterm.c:784
+msgid " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabN = 1-160)\n"
+
+#: misc-utils/setterm.c:785
+msgid " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabN = 1-160)\n"
+
+#: misc-utils/setterm.c:786
+msgid " [ -regtabs [1-160] ]\n"
+msgstr " [ -regtabs [1-160] ]\n"
+
+#: misc-utils/setterm.c:787
+msgid " [ -blank [0-60] ]\n"
+msgstr " [ -blank [0-60] ]\n"
+
+#: misc-utils/setterm.c:788
+msgid " [ -dump [1-NR_CONSOLES] ]\n"
+msgstr " [ -dump [1-Anzahl_Konsolen] ]\n"
+
+#: misc-utils/setterm.c:789
+msgid " [ -append [1-NR_CONSOLES] ]\n"
+msgstr " [ -append [1-Anzahl_Konsolen] ]\n"
+
+#: misc-utils/setterm.c:790
+msgid " [ -file dumpfilename ]\n"
+msgstr " [ -file Dumpdateiname ]\n"
+
+#: misc-utils/setterm.c:791
+msgid " [ -msg [on|off] ]\n"
+msgstr " [ -msg [on|off] ]\n"
+
+#: misc-utils/setterm.c:792
+msgid " [ -msglevel [0-8] ]\n"
+msgstr " [ -msglevel [0-8] ]\n"
+
+#: misc-utils/setterm.c:793
+msgid " [ -powersave [on|vsync|hsync|powerdown|off] ]\n"
+msgstr " [ -powersave [on|vsync|hsync|powerdown|off] ]\n"
+
+#: misc-utils/setterm.c:794
+msgid " [ -powerdown [0-60] ]\n"
+msgstr " [ -powerdown [0-60] ]\n"
+
+#: misc-utils/setterm.c:795
+msgid " [ -blength [0-2000] ]\n"
+msgstr " [ -blength [0-2000] ]\n"
+
+#: misc-utils/setterm.c:796
+#, fuzzy
+msgid " [ -bfreq freqnumber ]\n"
+msgstr " [ -bfreq Freqnummer ]\n"
+
+#: misc-utils/setterm.c:841
+msgid "keyboard.pc"
+msgstr ""
+
+#: misc-utils/setterm.c:844
+msgid "keyboard.olivetti"
+msgstr ""
+
+#: misc-utils/setterm.c:847
+msgid "keyboard.dutch"
+msgstr ""
+
+#: misc-utils/setterm.c:850
+msgid "keyboard.extended"
+msgstr ""
+
+#: misc-utils/setterm.c:884
+msgid "snow.on"
+msgstr ""
+
+#: misc-utils/setterm.c:886
+msgid "snow.off"
+msgstr ""
+
+#: misc-utils/setterm.c:892
+msgid "softscroll.on"
+msgstr ""
+
+#: misc-utils/setterm.c:894
+msgid "softscroll.off"
+msgstr ""
+
+#: misc-utils/setterm.c:1069
+msgid "cannot (un)set powersave mode\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1108 misc-utils/setterm.c:1116
+#, c-format
+msgid "klogctl error: %s\n"
+msgstr "ťklogctlŤ Fehler: %s\n"
+
+#: misc-utils/setterm.c:1157
+#, c-format
+msgid "Error reading %s\n"
+msgstr "Fehler beim Lesen von %s\n"
+
+#: misc-utils/setterm.c:1172
+msgid "Error writing screendump\n"
+msgstr "Fehler beim Schreiben des Bildschirmdumps\n"
+
+#: misc-utils/setterm.c:1186
+#, c-format
+msgid "couldn't read %s, and cannot ioctl dump\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1251
+#, c-format
+msgid "%s: $TERM is not defined.\n"
+msgstr "%s: Die Umgebungsvariable TERM ist nicht gesetzt.\n"
+
+#: misc-utils/tsort.c:119
+msgid "usage: tsort [ inputfile ]\n"
+msgstr "Aufruf: tsort [ Eingabedatei ]\n"
+
+#: misc-utils/tsort.c:156
+msgid "tsort: odd data count.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:321
+msgid "tsort: cycle in data.\n"
+msgstr "tsort: Zyklus in den Daten.\n"
+
+#: misc-utils/tsort.c:334
+msgid "tsort: internal error -- could not find cycle.\n"
+msgstr "tsort: Interner Fehler -- konnte den Zyklus nicht finden.\n"
+
+#: misc-utils/whereis.c:158
+msgid "whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n"
+msgstr "whereis [ -sbmu ] [ -SBM Verzeichnis ... -f ] Name...\n"
+
+#: misc-utils/write.c:99
+msgid "write: can't find your tty's name\n"
+msgstr ""
+
+#: misc-utils/write.c:110
+msgid "write: you have write permission turned off.\n"
+msgstr ""
+
+#: misc-utils/write.c:131
+#, c-format
+msgid "write: %s is not logged in on %s.\n"
+msgstr ""
+
+#: misc-utils/write.c:139
+#, c-format
+msgid "write: %s has messages disabled on %s\n"
+msgstr ""
+
+#: misc-utils/write.c:146
+msgid "usage: write user [tty]\n"
+msgstr ""
+
+#: misc-utils/write.c:245
+#, c-format
+msgid "write: %s is not logged in\n"
+msgstr ""
+
+#: misc-utils/write.c:254
+#, c-format
+msgid "write: %s has messages disabled\n"
+msgstr ""
+
+#: misc-utils/write.c:258
+#, c-format
+msgid "write: %s is logged in more than once; writing to %s\n"
+msgstr ""
+
+#: misc-utils/write.c:325
+#, c-format
+msgid "Message from %s@%s on %s at %s ..."
+msgstr ""
+
+#: mount/fstab.c:116
+#, c-format
+msgid "warning: error reading %s: %s"
+msgstr "Warnung: Fehler beim Lesen von %s: %s"
+
+#: mount/fstab.c:143 mount/fstab.c:166
+#, c-format
+msgid "warning: can't open %s: %s"
+msgstr "Warnung: Konnte %s nicht öffnen: %s"
+
+#: mount/fstab.c:147
+#, c-format
+msgid "mount: could not open %s - using %s instead\n"
+msgstr "mount: Konnte %s nicht öffnen - benutze %s stattdessen\n"
+
+#. linktargetfile does not exist (as a file)
+#. and we cannot create it. Read-only filesystem?
+#. Too many files open in the system? Filesystem full?
+#: mount/fstab.c:358
+#, c-format
+msgid "can't create lock file %s: %s (use -n flag to override)"
+msgstr ""
+"Konnte die Lock-Datei %s nicht anlegen: %s (benutzen Sie die -n Option, um "
+"dies zu umgehen)"
+
+#: mount/fstab.c:370
+#, c-format
+msgid "can't link lock file %s: %s (use -n flag to override)"
+msgstr ""
+"Konnte keinen Link für die Lock-Datei %s anlegen: %s (benutzen Sie die -n "
+"Option, um dies zu umgehen)"
+
+#: mount/fstab.c:382
+#, c-format
+msgid "can't open lock file %s: %s (use -n flag to override)"
+msgstr ""
+"Konnte die Lock-Datei %s nicht öffnen: %s (benutzen Sie die -n Option, um "
+"dies zu umgehen)"
+
+#: mount/fstab.c:397
+#, c-format
+msgid "Can't lock lock file %s: %s\n"
+msgstr "Konnte die Lock-Datei %s nicht ťlockenŤ: %s\n"
+
+#: mount/fstab.c:408
+#, c-format
+msgid "can't lock lock file %s: %s"
+msgstr "Konnte die Lock-Datei %s nicht ťlockenŤ: %s"
+
+#: mount/fstab.c:410
+msgid "timed out"
+msgstr "Zeitüberschreitung"
+
+#: mount/fstab.c:455 mount/fstab.c:463
+#, c-format
+msgid "cannot open %s (%s) - mtab not updated"
+msgstr "Konnte %s nicht öffnen (%s) - mtab nicht aktualisiert"
+
+#: mount/fstab.c:488
+msgid "mount: warning: cannot change mounted device with a remount\n"
+msgstr ""
+"mount: Warnung: Das Gerät kann nicht mit einem ťremountŤ geändert werden\n"
+
+#: mount/fstab.c:493
+msgid "mount: warning: cannot change filesystem type with a remount\n"
+msgstr ""
+"mount: Der Dateisystemtyp kann nicht mit einem ťremountŤ geändert werden\n"
+
+#: mount/fstab.c:501 mount/fstab.c:507
+#, c-format
+msgid "error writing %s: %s"
+msgstr "Fehler beim Schreiben von %s: %s"
+
+# "Modus" is the translation, that fileutils.po uses.
+# I don't like it, but I haven't got a better one.
+# Someone suggested "Zugriffsrechte", which I currently like
+# better
+# XXX - search for "Modus" and you'll find a similiar message
+#: mount/fstab.c:514
+#, c-format
+msgid "error changing mode of %s: %s\n"
+msgstr "Fehler beim Ändern der Zugriffsrechte von %s: %s\n"
+
+#: mount/fstab.c:521
+#, c-format
+msgid "can't rename %s to %s: %s\n"
+msgstr "Konnte %s nicht in %s umbenennen: %s\n"
+
+#: mount/lomount.c:78
+#, c-format
+msgid "loop: can't open device %s: %s\n"
+msgstr "loop: Konnte das Gerät %s nicht öffnen: %s\n"
+
+#: mount/lomount.c:84
+#, c-format
+msgid "loop: can't get info on device %s: %s\n"
+msgstr "loop: Konnte keine Informationen über Gerät %s erhalten: %s\n"
+
+#: mount/lomount.c:89 mount/losetup.c:74
+#, c-format
+msgid "%s: [%04x]:%ld (%s) offset %d, %s encryption\n"
+msgstr ""
+
+# XXX - pretty dumb
+#: mount/lomount.c:143
+msgid "mount: could not find any device /dev/loop#"
+msgstr "mount: Konnte kein Gerät /dev/loop# finden"
+
+#: mount/lomount.c:147
+msgid ""
+"mount: Could not find any loop device.\n"
+" Maybe /dev/loop# has a wrong major number?"
+msgstr ""
+"mount: Konnte kein ťloopŤ Gerät finden.\n"
+" Vielleicht hat /dev/loop# eine falsche Major Nummer?"
+
+#: mount/lomount.c:151
+#, c-format
+msgid ""
+"mount: Could not find any loop device, and, according to %s,\n"
+" this kernel does not know about the loop device.\n"
+" (If so, then recompile or `insmod loop.o'.)"
+msgstr ""
+"mount: Konnte kein ťloopŤ-Gerät finden. Laut %s unterstützt\n"
+" dieses Kernel keine ťloopŤ-Geräte. (wenn dies der Fall\n"
+" ist, dann sollten Sie das Kernel neu kompilieren oder\n"
+" ťinsmod loop.oŤ ausführen.)"
+
+#: mount/lomount.c:156
+msgid ""
+"mount: Could not find any loop device. Maybe this kernel does not know\n"
+" about the loop device (then recompile or `insmod loop.o'), or\n"
+" maybe /dev/loop# has the wrong major number?"
+msgstr ""
+
+#: mount/lomount.c:160
+msgid "mount: could not find any free loop device"
+msgstr "mount: Konnte kein freies ťloopŤ-Gerät finden"
+
+#: mount/lomount.c:191 mount/losetup.c:106
+#, c-format
+msgid "Unsupported encryption type %s\n"
+msgstr "Der Verschlüsselungstyp %s wird nicht unterstützt\n"
+
+#: mount/lomount.c:210 mount/losetup.c:125
+msgid "Init (up to 16 hex digits): "
+msgstr ""
+
+#: mount/lomount.c:217 mount/losetup.c:132
+#, c-format
+msgid "Non-hex digit '%c'.\n"
+msgstr ""
+
+#: mount/lomount.c:223 mount/losetup.c:138
+#, c-format
+msgid "Don't know how to get key for encryption system %d\n"
+msgstr ""
+
+#: mount/lomount.c:239
+#, c-format
+msgid "set_loop(%s,%s,%d): success\n"
+msgstr ""
+
+#: mount/lomount.c:250
+#, c-format
+msgid "loop: can't delete device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:260
+#, c-format
+msgid "del_loop(%s): success\n"
+msgstr ""
+
+#: mount/lomount.c:268
+msgid "This mount was compiled without loop support. Please recompile.\n"
+msgstr ""
+
+#: mount/losetup.c:70
+msgid "Cannot get loop info"
+msgstr ""
+
+#: mount/losetup.c:174
+#, c-format
+msgid ""
+"usage:\n"
+" %s loop_device # give info\n"
+" %s -d loop_device # delete\n"
+" %s [ -e encryption ] [ -o offset ] loop_device file # setup\n"
+msgstr ""
+
+#: mount/losetup.c:231
+msgid "No loop support was available at compile time. Please recompile.\n"
+msgstr ""
+
+#: mount/mntent.c:165
+#, c-format
+msgid "[mntent]: warning: no final newline at the end of %s\n"
+msgstr ""
+
+#: mount/mntent.c:216
+#, c-format
+msgid "[mntent]: line %d in %s is bad%s\n"
+msgstr "[mntent]: Zeile %d in %s ist fehlerhaft%s\n"
+
+#: mount/mntent.c:219
+msgid "; rest of file ignored"
+msgstr "; der Rest der Datei wurde ignoriert"
+
+#: mount/mount.c:320
+#, c-format
+msgid "mount: according to mtab, %s is already mounted on %s"
+msgstr "mount: Laut mtab ist %s schon auf %s gemountet"
+
+#: mount/mount.c:323
+#, c-format
+msgid "mount: according to mtab, %s is mounted on %s"
+msgstr "mount: Laut mtab ist %s auf %s gemountet"
+
+#: mount/mount.c:344
+#, c-format
+msgid "mount: can't open %s for writing: %s"
+msgstr "mount: Konnte %s nicht zum Schreiben öffnen: %s"
+
+#: mount/mount.c:359 mount/mount.c:608
+#, c-format
+msgid "mount: error writing %s: %s"
+msgstr "mount: Fehler beim Schreiben von %s: %s"
+
+# "Modus"
+#: mount/mount.c:366
+#, c-format
+msgid "mount: error changing mode of %s: %s"
+msgstr "mount: Fehler beim Ändern der Zugriffsrechte von %s: %s"
+
+#: mount/mount.c:440
+msgid "mount failed"
+msgstr "mount ist fehlgeschlagen"
+
+#: mount/mount.c:442
+#, c-format
+msgid "mount: only root can mount %s on %s"
+msgstr "mount: Nur ťrootŤ kann %s auf %s mounten"
+
+#: mount/mount.c:467
+msgid "mount: loop device specified twice"
+msgstr ""
+
+#: mount/mount.c:473
+msgid "mount: type specified twice"
+msgstr ""
+
+#: mount/mount.c:485
+msgid "mount: skipping the setup of a loop device\n"
+msgstr ""
+
+#: mount/mount.c:494
+#, c-format
+msgid "mount: going to use the loop device %s\n"
+msgstr ""
+
+#: mount/mount.c:498
+msgid "mount: failed setting up loop device\n"
+msgstr ""
+
+#: mount/mount.c:502
+msgid "mount: setup loop device successfully\n"
+msgstr ""
+
+#: mount/mount.c:515
+msgid "mount: this version was compiled without support for the type `nfs'"
+msgstr ""
+
+#: mount/mount.c:565 mount/mount.c:990
+#, c-format
+msgid "mount: cannot fork: %s"
+msgstr "mount: Konnte ťfork()Ť nicht ausführen: %s"
+
+#: mount/mount.c:603
+#, c-format
+msgid "mount: can't open %s: %s"
+msgstr "mount: Konnte %s nicht öffnen: %s"
+
+#: mount/mount.c:631
+msgid "mount: you must specify the filesystem type"
+msgstr "mount: Sie müssen den Dateisystemtyp angeben"
+
+#: mount/mount.c:638 mount/mount.c:673
+#, c-format
+msgid "mount: mount point %s is not a directory"
+msgstr "mount: Mountpunkt %s ist kein Verzeichnis"
+
+#: mount/mount.c:640
+msgid "mount: permission denied"
+msgstr ""
+
+#: mount/mount.c:642
+msgid "mount: must be superuser to use mount"
+msgstr ""
+
+#. heuristic: if /proc/version exists, then probably proc is mounted
+#. proc mounted?
+#: mount/mount.c:646 mount/mount.c:650
+#, c-format
+msgid "mount: %s is busy"
+msgstr "mount: %s wird gerade benutzt"
+
+#. no
+#. yes, don't mention it
+#: mount/mount.c:652
+msgid "mount: proc already mounted"
+msgstr "mount: proc ist bereits gemountet"
+
+#: mount/mount.c:654
+#, c-format
+msgid "mount: %s already mounted or %s busy"
+msgstr "mount: %s ist bereits gemountet oder %s wird gerade benutzt"
+
+#: mount/mount.c:660
+#, c-format
+msgid "mount: mount point %s does not exist"
+msgstr "mount: Mountpunkt %s existiert nicht"
+
+#: mount/mount.c:662
+#, c-format
+msgid "mount: mount point %s is a symbolic link to nowhere"
+msgstr ""
+"mount: Mountpunkt %s ist eine symbolische Verknüpfung,\n"
+" deren Ziel nicht existiert"
+
+#: mount/mount.c:665
+#, c-format
+msgid "mount: special device %s does not exist"
+msgstr "mount: Gerätedatei %s existiert nicht"
+
+#: mount/mount.c:675
+#, c-format
+msgid ""
+"mount: special device %s does not exist\n"
+" (a path prefix is not a directory)\n"
+msgstr ""
+
+#: mount/mount.c:687
+#, c-format
+msgid "mount: %s not mounted already, or bad option"
+msgstr ""
+"mount: %s ist noch nicht gemountet oder es wurden\n"
+" ungültige Optionen angegeben"
+
+#: mount/mount.c:689
+#, c-format
+msgid ""
+"mount: wrong fs type, bad option, bad superblock on %s,\n"
+" or too many mounted file systems"
+msgstr ""
+"mount: Falscher Dateisystemtyp, ungültige Optionen, der\n"
+" ťSuperblockŤ von %s ist beschädigt oder es sind\n"
+" zu viele Dateisysteme gemountet"
+
+#: mount/mount.c:704
+msgid "mount table full"
+msgstr "Mounttabelle ist voll"
+
+#: mount/mount.c:706
+#, c-format
+msgid "mount: %s: can't read superblock"
+msgstr "mount: %s: Konnte den Superblock nicht lesen"
+
+#: mount/mount.c:709
+#, c-format
+msgid "mount: %s has wrong major or minor number"
+msgstr "mount: %s hat eine falsche Major oder Minor Geräte-Nummer"
+
+#: mount/mount.c:714
+#, c-format
+msgid "mount: fs type %s not supported by kernel"
+msgstr "mount: Der Dateisystemtyp %s wird nicht vom Kernel unterstützt"
+
+#: mount/mount.c:726
+#, c-format
+msgid "mount: probably you meant %s"
+msgstr "mount: Vielleicht meinten sie ť%sŤ"
+
+#: mount/mount.c:728
+msgid "mount: maybe you meant iso9660 ?"
+msgstr "mount: Vielleicht meinten Sie ťiso9660Ť?"
+
+#: mount/mount.c:731
+#, c-format
+msgid "mount: %s has wrong device number or fs type %s not supported"
+msgstr ""
+"mount: %s hat eine falsche Geräte-Nummer oder der\n"
+" Dateisystemtyp %s wird nicht unterstützt"
+
+#. strange ...
+#: mount/mount.c:736
+#, c-format
+msgid "mount: %s is not a block device, and stat fails?"
+msgstr ""
+"mount: %s ist kein blockorientiertes Gerät und ťstatŤ\n"
+" schlug fehl?"
+
+#: mount/mount.c:738
+#, c-format
+msgid ""
+"mount: the kernel does not recognize %s as a block device\n"
+" (maybe `insmod driver'?)"
+msgstr ""
+"mount: Das Kernel erkennt %s nicht als blockorientiertes\n"
+" Gerät (Vielleicht hilft ťinsmod TreiberŤ?)"
+
+#: mount/mount.c:741
+#, c-format
+msgid "mount: %s is not a block device (maybe try `-o loop'?)"
+msgstr ""
+"mount: %s ist kein blockorientiertes Gerät\n"
+" (Vielleicht probieren Sie ť-o loopŤ?)"
+
+#: mount/mount.c:744
+#, c-format
+msgid "mount: %s is not a block device"
+msgstr "mount: %s ist kein blockorientiertes Gerät"
+
+#: mount/mount.c:747
+#, c-format
+msgid "mount: %s is not a valid block device"
+msgstr "mount: %s ist kein gültiges blockorientiertes Gerät"
+
+#: mount/mount.c:751
+#, c-format
+msgid "mount: block device %s is not permitted on its filesystem"
+msgstr ""
+
+#: mount/mount.c:767
+#, c-format
+msgid "mount: %s%s is write-protected, mounting read-only"
+msgstr ""
+"mount: %s%s ist schreibgeschützt, es wird im\n"
+" Nur-Lese-Modus gemountet"
+
+#: mount/mount.c:768
+msgid "block device "
+msgstr "blockorientiertes Gerät "
+
+#: mount/mount.c:854
+#, c-format
+msgid "mount: consider mounting %s by %s\n"
+msgstr "mount: Ziehen Sie in Betracht %s mit Hilfe von %s zu mounten\n"
+
+#: mount/mount.c:855
+msgid "UUID"
+msgstr "UUID"
+
+#: mount/mount.c:855
+#, fuzzy
+msgid "label"
+msgstr "Bezeichner"
+
+#: mount/mount.c:857 mount/mount.c:1173
+msgid "mount: no such partition found"
+msgstr "mount: Keine passende Partition gefunden"
+
+#: mount/mount.c:865
+msgid "mount: no type was given - I'll assume nfs because of the colon\n"
+msgstr ""
+"mount: Es wurde kein Typ angegeben - Auf Grund des\n"
+" Doppelpunktes wird nfs angenommen\n"
+
+#.
+#. * Retry in the background.
+#.
+#: mount/mount.c:881
+#, c-format
+msgid "mount: backgrounding \"%s\"\n"
+msgstr "mount: ť%sŤ wird im Hintergrund fortgesetzt\n"
+
+# Not realy nice
+#: mount/mount.c:892
+#, c-format
+msgid "mount: giving up \"%s\"\n"
+msgstr "mount: ť%sŤ schlug fehl\n"
+
+#: mount/mount.c:941
+#, c-format
+msgid "mount: %s already mounted on %s\n"
+msgstr "mount: %s ist bereits auf %s gemountet\n"
+
+#: mount/mount.c:1052
+msgid ""
+"Usage: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-t vfstypes]\n"
+" mount [-nfrsvw] [-o options] special | node\n"
+" mount [-nfrsvw] [-t vfstype] [-o options] special node\n"
+" A special device can be indicated by -L label or -U uuid .\n"
+msgstr ""
+"Aufruf: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-t VFS-Typen]\n"
+" mount [-nfrsvw] [-o Optionen] Spezialdatei | Verzeichnis\n"
+" mount [-nfrsvw] [-t VFS-Typ] [-o Optionen] Gerät Verzeichnis\n"
+" Das Gerät kann auch durch -L Label oder -U UUID angegeben werden.\n"
+
+#: mount/mount.c:1158
+msgid "mount: only root can do that"
+msgstr "mount: Nur ťrootŤ kann dies tun"
+
+#: mount/mount.c:1163
+#, c-format
+msgid "mount: no %s found - creating it..\n"
+msgstr "mount: %s nicht gefunden - Erzeuge sie...\n"
+
+#: mount/mount.c:1175
+#, c-format
+msgid "mount: mounting %s\n"
+msgstr "mount: Mounte %s\n"
+
+#: mount/mount.c:1184
+msgid "not mounted anything"
+msgstr "Es wurde nichts gemountet"
+
+#: mount/mount.c:1197
+#, c-format
+msgid "mount: cannot find %s in %s"
+msgstr "mount: Konnte %s nicht in %s finden"
+
+#: mount/mount.c:1211
+#, c-format
+msgid "mount: can't find %s in %s or %s"
+msgstr "mount: Konnte %s nicht in %s oder %s finden"
+
+#: mount/mount_by_label.c:141
+msgid "mount: bad UUID"
+msgstr "mount: ungültige UUID"
+
+#: mount/mount_guess_fstype.c:187
+#, c-format
+msgid "mount: you didn't specify a filesystem type for %s\n"
+msgstr "mount: Es wurde kein Dateisystemtyp für %s angegeben\n"
+
+#: mount/mount_guess_fstype.c:190
+#, c-format
+msgid " I will try type %s\n"
+msgstr " Werde den Typ %s probieren\n"
+
+#: mount/mount_guess_fstype.c:192
+#, c-format
+msgid " I will try all types mentioned in %s or %s\n"
+msgstr ""
+" Werde alle Dateisystemtypen probieren, die in %s oder %s\n"
+" aufgelistet sind\n"
+
+#: mount/nfsmount.c:157
+msgid "mount: excessively long host:dir argument\n"
+msgstr ""
+
+#: mount/nfsmount.c:170
+msgid "mount: warning: multiple hostnames not supported\n"
+msgstr "mount: Mehrere Rechnernamen werden nicht unterstützt\n"
+
+#: mount/nfsmount.c:174
+msgid "mount: directory to mount not in host:dir format\n"
+msgstr ""
+
+#: mount/nfsmount.c:185 mount/nfsmount.c:420
+#, c-format
+msgid "mount: can't get address for %s\n"
+msgstr "mount: Konnte die Adresse von %s nicht herausfinden\n"
+
+#: mount/nfsmount.c:191
+msgid "mount: got bad hp->h_length\n"
+msgstr ""
+
+#: mount/nfsmount.c:208
+msgid "mount: excessively long option argument\n"
+msgstr ""
+
+#: mount/nfsmount.c:299
+msgid "Warning: Unrecognized proto= option.\n"
+msgstr "Warnung: unbekannte ťproto=Ť Option.\n"
+
+#: mount/nfsmount.c:306
+msgid "Warning: Option namlen is not supported.\n"
+msgstr "Warnung: Die Option ťnamlenŤ wird nicht unterstützt.\n"
+
+#: mount/nfsmount.c:310
+#, c-format
+msgid "unknown nfs mount parameter: %s=%d\n"
+msgstr "Unbekannter nfs-Mount-Parameter: %s=%d\n"
+
+#: mount/nfsmount.c:345
+msgid "Warning: option nolock is not supported.\n"
+msgstr "Warnung: Die Option ťnolockŤ wird nicht unterstützt.\n"
+
+#: mount/nfsmount.c:348
+#, c-format
+msgid "unknown nfs mount option: %s%s\n"
+msgstr "unbekannte nfs-Mount-Option: %s%s\n"
+
+#: mount/nfsmount.c:426
+msgid "mount: got bad hp->h_length?\n"
+msgstr ""
+
+#: mount/nfsmount.c:528
+#, c-format
+msgid "mount: %s:%s failed, reason given by server: %s\n"
+msgstr ""
+"mount: %s:%s schlug fehl, Der folgende Grund wurde vom Server angegeben:\n"
+" %s\n"
+
+#: mount/nfsmount.c:539
+msgid "NFS over TCP is not supported.\n"
+msgstr "NFS über TCP wird nicht unterstützt.\n"
+
+#: mount/nfsmount.c:546
+msgid "nfs socket"
+msgstr ""
+
+#: mount/nfsmount.c:550
+msgid "nfs bindresvport"
+msgstr ""
+
+#: mount/nfsmount.c:561
+msgid "used portmapper to find NFS port\n"
+msgstr ""
+
+#: mount/nfsmount.c:565
+#, c-format
+msgid "using port %d for nfs deamon\n"
+msgstr ""
+
+#: mount/nfsmount.c:576
+msgid "nfs connect"
+msgstr ""
+
+#: mount/nfsmount.c:665
+#, c-format
+msgid "unknown nfs status return value: %d"
+msgstr ""
+
+#: mount/sundries.c:40 mount/sundries.c:55
+msgid "not enough memory"
+msgstr "Nicht genügend Speicher"
+
+#: mount/sundries.c:65
+msgid "bug in xstrndup call"
+msgstr ""
+
+#: mount/swapon.c:51
+#, c-format
+msgid ""
+"usage: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p priority] special ...\n"
+" %s [-s]\n"
+msgstr ""
+"Aufruf: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p Priorität] Spezialdatei ...\n"
+" %s [-s]\n"
+
+# The first %s is swapon/swapoff
+#: mount/swapon.c:88
+#, c-format
+msgid "%s on %s\n"
+msgstr "%s für %s\n"
+
+#: mount/swapon.c:93
+#, c-format
+msgid "swapon: cannot stat %s: %s\n"
+msgstr "swapon: Konnte ťstatŤ nicht auf %s anwenden: %s\n"
+
+# "Modus"
+#: mount/swapon.c:99
+#, c-format
+msgid "swapon: warning: %s has insecure permissions %04o, 0600 suggested\n"
+msgstr ""
+"swapon: Warnung: Die Zugriffsrechte (%2$04o) von %1$s sind unsicher,\n"
+" 0600 wird empfohlen\n"
+
+#: mount/swapon.c:108
+#, c-format
+msgid "swapon: Skipping file %s - it appears to have holes.\n"
+msgstr "swapon: Überspringe die Datei %s - Sie scheint ťholesŤ zu enthalten.\n"
+
+#: mount/swapon.c:213
+#, c-format
+msgid "%s: cannot open %s: %s\n"
+msgstr "%s: Konnte %s nicht öffnen: %s\n"
+
+#: mount/umount.c:65
+msgid "umount: compiled without support for -f\n"
+msgstr "umount: Die Unterstützung für -f wurde nicht einkompiliert\n"
+
+#: mount/umount.c:115
+#, c-format
+msgid "host: %s, directory: %s\n"
+msgstr "Rechner: %s, Verzeichnis: %s\n"
+
+#: mount/umount.c:132
+#, c-format
+msgid "umount: can't get address for %s\n"
+msgstr "umount: Konnte die Adresse von %s nicht herausfinden\n"
+
+#: mount/umount.c:137
+msgid "umount: got bad hostp->h_length\n"
+msgstr ""
+
+#: mount/umount.c:175
+#, c-format
+msgid "umount: %s: invalid block device"
+msgstr ""
+
+#: mount/umount.c:177
+#, c-format
+msgid "umount: %s: not mounted"
+msgstr "umount: %s ist nicht gemountet"
+
+#: mount/umount.c:179
+#, c-format
+msgid "umount: %s: can't write superblock"
+msgstr "umount: %s: Konnte den ťSuperblockŤ nicht schreiben"
+
+# XXX - I did have a better one for busy
+#. Let us hope fstab has a line "proc /proc ..."
+#. and not "none /proc ..."
+#: mount/umount.c:183
+#, c-format
+msgid "umount: %s: device is busy"
+msgstr "umount: %s: Das Gerät wird momenten noch benutzt"
+
+#: mount/umount.c:185
+#, c-format
+msgid "umount: %s: not found"
+msgstr "umount: %s: Nicht gefunden"
+
+#: mount/umount.c:187
+#, c-format
+msgid "umount: %s: must be superuser to umount"
+msgstr ""
+
+#: mount/umount.c:189
+#, c-format
+msgid "umount: %s: block devices not permitted on fs"
+msgstr ""
+
+#: mount/umount.c:191
+#, c-format
+msgid "umount: %s: %s"
+msgstr "umount: %s: %s"
+
+#: mount/umount.c:235
+msgid "no umount2, trying umount...\n"
+msgstr ""
+
+#: mount/umount.c:248
+#, c-format
+msgid "could not umount %s - trying %s instead\n"
+msgstr ""
+
+#: mount/umount.c:264
+#, c-format
+msgid "umount: %s busy - remounted read-only\n"
+msgstr ""
+
+#: mount/umount.c:272
+#, c-format
+msgid "umount: could not remount %s read-only\n"
+msgstr ""
+
+#: mount/umount.c:280
+#, c-format
+msgid "%s umounted\n"
+msgstr ""
+
+#: mount/umount.c:363
+msgid "umount: cannot find list of filesystems to unmount"
+msgstr ""
+
+#: mount/umount.c:392
+msgid ""
+"Usage: umount [-hV]\n"
+" umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n"
+" umount [-f] [-r] [-n] [-v] special | node...\n"
+msgstr ""
+"Aufruf: umount [-hV]\n"
+" umoumt -a [-f] [-r] [-n] [-v] [-t VFS-Typen]\n"
+" umount [-f] [-r] [-n] [-v] Spezialdatei | Verzeichnis ...\n"
+
+#: mount/umount.c:453
+msgid "umount: only root can do that"
+msgstr "umount: Nur ťrootŤ kann dies tun"
+
+#: mount/umount.c:468
+#, c-format
+msgid "Trying to umount %s\n"
+msgstr "Versuche %s zu umounten\n"
+
+#: mount/umount.c:472
+#, c-format
+msgid "Could not find %s in mtab\n"
+msgstr "Konnte %s nicht in mtab finden\n"
+
+#: mount/umount.c:476
+#, c-format
+msgid "umount: %s is not mounted (according to mtab)"
+msgstr "umount: %s ist laut ťmtabŤ nicht gemountet"
+
+#: mount/umount.c:478
+#, c-format
+msgid "umount: it seems %s is mounted multiple times"
+msgstr "umount: %s scheint mehrfach gemountet zu sein"
+
+#: mount/umount.c:480
+#, c-format
+msgid "umount: %s is not in the fstab (and you are not root)"
+msgstr "umount: fstab enthält %s nicht (Nur root kann es unmounten)"
+
+#: mount/umount.c:486
+#, c-format
+msgid "umount: %s mount disagrees with the fstab"
+msgstr ""
+
+#: mount/umount.c:505
+#, c-format
+msgid "umount: only root can unmount %s from %s"
+msgstr "umount: Nur ťrootŤ kann %s von %s unmounten"
+
+#: mount/umount.c:515
+#, c-format
+msgid "umount: only %s can unmount %s from %s"
+msgstr "umount: Nur %s kann %s von %s unmounten"
+
+#: sys-utils/ctrlaltdel.c:26
+#, fuzzy
+msgid "You must be root to set the Ctrl-Alt-Del behaviour.\n"
+msgstr "Nur root kann das Verhalten bei Strg-Alt-Entf ändern.\n"
+
+#: sys-utils/ctrlaltdel.c:41
+#, fuzzy
+msgid "Usage: ctrlaltdel hard|soft\n"
+msgstr "Aufruf: ctrlaltdef hard|soft\n"
+
+#: sys-utils/cytune.c:118
+#, c-format
+msgid ""
+"File %s, For threshold value %lu, Maximum characters in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+
+#: sys-utils/cytune.c:129
+#, c-format
+msgid ""
+"File %s, For threshold value %lu and timrout value %lu, Maximum characters "
+"in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+
+#: sys-utils/cytune.c:196
+#, c-format
+msgid "Invalid interval value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:204
+#, c-format
+msgid "Invalid set value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:212
+#, c-format
+msgid "Invalid default value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:220
+#, c-format
+msgid "Invalid set time value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:228
+#, c-format
+msgid "Invalid default time value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:245
+#, c-format
+msgid ""
+"Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) "
+"[-g|-G] file [file...]\n"
+msgstr ""
+
+#: sys-utils/cytune.c:257 sys-utils/cytune.c:275 sys-utils/cytune.c:294
+#: sys-utils/cytune.c:342
+#, c-format
+msgid "Can't open %s: %s\n"
+msgstr "Konnte %s nicht öffnen: %s\n"
+
+#: sys-utils/cytune.c:264
+#, c-format
+msgid "Can't set %s to threshold %d: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:282
+#, c-format
+msgid "Can't set %s to time threshold %d: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:299 sys-utils/cytune.c:354 sys-utils/cytune.c:385
+#, c-format
+msgid "Can't get threshold for %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:305 sys-utils/cytune.c:360 sys-utils/cytune.c:391
+#, c-format
+msgid "Can't get timeout for %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:309
+#, c-format
+msgid "%s: %ld %s threshold and %ld %s timeout\n"
+msgstr ""
+
+#: sys-utils/cytune.c:311 sys-utils/cytune.c:313
+msgid "current"
+msgstr ""
+
+#: sys-utils/cytune.c:311 sys-utils/cytune.c:313
+msgid "default"
+msgstr ""
+
+#: sys-utils/cytune.c:330
+msgid "Can't set signal handler"
+msgstr ""
+
+#: sys-utils/cytune.c:334 sys-utils/cytune.c:369
+msgid "gettimeofday failed"
+msgstr ""
+
+#: sys-utils/cytune.c:347 sys-utils/cytune.c:379
+#, c-format
+msgid "Can't issue CYGETMON on %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:421
+#, c-format
+msgid "%s: %lu ints, %lu/%lu chars; "
+msgstr ""
+
+#: sys-utils/cytune.c:422
+#, c-format
+msgid "fifo: %lu thresh, %lu tmout, "
+msgstr ""
+
+#: sys-utils/cytune.c:423
+#, c-format
+msgid "%lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:428
+#, c-format
+msgid " %f int/sec; %f rec, %f send (char/sec)\n"
+msgstr ""
+
+#: sys-utils/cytune.c:433
+#, c-format
+msgid ""
+"%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:438
+#, c-format
+msgid " %f int/sec; %f rec (char/sec)\n"
+msgstr ""
+
+#: sys-utils/dmesg.c:38
+#, c-format
+msgid "Usage: %s [-c] [-n level] [-s bufsize]\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:46
+#, c-format
+msgid "usage: %s [shm | msg | sem] id\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:70
+#, c-format
+msgid "usage: %s [-shm | -msg | -sem] id\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:73
+msgid "resource deleted\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:91
+#, c-format
+msgid "usage : %s -asmq -tclup \n"
+msgstr ""
+
+#: sys-utils/ipcs.c:92
+#, c-format
+msgid "\t%s [-s -m -q] -i id\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:93
+#, c-format
+msgid "\t%s -h for help.\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:99
+#, c-format
+msgid "%s provides information on ipc facilities for"
+msgstr ""
+
+#: sys-utils/ipcs.c:100
+msgid " which you have read access.\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:101
+msgid ""
+"Resource Specification:\n"
+"\t-m : shared_mem\n"
+"\t-q : messages\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:102
+msgid ""
+"\t-s : semaphores\n"
+"\t-a : all (default)\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:103
+msgid ""
+"Output Format:\n"
+"\t-t : time\n"
+"\t-p : pid\n"
+"\t-c : creator\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:104
+msgid ""
+"\t-l : limits\n"
+"\t-u : summary\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:105
+msgid "-i id [-s -q -m] : details on resource identified by id\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:237 sys-utils/ipcs.c:439
+msgid "kernel not configured for shared memory\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:243
+msgid "------ Shared Memory Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:246
+#, c-format
+msgid "max number of segments = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:247
+#, c-format
+msgid "max seg size (kbytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:248
+#, c-format
+msgid "max total shared memory (kbytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:249
+#, c-format
+msgid "min seg size (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:253
+msgid "------ Shared Memory Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:254
+#, c-format
+msgid "segments allocated %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:255
+#, c-format
+msgid "pages allocated %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:256
+#, c-format
+msgid "pages resident %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:257
+#, c-format
+msgid "pages swapped %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:258
+#, c-format
+msgid "Swap performance: %ld attempts\t %ld successes\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:263
+msgid "------ Shared Memory Segment Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:264 sys-utils/ipcs.c:370 sys-utils/ipcs.c:462
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:271 sys-utils/ipcs.c:276
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:377
+msgid "shmid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:282 sys-utils/ipcs.c:371
+#: sys-utils/ipcs.c:386 sys-utils/ipcs.c:463 sys-utils/ipcs.c:480
+msgid "perms"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cuid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cgid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "uid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:463
+msgid "gid"
+msgstr ""
+
+#: sys-utils/ipcs.c:269
+msgid "------ Shared Memory Attach/Detach/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:270
+#, c-format
+msgid "%-10s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:271 sys-utils/ipcs.c:276 sys-utils/ipcs.c:282
+#: sys-utils/ipcs.c:377 sys-utils/ipcs.c:386 sys-utils/ipcs.c:469
+#: sys-utils/ipcs.c:474 sys-utils/ipcs.c:480
+msgid "owner"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "attached"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "detached"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "changed"
+msgstr ""
+
+#: sys-utils/ipcs.c:275
+msgid "------ Shared Memory Creator/Last-op --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276 sys-utils/ipcs.c:474
+#, c-format
+msgid "%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "cpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "lpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:280
+msgid "------ Shared Memory Segments --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:386 sys-utils/ipcs.c:479
+msgid "key"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "bytes"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "nattch"
+msgstr ""
+
+#: sys-utils/ipcs.c:282 sys-utils/ipcs.c:386
+msgid "status"
+msgstr ""
+
+#: sys-utils/ipcs.c:302 sys-utils/ipcs.c:303 sys-utils/ipcs.c:304
+#: sys-utils/ipcs.c:407 sys-utils/ipcs.c:408 sys-utils/ipcs.c:500
+#: sys-utils/ipcs.c:501 sys-utils/ipcs.c:502
+msgid "Not set"
+msgstr ""
+
+#: sys-utils/ipcs.c:324
+msgid "dest"
+msgstr ""
+
+#: sys-utils/ipcs.c:325
+msgid "locked"
+msgstr ""
+
+#: sys-utils/ipcs.c:345
+msgid "kernel not configured for semaphores\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:351
+msgid "------ Semaphore Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:355
+#, c-format
+msgid "max number of arrays = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:356
+#, c-format
+msgid "max semaphores per array = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:357
+#, c-format
+msgid "max semaphores system wide = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:358
+#, c-format
+msgid "max ops per semop call = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:359
+#, c-format
+msgid "semaphore max value = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:363
+msgid "------ Semaphore Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:364
+#, c-format
+msgid "used arrays = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:365
+#, c-format
+msgid "allocated semaphores = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:369
+msgid "------ Semaphore Arrays Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:371 sys-utils/ipcs.c:386
+msgid "semid"
+msgstr ""
+
+#: sys-utils/ipcs.c:375
+msgid "------ Shared Memory Operation/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:376
+#, c-format
+msgid "%-8s%-10s %-26.24s %-26.24s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-op"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-changed"
+msgstr ""
+
+#: sys-utils/ipcs.c:384
+msgid "------ Semaphore Arrays --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:385
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:386
+msgid "nsems"
+msgstr ""
+
+#: sys-utils/ipcs.c:447
+msgid "------ Messages: Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:448
+#, c-format
+msgid "max queues system wide = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:449
+#, c-format
+msgid "max size of message (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:450
+#, c-format
+msgid "default max size of queue (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:454
+msgid "------ Messages: Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:455
+#, c-format
+msgid "allocated queues = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:456
+#, c-format
+msgid "used headers = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:457
+#, c-format
+msgid "used space = %d bytes\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:461
+msgid "------ Message Queues: Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:463 sys-utils/ipcs.c:469 sys-utils/ipcs.c:474
+#: sys-utils/ipcs.c:479
+msgid "msqid"
+msgstr ""
+
+#: sys-utils/ipcs.c:467
+msgid "------ Message Queues Send/Recv/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:468
+#, c-format
+msgid "%-8s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "send"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "recv"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "change"
+msgstr ""
+
+#: sys-utils/ipcs.c:473
+msgid "------ Message Queues PIDs --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:474
+msgid "lspid"
+msgstr ""
+
+#: sys-utils/ipcs.c:474
+msgid "lrpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:478
+msgid "------ Message Queues --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:479
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-12s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "used-bytes"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "messages"
+msgstr ""
+
+#: sys-utils/ipcs.c:539
+#, c-format
+msgid ""
+"\n"
+"Shared memory Segment shmid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:540
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:542
+#, c-format
+msgid "mode=%#o\taccess_perms=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:543
+#, c-format
+msgid "bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:546
+#, c-format
+msgid "att_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:547 sys-utils/ipcs.c:549 sys-utils/ipcs.c:598
+msgid "Not set\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:548
+#, c-format
+msgid "det_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:550
+#, c-format
+msgid "change_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:566
+#, c-format
+msgid ""
+"\n"
+"Message Queue msqid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:567
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:569
+#, c-format
+msgid "cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:572
+#, c-format
+msgid "send_time=%srcv_time=%schange_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:573 sys-utils/ipcs.c:574 sys-utils/ipcs.c:575
+msgid "Not Set\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:592
+#, c-format
+msgid ""
+"\n"
+"Semaphore Array semid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:593
+#, c-format
+msgid "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:595
+#, c-format
+msgid "mode=%#o, access_perms=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:596
+#, c-format
+msgid "nsems = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:597
+#, c-format
+msgid "otime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:599
+#, c-format
+msgid "ctime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "semnum"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "value"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "ncount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "zcount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "pid"
+msgstr ""
+
+#: sys-utils/kbdrate.c:139 sys-utils/kbdrate.c:271
+#, c-format
+msgid "Typematic Rate set to %.1f cps (delay = %d ms)\n"
+msgstr ""
+"Die Tastaturwiederholrate wurde auf %.1f cps gesetzt\n"
+"Die Verzögerungszeit wurde auf %dms gesetzt\n"
+
+#: sys-utils/kbdrate.c:247
+msgid "Cannot open /dev/port"
+msgstr "Konnte /dev/port nicht öffnen"
+
+#: sys-utils/rdev.c:68
+msgid "usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]"
+msgstr ""
+
+# Oh well, "ROOT-Gerät" sounds sooo stupid
+#: sys-utils/rdev.c:69
+#, fuzzy
+msgid ""
+" rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device"
+msgstr ""
+" rdev /dev/fd0 (oder rdev /linux, etc.) zeigt das aktuelle ROOT-Gerät an"
+
+#: sys-utils/rdev.c:70
+msgid " rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2"
+msgstr ""
+
+#: sys-utils/rdev.c:71
+msgid " rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)"
+msgstr ""
+
+#: sys-utils/rdev.c:72
+msgid " rdev -s /dev/fd0 /dev/hda2 set the SWAP device"
+msgstr ""
+
+#: sys-utils/rdev.c:73
+msgid " rdev -r /dev/fd0 627 set the RAMDISK size"
+msgstr ""
+
+#: sys-utils/rdev.c:74
+msgid " rdev -v /dev/fd0 1 set the bootup VIDEOMODE"
+msgstr ""
+
+#: sys-utils/rdev.c:75
+msgid " rdev -o N ... use the byte offset N"
+msgstr ""
+
+#: sys-utils/rdev.c:76
+msgid " rootflags ... same as rdev -R"
+msgstr ""
+
+#: sys-utils/rdev.c:77
+msgid " swapdev ... same as rdev -s"
+msgstr ""
+
+#: sys-utils/rdev.c:78
+msgid " ramsize ... same as rdev -r"
+msgstr ""
+
+#: sys-utils/rdev.c:79
+msgid " vidmode ... same as rdev -v"
+msgstr ""
+
+#: sys-utils/rdev.c:80
+msgid ""
+"Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,..."
+msgstr ""
+
+#: sys-utils/rdev.c:81
+msgid " use -R 1 to mount root readonly, -R 0 for read/write."
+msgstr ""
+
+#: sys-utils/readprofile.c:50
+#, c-format
+msgid ""
+"%s: Usage: \"%s [options]\n"
+"\t -m <mapfile> (default = \"%s\")\n"
+"\t -p <pro-file> (default = \"%s\")\n"
+"\t -i print only info about the sampling step\n"
+"\t -v print verbose data\n"
+"\t -a print all symbols, even if count is 0\n"
+"\t -r reset all the counters (root only)\n"
+"\t -V print version and exit\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:113
+#, c-format
+msgid "%s Version %s\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:125
+msgid "anything\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:154
+#, c-format
+msgid "Sampling_step: %i\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:167 sys-utils/readprofile.c:193
+#, c-format
+msgid "%s: %s(%i): wrong map line\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:180
+#, c-format
+msgid "%s: can't find \"_stext\" in %s\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:221
+msgid "total"
+msgstr ""
+
+# This string should be merged with the next one
+#: sys-utils/renice.c:67
+msgid "usage: renice priority [ [ -p ] pids ] "
+msgstr "Aufruf: renice Priorität [[-p] PIDs ] "
+
+#: sys-utils/renice.c:68
+msgid "[ [ -g ] pgrps ] [ [ -u ] users ]\n"
+msgstr "[[-g] PGRPs ] [[-u] Benutzernamen ]\n"
+
+#: sys-utils/renice.c:67
+msgid ""
+"usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]\n"
+msgstr ""
+"Aufruf: renice Priorität [[-p] PIDs ] [[-g] PGRPs ] [[-u] Benutzernamen ]\n"
+
+#: sys-utils/renice.c:94
+#, c-format
+msgid "renice: %s: unknown user\n"
+msgstr "renice: Unbekannter Benutzer: %s\n"
+
+#: sys-utils/renice.c:102
+#, c-format
+msgid "renice: %s: bad value\n"
+msgstr "renice: Ungültiger Wert: %s\n"
+
+#: sys-utils/renice.c:121
+msgid "getpriority"
+msgstr "getpriority"
+
+#: sys-utils/renice.c:126
+msgid "setpriority"
+msgstr "setpriority"
+
+#: sys-utils/renice.c:129
+#, c-format
+msgid "%d: old priority %d, new priority %d\n"
+msgstr "%d: Alte Priorität: %d, neue Priorität: %d\n"
+
+#: sys-utils/setsid.c:23
+#, c-format
+msgid "usage: %s program [arg ...]\n"
+msgstr "Aufruf: %s Programm [Argument ...]\n"
+
+#: sys-utils/tunelp.c:76
+#, c-format
+msgid ""
+"Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
+" -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s | \n"
+" -T [on|off] ]\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:92
+msgid "malloc error"
+msgstr ""
+
+#: sys-utils/tunelp.c:103
+msgid "sscanf error"
+msgstr ""
+
+#: sys-utils/tunelp.c:142
+#, c-format
+msgid "%s: %s not an lp device.\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:254
+#, c-format
+msgid "%s status is %d"
+msgstr ""
+
+#: sys-utils/tunelp.c:255
+msgid ", busy"
+msgstr ""
+
+#: sys-utils/tunelp.c:256
+msgid ", ready"
+msgstr ""
+
+#: sys-utils/tunelp.c:257
+msgid ", out of paper"
+msgstr ""
+
+#: sys-utils/tunelp.c:258
+msgid ", on-line"
+msgstr ""
+
+#: sys-utils/tunelp.c:259
+msgid ", error"
+msgstr ""
+
+#: sys-utils/tunelp.c:276
+msgid "LPGETIRQ error"
+msgstr ""
+
+#: sys-utils/tunelp.c:282
+#, c-format
+msgid "%s using IRQ %d\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:284
+#, c-format
+msgid "%s using polling\n"
+msgstr ""
+
+#: text-utils/col.c:150
+#, c-format
+msgid "col: bad -l argument %s.\n"
+msgstr ""
+
+#: text-utils/col.c:511
+msgid "usage: col [-bfx] [-l nline]\n"
+msgstr ""
+
+#: text-utils/col.c:517
+msgid "col: write error.\n"
+msgstr ""
+
+#: text-utils/col.c:524
+#, c-format
+msgid "col: warning: can't back up %s.\n"
+msgstr ""
+
+#: text-utils/col.c:525
+msgid "past first line"
+msgstr ""
+
+#: text-utils/col.c:525
+msgid "-- line already flushed"
+msgstr ""
+
+#: text-utils/colcrt.c:93
+#, c-format
+msgid "usage: %s [ - ] [ -2 ] [ file ... ]\n"
+msgstr "Aufruf: %s [ - ] [ -2 ] [ Datei ... ]\n"
+
+#: text-utils/column.c:276
+msgid "line too long"
+msgstr "Zeile ist zu lang"
+
+#: text-utils/column.c:311
+msgid "usage: column [-tx] [-c columns] [file ...]\n"
+msgstr "Aufruf: column [-tx] [-c Spalten] [Datei ...]\n"
+
+#: text-utils/hexsyntax.c:80
+msgid "hexdump: bad length value.\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:91
+msgid "hexdump: bad skip value.\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:129
+msgid ""
+"hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"
+msgstr ""
+
+#: text-utils/more.c:329
+msgid "usage: "
+msgstr "Aufruf: "
+
+#: text-utils/more.c:331
+msgid " [-dfln] [+linenum | +/pattern] name1 name2 ...\n"
+msgstr " [-dfln] [+Zeilennummer | +/Muster] Dateiname1 Dateiname2 ...\n"
+
+#: text-utils/more.c:328
+#, c-format
+msgid "usage: %s [-dfln] [+linenum | +/pattern] name1 name2 ...\n"
+msgstr ""
+"Aufruf: %s [-dfln] [+Zeilennummer | +/Muster] Dateiname1 Dateiname2 ...\n"
+
+#: text-utils/more.c:505
+#, c-format
+msgid ""
+"\n"
+"*** %s: directory ***\n"
+"\n"
+msgstr ""
+"\n"
+"*** %s: Verzeichnis ***\n"
+"\n"
+
+#. simple ELF detection
+#: text-utils/more.c:544
+#, c-format
+msgid ""
+"\n"
+"******** %s: Not a text file ********\n"
+"\n"
+msgstr ""
+"\n"
+"******** %s: Keine Textdatei ********\n"
+"\n"
+
+#: text-utils/more.c:648
+msgid "[Use q or Q to quit]"
+msgstr "[Benutzen Sie q oder Q zum Beenden]"
+
+#: text-utils/more.c:834
+msgid "--More--"
+msgstr "--Mehr--"
+
+#: text-utils/more.c:836
+#, c-format
+msgid "(Next file: %s)"
+msgstr "(Nächste Datei: %s)"
+
+#: text-utils/more.c:842
+msgid "[Press space to continue, 'q' to quit.]"
+msgstr "[Leertaste zum Fortfahren, ťqŤ zum Beenden.]"
+
+#: text-utils/more.c:1140
+#, c-format
+msgid "...back %d page"
+msgstr "... %d Seiten zurück"
+
+#: text-utils/more.c:1186
+#, c-format
+msgid "...skipping %d line"
+msgstr "...überspringe %d Zeilen"
+
+#: text-utils/more.c:1227
+msgid ""
+"\n"
+"***Back***\n"
+"\n"
+msgstr ""
+"\n"
+"***Zurück***\n"
+"\n"
+
+#: text-utils/more.c:1265
+msgid "Can't open help file"
+msgstr "Konnte die Hilfedatei nicht öffnen"
+
+#: text-utils/more.c:1286 text-utils/more.c:1290
+msgid "[Press 'h' for instructions.]"
+msgstr "[Drücken Sie ťhŤ für Hilfe.]"
+
+#: text-utils/more.c:1325
+#, c-format
+msgid "\"%s\" line %d"
+msgstr "\"%s\" Zeile %d"
+
+#: text-utils/more.c:1327
+#, c-format
+msgid "[Not a file] line %d"
+msgstr "[Keine normale Datei] Zeile %d"
+
+#: text-utils/more.c:1411
+msgid " Overflow\n"
+msgstr " Überlauf\n"
+
+#: text-utils/more.c:1458
+msgid "...skipping\n"
+msgstr "...Überspringe\n"
+
+#: text-utils/more.c:1488
+msgid "Regular expression botch"
+msgstr "Fehler beim Ausführen von ťre_exec()Ť"
+
+#: text-utils/more.c:1500
+msgid ""
+"\n"
+"Pattern not found\n"
+msgstr ""
+"\n"
+"Muster wurde nicht gefunden\n"
+
+#: text-utils/more.c:1503
+msgid "Pattern not found"
+msgstr "Muster wurde nicht gefunden"
+
+#: text-utils/more.c:1564
+msgid "can't fork\n"
+msgstr "Konnte ťfork()Ť nicht ausführen\n"
+
+#: text-utils/more.c:1603
+msgid ""
+"\n"
+"...Skipping "
+msgstr ""
+"\n"
+"...Springe "
+
+#: text-utils/more.c:1607
+msgid "...Skipping "
+msgstr "...Springe "
+
+#: text-utils/more.c:1608
+msgid "to file "
+msgstr "zur Datei "
+
+#: text-utils/more.c:1608
+msgid "back to file "
+msgstr "zurück zur Datei "
+
+#: text-utils/more.c:1847
+msgid "Line too long"
+msgstr "Zeile ist zu lang"
+
+#: text-utils/more.c:1891
+msgid "No previous command to substitute for"
+msgstr "Kein vorheriges Kommando, das eingefügt werden könnte"
+
+#: text-utils/odsyntax.c:133
+msgid "od: od(1) has been deprecated for hexdump(1).\n"
+msgstr ""
+
+#: text-utils/odsyntax.c:136
+#, c-format
+msgid "od: hexdump(1) compatibility doesn't support the -%c option%s\n"
+msgstr ""
+
+#: text-utils/odsyntax.c:137
+msgid "; see strings(1)."
+msgstr ""
+
+#: text-utils/parse.c:63
+#, c-format
+msgid "hexdump: can't read %s.\n"
+msgstr "hexdump: Konnte %s nicht lesen.\n"
+
+#: text-utils/parse.c:68
+#, fuzzy
+msgid "hexdump: line too long.\n"
+msgstr "hexdump: Zeile ist zu lang.\n"
+
+#: text-utils/parse.c:406
+msgid "hexdump: byte count with multiple conversion characters.\n"
+msgstr ""
+
+#: text-utils/parse.c:490
+#, c-format
+msgid "hexdump: bad byte count for conversion character %s.\n"
+msgstr ""
+
+#: text-utils/parse.c:497
+msgid "hexdump: %%s requires a precision or a byte count.\n"
+msgstr ""
+
+#: text-utils/parse.c:503
+#, c-format
+msgid "hexdump: bad format {%s}\n"
+msgstr ""
+
+#: text-utils/parse.c:509
+msgid "hexdump: bad conversion character %%%s.\n"
+msgstr ""
+
+#: text-utils/rev.c:109
+msgid "Unable to allocate bufferspace\n"
+msgstr "Konnte keinen Speicher für einen Puffer reservieren.\n"
+
+#: text-utils/rev.c:167
+msgid "usage: rev [file ...]\n"
+msgstr "Aufruf: rev [Datei ...]\n"
+
+#: text-utils/ul.c:125
+#, c-format
+msgid "usage: %s [ -i ] [ -tTerm ] file...\n"
+msgstr "Aufruf: %s [ -i ] [ -t Terminalname ] Datei ...\n"
+
+#: text-utils/ul.c:136
+msgid "trouble reading terminfo"
+msgstr "Probleme beim Lesen der terminfo-Datenbank"
+
+#: text-utils/ul.c:223
+#, c-format
+msgid "Unknown escape sequence in input: %o, %o\n"
+msgstr "Unbekannte Escape-Sequenz in der Eingabe: %o, %o\n"
+
+#: text-utils/ul.c:372
+msgid "Unable to allocate buffer.\n"
+msgstr "Konnte keinen Speicher für einen Puffer reservieren.\n"
+
+#: text-utils/ul.c:529
+msgid "Input line too long.\n"
+msgstr "Eingabezeile ist zu lang.\n"
+
+#: text-utils/ul.c:542
+msgid "Out of memory when growing buffer.\n"
+msgstr "Speicher ist alle beim Vergrößern eines Puffers.\n"
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 000000000..fe22e52ee
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,7649 @@
+# cfdisk.po
+# Copyright (C) 1999 Les Logiciels du Soleil
+# Vincent Renardias <vincent@ldsol.com>, 1999.
+#
+# Permission is granted to copy and distribute this file and
+# modified versions of this file provided this header is not removed.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: util-linux VERSION\n"
+"POT-Creation-Date: 1999-03-20 12:27-0300\n"
+"PO-Revision-Date: 1999-01-23 19:17+0100\n"
+"Last-Translator: Vincent Renardias <vincent@ldsol.com>\n"
+"Language-Team: Vincent Renardias <vincent@ldsol.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: disk-utils/fdformat.c:33
+#, fuzzy
+msgid "Formatting ... "
+msgstr "Vérification en cours ... "
+
+#: disk-utils/fdformat.c:51 disk-utils/fdformat.c:86
+#, fuzzy
+msgid "done\n"
+msgstr "Terminé"
+
+#: disk-utils/fdformat.c:62
+msgid "Verifying ... "
+msgstr "Vérification en cours ... "
+
+#: disk-utils/fdformat.c:73
+msgid "Read: "
+msgstr "Lecture: "
+
+#: disk-utils/fdformat.c:75
+#, c-format
+msgid "Problem reading cylinder %d, expected %d, read %d\n"
+msgstr "Problčme lors de la lecture du cylindre %d, %d attendu, %d lu\n"
+
+#: disk-utils/fdformat.c:81
+#, c-format
+msgid ""
+"bad data in cyl %d\n"
+"Continuing ... "
+msgstr ""
+"mauvaises données au cylindre %d\n"
+"Continuation..."
+
+#: disk-utils/fdformat.c:96
+#, c-format
+msgid "usage: %s [ -n ] device\n"
+msgstr "usage: %s [ -n ] périphérique\n"
+
+#: disk-utils/fdformat.c:122
+#, c-format
+msgid "%s: not a floppy device\n"
+msgstr "%s: n'est pas un lecteur de disquettes\n"
+
+#: disk-utils/fdformat.c:128
+msgid "Could not determine current format type"
+msgstr ""
+
+#: disk-utils/fdformat.c:129
+#, c-format
+msgid "%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"
+msgstr ""
+
+#: disk-utils/fdformat.c:130
+#, fuzzy
+msgid "Double"
+msgstr "Terminé"
+
+#: disk-utils/fdformat.c:130
+msgid "Single"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:288
+#, c-format
+msgid "%s is mounted.\t "
+msgstr "%s est monté.\t "
+
+#: disk-utils/fsck.minix.c:290
+msgid "Do you really want to continue"
+msgstr "Voulez-vous vraiment continuer"
+
+#: disk-utils/fsck.minix.c:294
+msgid "check aborted.\n"
+msgstr "vérification intérompue.\n"
+
+#: disk-utils/fsck.minix.c:311 disk-utils/fsck.minix.c:331
+msgid "Zone nr < FIRSTZONE in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:313 disk-utils/fsck.minix.c:333
+msgid "Zone nr >= ZONES in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:318 disk-utils/fsck.minix.c:338
+msgid "Remove block"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:356
+msgid "Read error: unable to seek to block in file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:362
+msgid "Read error: bad block in file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:378
+msgid ""
+"Internal error: trying to write bad block\n"
+"Write request ignored\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:386
+msgid "Write error: bad block in file '"
+msgstr "Erreur d'écriture: mauvais block dans le fichier '"
+
+#: disk-utils/fsck.minix.c:607
+msgid "Warning: Firstzone != Norm_firstzone\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:612 disk-utils/mkfs.minix.c:528
+#, c-format
+msgid "%ld inodes\n"
+msgstr "%ld i-noeuds\n"
+
+#: disk-utils/fsck.minix.c:613 disk-utils/mkfs.minix.c:529
+#, c-format
+msgid "%ld blocks\n"
+msgstr "%ld blocs\n"
+
+#: disk-utils/fsck.minix.c:614 disk-utils/mkfs.minix.c:530
+#, c-format
+msgid "Firstdatazone=%ld (%ld)\n"
+msgstr "Premičrezonededonnées=%ld (%ld)\n"
+
+#: disk-utils/fsck.minix.c:615 disk-utils/mkfs.minix.c:531
+#, c-format
+msgid "Zonesize=%d\n"
+msgstr "Tailledelazone=%d\n"
+
+#: disk-utils/fsck.minix.c:616
+#, c-format
+msgid "Maxsize=%ld\n"
+msgstr "Taillemax=%ld\n"
+
+#: disk-utils/fsck.minix.c:617
+#, c-format
+msgid "Filesystem state=%d\n"
+msgstr "Etat du systčme de fichier=%d\n"
+
+#: disk-utils/fsck.minix.c:618
+#, c-format
+msgid ""
+"namelen=%d\n"
+"\n"
+msgstr "longueurnom=%d\n"
+
+#: disk-utils/fsck.minix.c:632 disk-utils/fsck.minix.c:684
+#, c-format
+msgid "Inode %d marked not used, but used for file '"
+msgstr "I-noeud %d marqué libre, mais utilisé pour le fichier '"
+
+#: disk-utils/fsck.minix.c:637 disk-utils/fsck.minix.c:688
+msgid "Mark in use"
+msgstr "Marqué utilisé"
+
+#: disk-utils/fsck.minix.c:659 disk-utils/fsck.minix.c:708
+#, c-format
+msgid " has mode %05o\n"
+msgstr " a pour mode %05o\n"
+
+#: disk-utils/fsck.minix.c:665 disk-utils/fsck.minix.c:713
+msgid "Warning: inode count too big.\n"
+msgstr "Avertissement: nombre de i-noeuds trop grand.\n"
+
+#: disk-utils/fsck.minix.c:749 disk-utils/fsck.minix.c:783
+msgid "Block has been used before. Now in file `"
+msgstr "Bloc déjŕ utilisé. Maintenant dans le fichier `"
+
+#: disk-utils/fsck.minix.c:752 disk-utils/fsck.minix.c:786
+#: disk-utils/fsck.minix.c:1114 disk-utils/fsck.minix.c:1123
+#: disk-utils/fsck.minix.c:1167 disk-utils/fsck.minix.c:1176
+msgid "Clear"
+msgstr "Effacer"
+
+#: disk-utils/fsck.minix.c:761 disk-utils/fsck.minix.c:795
+#, c-format
+msgid "Block %d in file `"
+msgstr "Bloc %d dans le fichier `"
+
+#: disk-utils/fsck.minix.c:763 disk-utils/fsck.minix.c:797
+msgid "' is marked not in use."
+msgstr "' est marqué inutilisé."
+
+#: disk-utils/fsck.minix.c:764 disk-utils/fsck.minix.c:798
+msgid "Correct"
+msgstr "Correct"
+
+#: disk-utils/fsck.minix.c:948 disk-utils/fsck.minix.c:1012
+msgid " contains a bad inode number for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:950 disk-utils/fsck.minix.c:1014
+msgid " Remove"
+msgstr "Enlever"
+
+#: disk-utils/fsck.minix.c:964 disk-utils/fsck.minix.c:1028
+msgid ": bad directory: '.' isn't first\n"
+msgstr ": mauvais répertoire: '.' ne vient pas en premier\n"
+
+#: disk-utils/fsck.minix.c:971 disk-utils/fsck.minix.c:1036
+msgid ": bad directory: '..' isn't second\n"
+msgstr ": mauvais répertoire: '..' ne vient pas en second\n"
+
+#: disk-utils/fsck.minix.c:1071
+msgid ": bad directory: size<32"
+msgstr ": mauvais répertoire: taille<32"
+
+#: disk-utils/fsck.minix.c:1090
+msgid ": bad directory: size < 32"
+msgstr ": mauvais répertoire: taille < 32"
+
+#: disk-utils/fsck.minix.c:1113 disk-utils/fsck.minix.c:1166
+#, c-format
+msgid "Inode %d mode not cleared."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1122 disk-utils/fsck.minix.c:1175
+#, c-format
+msgid "Inode %d not used, marked used in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1128 disk-utils/fsck.minix.c:1181
+#, c-format
+msgid "Inode %d used, marked unused in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1134 disk-utils/fsck.minix.c:1186
+#, c-format
+msgid "Inode %d (mode = %07o), i_nlinks=%d, counted=%d."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1136 disk-utils/fsck.minix.c:1188
+msgid "Set i_nlinks to count"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1148 disk-utils/fsck.minix.c:1200
+#, c-format
+msgid "Zone %d: marked in use, no file uses it."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1149 disk-utils/fsck.minix.c:1201
+msgid "Unmark"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1153 disk-utils/fsck.minix.c:1205
+#, c-format
+msgid "Zone %d: %sin use, counted=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1154 disk-utils/fsck.minix.c:1206
+msgid "not "
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1182
+#, fuzzy
+msgid "Set"
+msgstr "Secteurs"
+
+#: disk-utils/fsck.minix.c:1296
+#, c-format
+msgid "%s is clean, no check.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1300
+#, c-format
+msgid "Forcing filesystem check on %s.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1302
+#, c-format
+msgid "Filesystem on %s is dirty, needs checking.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1331
+msgid ""
+"\n"
+"%6ld inodes used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1336
+msgid "%6ld zones used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1338
+#, c-format
+msgid ""
+"\n"
+"%6d regular files\n"
+"%6d directories\n"
+"%6d character device files\n"
+"%6d block device files\n"
+"%6d links\n"
+"%6d symbolic links\n"
+"------\n"
+"%6d files\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1351
+msgid ""
+"----------------------------\n"
+"FILE SYSTEM HAS BEEN CHANGED\n"
+"----------------------------\n"
+msgstr ""
+
+#: disk-utils/mkfs.c:66
+msgid "Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n"
+msgstr ""
+
+#: disk-utils/mkfs.c:80 fdisk/cfdisk.c:324 getopt-1.0.3b/getopt.c:85
+#: getopt-1.0.3b/getopt.c:95 login-utils/wall.c:221 mount/sundries.c:192
+#, c-format
+msgid "%s: Out of memory!\n"
+msgstr ""
+
+#: disk-utils/mkfs.c:89
+msgid "mkfs version "
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:186
+#, c-format
+msgid "Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:210
+#, c-format
+msgid "%s is mounted; will not make a filesystem here!"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:271
+msgid "seek to boot block failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:273
+msgid "unable to clear boot sector"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:275
+msgid "seek failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:277
+msgid "unable to write super-block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:279
+msgid "unable to write inode map"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:281
+msgid "unable to write zone map"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:283
+msgid "unable to write inodes"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:290
+msgid "seek failed in write_block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:292
+msgid "write failed in write_block"
+msgstr ""
+
+#. Could make triple indirect block here
+#: disk-utils/mkfs.minix.c:300 disk-utils/mkfs.minix.c:374
+#: disk-utils/mkfs.minix.c:425
+msgid "too many bad blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:308
+msgid "not enough good blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:517
+msgid "unable to allocate buffers for maps"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:526
+msgid "unable to allocate buffer for inodes"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:532
+#, fuzzy, c-format
+msgid ""
+"Maxsize=%ld\n"
+"\n"
+msgstr "Taillemax=%ld\n"
+
+#: disk-utils/mkfs.minix.c:546
+msgid "seek failed during testing of blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:554
+msgid "Weird values in do_check: probably bugs\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:585
+msgid "seek failed in check_blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:594
+msgid "bad blocks before data-area: cannot make fs"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:600 disk-utils/mkfs.minix.c:622
+#, fuzzy, c-format
+msgid "%d bad blocks\n"
+msgstr "%ld blocs\n"
+
+#: disk-utils/mkfs.minix.c:602 disk-utils/mkfs.minix.c:624
+#, fuzzy
+msgid "one bad block\n"
+msgstr "%ld blocs\n"
+
+#: disk-utils/mkfs.minix.c:614
+msgid "can't open file of bad blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:637 disk-utils/mkfs.minix.c:640
+#, fuzzy
+msgid "bad inode size"
+msgstr "%ld i-noeuds\n"
+
+#: disk-utils/mkfs.minix.c:669
+#, c-format
+msgid "%s: not compiled with minix v2 support\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:685
+#, fuzzy
+msgid "strtol error: number of blocks not specified"
+msgstr "Erreur d'écriture: mauvais block dans le fichier '"
+
+#: disk-utils/mkfs.minix.c:717
+#, c-format
+msgid "unable to open %s"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:719
+#, c-format
+msgid "unable to stat %s"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:723
+#, c-format
+msgid "will not try to make filesystem on '%s'"
+msgstr ""
+
+#: disk-utils/mkswap.c:99
+#, c-format
+msgid "Assuming pages of size %d\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:191
+#, c-format
+msgid "%d bad page%s\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:191 login-utils/shutdown.c:433
+#: login-utils/shutdown.c:436
+msgid "s"
+msgstr "s"
+
+#: disk-utils/mkswap.c:294
+#, c-format
+msgid "%s: error: Nowhere to set up swap on?\n"
+msgstr "%s: erreur: Aucun endroit défini pour swaper?\n"
+
+#: disk-utils/mkswap.c:313
+#, c-format
+msgid "%s: error: unknown version %d\n"
+msgstr "%s: erreur: version inconnue %d\n"
+
+#: disk-utils/mkswap.c:319
+#, c-format
+msgid "%s: error: swap area needs to be at least %ldkB\n"
+msgstr "%s: erreur: la taille du swap doit ętre d'au moins %ldkB\n"
+
+#: disk-utils/mkswap.c:326
+#, c-format
+msgid "%s: warning: truncating swap area to %ldkB\n"
+msgstr "%s: avertissement: troncature de l'aire de swap ŕ %ldkB\n"
+
+#: disk-utils/mkswap.c:353
+#, c-format
+msgid ""
+"%s: Device '%s' contains a valid Sun disklabel.\n"
+"This probably means creating v0 swap would destroy your partition table\n"
+"No swap created. If you really want to create swap v0 on that device, use\n"
+"the -f option to force it.\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:378
+#, c-format
+msgid "Setting up swapspace version %d, size = %ld bytes\n"
+msgstr "Configuration de l'espace de swap version %d, taille = %ld octets\n"
+
+#: disk-utils/setfdprm.c:30
+#, c-format
+msgid "Invalid number: %s\n"
+msgstr "Nombre invalide: %s\n"
+
+#: disk-utils/setfdprm.c:80
+#, c-format
+msgid "Syntax error: '%s'\n"
+msgstr "Erreur de syntaxe: '%s'\n"
+
+#: disk-utils/setfdprm.c:90
+#, c-format
+msgid "No such parameter set: '%s'\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:100
+#, c-format
+msgid "usage: %s [ -p ] dev name\n"
+msgstr "usage: %s [ -p ] périph nom\n"
+
+#: disk-utils/setfdprm.c:101
+#, c-format
+msgid ""
+" %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:104
+#, c-format
+msgid " %s [ -c | -y | -n | -d ] dev\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:106
+#, c-format
+msgid " %s [ -c | -y | -n ] dev\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:349 fdisk/cfdisk.c:1764
+msgid "Unusable"
+msgstr "Inutilisable"
+
+#: fdisk/cfdisk.c:351 fdisk/cfdisk.c:1766
+msgid "Free Space"
+msgstr "Espace Libre"
+
+#: fdisk/cfdisk.c:354
+msgid "Linux ext2"
+msgstr "Linux ext2"
+
+#. also Solaris
+#: fdisk/cfdisk.c:356 fdisk/i386_sys_types.c:53
+msgid "Linux"
+msgstr "Linux"
+
+#: fdisk/cfdisk.c:359
+msgid "OS/2 HPFS"
+msgstr "OS/2 HPFS"
+
+#: fdisk/cfdisk.c:361
+msgid "OS/2 IFS"
+msgstr "OS/2 IFS"
+
+#: fdisk/cfdisk.c:365
+msgid "NTFS"
+msgstr "NTFS"
+
+#: fdisk/cfdisk.c:376
+msgid "Disk has been changed.\n"
+msgstr "Le disque a été changé.\n"
+
+#: fdisk/cfdisk.c:377
+msgid "Reboot the system to ensure the partition table is correctly updated.\n"
+msgstr ""
+"Rebootez le systčme pour ętre sur que la table des partitions a été "
+"correctement mise ŕ jour.\n"
+
+#: fdisk/cfdisk.c:380
+msgid ""
+"\n"
+"WARNING: If you have created or modified any\n"
+"DOS 6.x partitions, please see the cfdisk manual\n"
+"page for additional information.\n"
+msgstr ""
+"\n"
+"AVERTISSEMENT: Si vous avez créé ou modifié\n"
+"une ou des partitions DOS 6.x, reportez-vous au manuel\n"
+"de cfdisk pour avoir plus d'informations.\n"
+
+#: fdisk/cfdisk.c:475
+msgid "FATAL ERROR"
+msgstr ""
+
+#: fdisk/cfdisk.c:484
+#, fuzzy
+msgid "Press any key to exit fdisk"
+msgstr "Appuyez sur une touche pour continuer"
+
+#: fdisk/cfdisk.c:520 fdisk/cfdisk.c:528
+msgid "Cannot seek on disk drive"
+msgstr "Erreur d'accčs sur le disque dur"
+
+#: fdisk/cfdisk.c:522
+msgid "Cannot read disk drive"
+msgstr "Impossible de lire le disque dur"
+
+#: fdisk/cfdisk.c:530
+msgid "Cannot write disk drive"
+msgstr "Impossible d'écrire sur le disque dur"
+
+#: fdisk/cfdisk.c:767
+#, fuzzy
+msgid "Too many parts"
+msgstr "Trops d'arguments.\n"
+
+#: fdisk/cfdisk.c:772
+#, fuzzy
+msgid "Partition begins before sector 0"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/cfdisk.c:777
+#, fuzzy
+msgid "Partition ends before sector 0"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/cfdisk.c:782
+msgid "Partition begins after end-of-disk"
+msgstr ""
+
+#: fdisk/cfdisk.c:787
+msgid "Partition ends after end-of-disk"
+msgstr ""
+
+#: fdisk/cfdisk.c:835
+msgid ""
+"!!!! Internal error creating logical drive with no extended partition !!!!"
+msgstr ""
+"!!!! Erreur interne lors de la création d'un lecteur logique sans partition "
+"étendue !!!!"
+
+#: fdisk/cfdisk.c:846 fdisk/cfdisk.c:858
+msgid ""
+"Cannot create logical drive here -- would create two extended partitions"
+msgstr ""
+"Impossible de créér un lecteur logique ici -- cela créérait deux partitions "
+"étendues"
+
+#: fdisk/cfdisk.c:1002
+msgid "Menu item too long. Menu may look odd."
+msgstr "Elément de menu trop large. Le menu peut paraitre bizarre."
+
+#: fdisk/cfdisk.c:1051
+msgid "Menu without direction. Defaulting horizontal."
+msgstr "Menu sans direction. Horizontal par défaut."
+
+#: fdisk/cfdisk.c:1166
+msgid "Illegal key"
+msgstr "Touche non valide"
+
+#: fdisk/cfdisk.c:1189
+msgid "Press a key to continue"
+msgstr "Appuyez sur une touche pour continuer"
+
+#: fdisk/cfdisk.c:1236 fdisk/cfdisk.c:1735 fdisk/cfdisk.c:2261
+#: fdisk/cfdisk.c:2263
+msgid "Primary"
+msgstr "Primaire"
+
+#: fdisk/cfdisk.c:1236
+msgid "Create a new primary partition"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/cfdisk.c:1237 fdisk/cfdisk.c:1735 fdisk/cfdisk.c:2260
+#: fdisk/cfdisk.c:2263
+msgid "Logical"
+msgstr "Logique"
+
+#: fdisk/cfdisk.c:1237
+msgid "Create a new logical partition"
+msgstr "Créér une nouvelle partition logique"
+
+#: fdisk/cfdisk.c:1238 fdisk/cfdisk.c:1291 fdisk/cfdisk.c:1947
+msgid "Cancel"
+msgstr "Annuler"
+
+#: fdisk/cfdisk.c:1238 fdisk/cfdisk.c:1291
+msgid "Don't create a partition"
+msgstr "Ne pas créér la partition"
+
+#: fdisk/cfdisk.c:1254
+msgid "!!! Internal error !!!"
+msgstr "!!! Erreur Interne !!!"
+
+#: fdisk/cfdisk.c:1257
+msgid "Size (in MB): "
+msgstr "Taille (en Mo): "
+
+#: fdisk/cfdisk.c:1289
+msgid "Beginning"
+msgstr "Début"
+
+#: fdisk/cfdisk.c:1289
+msgid "Add partition at beginning of free space"
+msgstr "Ajouter la partition au début de l'espace libre"
+
+#: fdisk/cfdisk.c:1290
+msgid "End"
+msgstr "Fin"
+
+#: fdisk/cfdisk.c:1290
+msgid "Add partition at end of free space"
+msgstr "Ajouter la partition ŕ la fin de l'espace libre"
+
+#: fdisk/cfdisk.c:1308
+msgid "No room to create the extended partition"
+msgstr "Pas de place pour créér une partition étendue"
+
+#: fdisk/cfdisk.c:1354
+msgid "Cannot open disk drive"
+msgstr "Impossible d'ouvrir le disque dur"
+
+#: fdisk/cfdisk.c:1356 fdisk/cfdisk.c:1546
+msgid "Opened disk read-only - you have no permission to write"
+msgstr ""
+
+#: fdisk/cfdisk.c:1386
+msgid "Cannot read disk drive geometry"
+msgstr "Impossible de lire la géométrie du disque"
+
+#: fdisk/cfdisk.c:1408
+msgid "Bad primary partition"
+msgstr "Mauvaise partition primaire"
+
+#: fdisk/cfdisk.c:1438
+msgid "Bad logical partition"
+msgstr "Mauvaise partition logique"
+
+#: fdisk/cfdisk.c:1558
+msgid "Warning!! This may destroy data on your disk!"
+msgstr ""
+
+#: fdisk/cfdisk.c:1562
+msgid "Are you sure you want write the partition table to disk? (yes or no): "
+msgstr ""
+"Etes vous sur de vouloir écrire la table de partition sur le disque? (yes ou "
+"no): "
+
+#: fdisk/cfdisk.c:1571
+msgid "Did not write partition table to disk"
+msgstr "Table de partition non écrite sur le disque"
+
+#: fdisk/cfdisk.c:1579
+msgid "Please enter `yes' or `no'"
+msgstr ""
+
+#: fdisk/cfdisk.c:1583
+msgid "Writing partition table to disk..."
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/cfdisk.c:1608 fdisk/cfdisk.c:1612
+msgid "Wrote partition table to disk"
+msgstr "Table de partition écrite sur disque"
+
+#: fdisk/cfdisk.c:1610
+msgid ""
+"Wrote partition table, but re-read table failed. Reboot to update table."
+msgstr ""
+
+#: fdisk/cfdisk.c:1620
+msgid ""
+"Not precisely one primary partition is bootable. DOS MBR cannot boot this."
+msgstr ""
+
+#: fdisk/cfdisk.c:1678 fdisk/cfdisk.c:1796 fdisk/cfdisk.c:1888
+msgid "Enter filename or press RETURN to display on screen: "
+msgstr "Entrez un nom de fichier ou tapez ENTREE pour affichage sur l'écran: "
+
+#: fdisk/cfdisk.c:1686 fdisk/cfdisk.c:1804 fdisk/cfdisk.c:1896
+#, c-format
+msgid "Cannot open file '%s'"
+msgstr ""
+
+#: fdisk/cfdisk.c:1697
+#, c-format
+msgid "Disk Drive: %s\n"
+msgstr "Disque Dur: %s\n"
+
+#: fdisk/cfdisk.c:1699
+msgid "Sector 0:\n"
+msgstr "Secteur 0:\n"
+
+#: fdisk/cfdisk.c:1706
+#, c-format
+msgid "Sector %d:\n"
+msgstr "Secteur %d:\n"
+
+#: fdisk/cfdisk.c:1726
+msgid " None "
+msgstr " Aucun "
+
+#: fdisk/cfdisk.c:1728
+msgid " Pri/Log"
+msgstr " Pri/Log"
+
+#: fdisk/cfdisk.c:1730
+msgid " Primary"
+msgstr " Primaire"
+
+#: fdisk/cfdisk.c:1732
+msgid " Logical"
+msgstr " Logique"
+
+#. odd flag on end
+#. type id
+#. type name
+#: fdisk/cfdisk.c:1770 fdisk/fdisk.c:1045 fdisk/fdisk.c:1194
+#: fdisk/fdisksgilabel.c:224 fdisk/fdisksunlabel.c:644 fdisk/sfdisk.c:551
+msgid "Unknown"
+msgstr "Inconnue"
+
+#: fdisk/cfdisk.c:1776
+#, c-format
+msgid "Boot (%02X)"
+msgstr "Boot (%02X)"
+
+#: fdisk/cfdisk.c:1778 fdisk/cfdisk.c:2269
+#, c-format
+msgid "Unknown (%02X)"
+msgstr "Inconnu (%02X)"
+
+#: fdisk/cfdisk.c:1780
+#, c-format
+msgid "None (%02X)"
+msgstr "Aucun (%02X)"
+
+#: fdisk/cfdisk.c:1815 fdisk/cfdisk.c:1907
+#, c-format
+msgid "Partition Table for %s\n"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/cfdisk.c:1817
+msgid " First Last\n"
+msgstr " Premier Dernier\n"
+
+#: fdisk/cfdisk.c:1818
+msgid ""
+" # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1819
+msgid ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1909
+msgid " ---Starting--- ----Ending---- Start Number of\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1910
+msgid " # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1911
+msgid "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1944
+msgid "Raw"
+msgstr ""
+
+#: fdisk/cfdisk.c:1944
+msgid "Print the table using raw data format"
+msgstr ""
+
+#: fdisk/cfdisk.c:1945 fdisk/cfdisk.c:2050
+msgid "Sectors"
+msgstr "Secteurs"
+
+#: fdisk/cfdisk.c:1945
+msgid "Print the table ordered by sectors"
+msgstr ""
+
+#: fdisk/cfdisk.c:1946
+msgid "Table"
+msgstr "Table"
+
+#: fdisk/cfdisk.c:1946
+msgid "Just print the partition table"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/cfdisk.c:1947
+msgid "Don't print the table"
+msgstr "Ne pas imprimer la table"
+
+#: fdisk/cfdisk.c:1976
+msgid "Help Screen for cfdisk "
+msgstr "Ecran d'aide de cfdisk "
+
+#: fdisk/cfdisk.c:1978
+msgid "This is cfdisk, a curses based disk partitioning program, which"
+msgstr "Voici cfdisk, un programme de partitionnement de disque, qui"
+
+#: fdisk/cfdisk.c:1979
+msgid "allows you to create, delete and modify partitions on your hard"
+msgstr "permet de créér, effacer ou modifier des partitions sur votre disque"
+
+#: fdisk/cfdisk.c:1980
+msgid "disk drive."
+msgstr "dur."
+
+#: fdisk/cfdisk.c:1982
+msgid "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+msgstr "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+
+#: fdisk/cfdisk.c:1984
+msgid "Command Meaning"
+msgstr "Commande Signification"
+
+#: fdisk/cfdisk.c:1985
+msgid "------- -------"
+msgstr "-------- -------------"
+
+#: fdisk/cfdisk.c:1986
+msgid " b Toggle bootable flag of the current partition"
+msgstr " b (Dés)active le drapeau Bootable de la partition courante"
+
+#: fdisk/cfdisk.c:1987
+msgid " d Delete the current partition"
+msgstr " d Effacer la partition courante"
+
+#: fdisk/cfdisk.c:1988
+msgid " g Change cylinders, heads, sectors-per-track parameters"
+msgstr ""
+" g Changer les paramétres cylindres, tętes et secteurs-par-piste"
+
+#: fdisk/cfdisk.c:1989
+msgid " WARNING: This option should only be used by people who"
+msgstr " AVERTISSEMENT: Cette option ne doit ętre utilisée que"
+
+#: fdisk/cfdisk.c:1990
+msgid " know what they are doing."
+msgstr ""
+" si vous savez réélement ce que vous étes en train de faire."
+
+#: fdisk/cfdisk.c:1991
+msgid " h Print this screen"
+msgstr " h Afficher cet écran"
+
+#: fdisk/cfdisk.c:1992
+msgid " m Maximize disk usage of the current partition"
+msgstr ""
+" m Maximizer l'utilisation du disque pour la partition courante"
+
+#: fdisk/cfdisk.c:1993
+msgid " Note: This may make the partition incompatible with"
+msgstr " Note: Cela peux rendre la partition incompatible avec"
+
+#: fdisk/cfdisk.c:1994
+msgid " DOS, OS/2, ..."
+msgstr " DOS, OS/2, ..."
+
+#: fdisk/cfdisk.c:1995
+msgid " n Create new partition from free space"
+msgstr " n Créér une nouvelle partition ŕ partir de l'espace libre"
+
+#: fdisk/cfdisk.c:1996
+msgid " p Print partition table to the screen or to a file"
+msgstr ""
+" p Imprimer la table de partitions ŕ l'écran ou dans un fichier"
+
+#: fdisk/cfdisk.c:1997
+msgid " There are several different formats for the partition"
+msgstr " Vous pouvez choisir entre différents formats pour"
+
+#: fdisk/cfdisk.c:1998
+msgid " that you can choose from:"
+msgstr " la table de partition:"
+
+#: fdisk/cfdisk.c:1999
+msgid " r - Raw data (exactly what would be written to disk)"
+msgstr ""
+" r - Données brutes (Exactement ce que cfdisk écrirait sur le "
+"disque)"
+
+#: fdisk/cfdisk.c:2000
+msgid " s - Table ordered by sectors"
+msgstr " s - Table triée par secteurs"
+
+#: fdisk/cfdisk.c:2001
+msgid " t - Table in raw format"
+msgstr " t - Table au format brut"
+
+#: fdisk/cfdisk.c:2002
+msgid " q Quit program without writing partition table"
+msgstr " q Quitter le programme sans écrire la table de partitions"
+
+#: fdisk/cfdisk.c:2003
+msgid " t Change the filesystem type"
+msgstr " t Changer le type de systčme de fichiers"
+
+#: fdisk/cfdisk.c:2004
+msgid " u Change units of the partition size display"
+msgstr ""
+" u Changement de l'unité utilisée pour la taille des partitions"
+
+#: fdisk/cfdisk.c:2005
+msgid " Rotates through Mb, sectors and cylinders"
+msgstr " Alternativement: Mo, secteurs et cylindres"
+
+#: fdisk/cfdisk.c:2006
+msgid " W Write partition table to disk (must enter upper case W)"
+msgstr " W Ecrire la table de partitions sur le disque (W doit ętre"
+
+#: fdisk/cfdisk.c:2007
+msgid " Since this might destroy data on the disk, you must"
+msgstr ""
+" en majuscule) Etant donné que cela peux détruire des données"
+
+#: fdisk/cfdisk.c:2008
+msgid " either confirm or deny the write by entering `yes' or"
+msgstr " sur votre disque, vous devrez confirmer en entrant `yes'"
+
+#: fdisk/cfdisk.c:2009
+msgid " `no'"
+msgstr " ou `no'"
+
+#: fdisk/cfdisk.c:2010
+msgid "Up Arrow Move cursor to the previous partition"
+msgstr "Fléche Haut Déplacer le curseur sur vers la partition précédente"
+
+#: fdisk/cfdisk.c:2011
+msgid "Down Arrow Move cursor to the next partition"
+msgstr "Fléche Bas Déplacer le curseur vers la partition suivante"
+
+#: fdisk/cfdisk.c:2012
+msgid "CTRL-L Redraws the screen"
+msgstr "CTRL-L Redessine l'écran"
+
+#: fdisk/cfdisk.c:2013
+msgid " ? Print this screen"
+msgstr " ? Affiche cet écran"
+
+#: fdisk/cfdisk.c:2015
+msgid "Note: All of the commands can be entered with either upper or lower"
+msgstr "Note: Toutes ces commandes peuvent ętre entrée en majuscules ou"
+
+#: fdisk/cfdisk.c:2016
+msgid "case letters (except for Writes)."
+msgstr "minuscules (ŕ l'exception de Write)."
+
+#: fdisk/cfdisk.c:2048 fdisk/cfdisk.c:2350 fdisk/fdisksunlabel.c:305
+#: fdisk/fdisksunlabel.c:307
+msgid "Cylinders"
+msgstr "Cylindres"
+
+#: fdisk/cfdisk.c:2048
+msgid "Change cylinder geometry"
+msgstr "Changer la géométrie des cylindres"
+
+#: fdisk/cfdisk.c:2049 fdisk/fdisksunlabel.c:302
+msgid "Heads"
+msgstr "Tętes"
+
+#: fdisk/cfdisk.c:2049
+msgid "Change head geometry"
+msgstr "Changer la géométrie des tętes"
+
+#: fdisk/cfdisk.c:2050
+msgid "Change sector geometry"
+msgstr "Changer la géométrie des secteurs"
+
+#: fdisk/cfdisk.c:2051
+msgid "Done"
+msgstr "Terminé"
+
+#: fdisk/cfdisk.c:2051
+msgid "Done with changing geometry"
+msgstr "Changement de géométrie terminé"
+
+#: fdisk/cfdisk.c:2064
+msgid "Enter the number of cylinders: "
+msgstr "Entrez le nombre de cylindres: "
+
+#: fdisk/cfdisk.c:2071 fdisk/cfdisk.c:2614
+msgid "Illegal cylinders value"
+msgstr ""
+
+#: fdisk/cfdisk.c:2077
+msgid "Enter the number of heads: "
+msgstr "Entrez le nombre de tętes: "
+
+#: fdisk/cfdisk.c:2084 fdisk/cfdisk.c:2621
+#, fuzzy
+msgid "Illegal heads value"
+msgstr "Touche non valide"
+
+#: fdisk/cfdisk.c:2090
+msgid "Enter the number of sectors per track: "
+msgstr "Entrez le nombre de secteurs par piste: "
+
+#: fdisk/cfdisk.c:2097 fdisk/cfdisk.c:2628
+msgid "Illegal sectors value"
+msgstr ""
+
+#: fdisk/cfdisk.c:2196
+msgid "Enter filesystem type: "
+msgstr "Entrez le type de systčme de fichiers: "
+
+#: fdisk/cfdisk.c:2214
+msgid "Cannot change FS Type to empty"
+msgstr ""
+
+#: fdisk/cfdisk.c:2216
+msgid "Cannot change FS Type to extended"
+msgstr ""
+
+#: fdisk/cfdisk.c:2238 fdisk/fdisksunlabel.c:44
+msgid "Boot"
+msgstr "Boot"
+
+#: fdisk/cfdisk.c:2240
+#, c-format
+msgid "Unk(%02X)"
+msgstr "Inc(%02X)"
+
+#: fdisk/cfdisk.c:2243 fdisk/cfdisk.c:2246
+msgid ", NC"
+msgstr ", NC"
+
+#: fdisk/cfdisk.c:2251 fdisk/cfdisk.c:2254
+msgid "NC"
+msgstr "NC"
+
+#: fdisk/cfdisk.c:2262
+msgid "Pri/Log"
+msgstr "Pri/Log"
+
+#: fdisk/cfdisk.c:2336
+#, c-format
+msgid "Disk Drive: %s"
+msgstr "Disque Dur: %s"
+
+#: fdisk/cfdisk.c:2338
+#, c-format
+msgid "Heads: %d Sectors per Track: %d Cylinders: %d"
+msgstr "Tętes: %d Secteurs par Piste: %d Cylindres: %d"
+
+#: fdisk/cfdisk.c:2342
+msgid "Name"
+msgstr "Nom"
+
+#: fdisk/cfdisk.c:2343
+msgid "Flags"
+msgstr "Drapeaux"
+
+#: fdisk/cfdisk.c:2344
+msgid "Part Type"
+msgstr "Type de SF"
+
+#: fdisk/cfdisk.c:2345
+msgid "FS Type"
+msgstr "Type SF"
+
+#: fdisk/cfdisk.c:2346
+msgid "[Label]"
+msgstr "[Label]"
+
+#: fdisk/cfdisk.c:2348
+msgid " Sectors"
+msgstr " Secteurs"
+
+#: fdisk/cfdisk.c:2352
+msgid "Size (MB)"
+msgstr "Taille(Mo)"
+
+#: fdisk/cfdisk.c:2407
+msgid "Bootable"
+msgstr "Bootable"
+
+#: fdisk/cfdisk.c:2407
+msgid "Toggle bootable flag of the current partition"
+msgstr "(Dés)activer le drapeau bootable pour la partition courante"
+
+#: fdisk/cfdisk.c:2408
+msgid "Delete"
+msgstr "Effacer"
+
+#: fdisk/cfdisk.c:2408
+msgid "Delete the current partition"
+msgstr "Effacer la partition courante"
+
+#: fdisk/cfdisk.c:2409
+msgid "Geometry"
+msgstr "Géométrie"
+
+#: fdisk/cfdisk.c:2409
+msgid "Change disk geometry (experts only)"
+msgstr "Changer la géométrie disque (experts seulement)"
+
+#: fdisk/cfdisk.c:2410
+msgid "Help"
+msgstr "Aide"
+
+#: fdisk/cfdisk.c:2410
+msgid "Print help screen"
+msgstr "Affiche l'écran d'aide"
+
+#: fdisk/cfdisk.c:2411
+msgid "Maximize"
+msgstr "Maximize"
+
+#: fdisk/cfdisk.c:2411
+msgid "Maximize disk usage of the current partition (experts only)"
+msgstr ""
+"Maximizer l'utilisation disque pour la partition courante (experts seulement)"
+
+#: fdisk/cfdisk.c:2412
+msgid "New"
+msgstr "Nouvelle"
+
+#: fdisk/cfdisk.c:2412
+msgid "Create new partition from free space"
+msgstr "Créér une nouvelle partition"
+
+#: fdisk/cfdisk.c:2413
+msgid "Print"
+msgstr "Imprimer"
+
+#: fdisk/cfdisk.c:2413
+msgid "Print partition table to the screen or to a file"
+msgstr "Imprimer la table des partition ŕ l'écran ou dans un fichier"
+
+#: fdisk/cfdisk.c:2414
+msgid "Quit"
+msgstr "Quitter"
+
+#: fdisk/cfdisk.c:2414
+msgid "Quit program without writing partition table"
+msgstr "Quitter le programme sans écrire la table de partition"
+
+#: fdisk/cfdisk.c:2415
+msgid "Type"
+msgstr "Type"
+
+#: fdisk/cfdisk.c:2415
+msgid "Change the filesystem type (DOS, Linux, OS/2 and so on)"
+msgstr "Changer le type du systčme de fichiers (DOS, Linux, OS/2, etc)"
+
+#: fdisk/cfdisk.c:2416
+msgid "Units"
+msgstr "Unités"
+
+#: fdisk/cfdisk.c:2416
+msgid "Change units of the partition size display (MB, sect, cyl)"
+msgstr "Changer l'unité pour la taille des partitions (Mo, sect, cyl)"
+
+#: fdisk/cfdisk.c:2417
+msgid "Write"
+msgstr "Ecrire"
+
+#: fdisk/cfdisk.c:2417
+msgid "Write partition table to disk (this might destroy data)"
+msgstr "Ecrire la table de partition sur disque (peux détruire des données)"
+
+#: fdisk/cfdisk.c:2463
+#, fuzzy
+msgid "Cannot make this partition bootable"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/cfdisk.c:2473
+#, fuzzy
+msgid "Cannot delete an empty partition"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/cfdisk.c:2493 fdisk/cfdisk.c:2495
+#, fuzzy
+msgid "Cannot maximize this partition"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/cfdisk.c:2503
+msgid "This partition is unusable"
+msgstr ""
+
+#: fdisk/cfdisk.c:2505
+msgid "This partition is already in use"
+msgstr ""
+
+#: fdisk/cfdisk.c:2522
+msgid "Cannot change the type of an empty partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2547 fdisk/cfdisk.c:2553
+#, fuzzy
+msgid "No more partitions"
+msgstr "Ne pas créér la partition"
+
+#: fdisk/cfdisk.c:2560
+#, fuzzy
+msgid "Illegal command"
+msgstr "Touche non valide"
+
+#: fdisk/cfdisk.c:2570
+#, fuzzy
+msgid "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+msgstr "Copyright (C) 1994-1997 Kevin E. Martin & aeb\n"
+
+#. Unfortunately, xgettext does not handle multi-line strings
+#. so, let's use explicit \n's instead
+#: fdisk/cfdisk.c:2577
+#, c-format
+msgid ""
+"\n"
+"Usage:\n"
+"Print version:\n"
+" %s -v\n"
+"Print partition table:\n"
+" %s -P {r|s|t} [options] device\n"
+"Interactive use:\n"
+" %s [options] device\n"
+"\n"
+"Options:\n"
+"-a: Use arrow instead of highlighting;\n"
+"-z: Start with a zero partition table, instead of reading the pt from disk;\n"
+"-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n"
+" the number of heads and the number of sectors/track.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:235
+msgid ""
+"Usage: fdisk [-b SSZ] [-u] [DISK] Change partition table\n"
+" fdisk -l [-b SSZ] [-u] [DISK] List partition table(s)\n"
+" fdisk -s PARTITION Give partition size(s) in blocks\n"
+" fdisk -v Give fdisk version\n"
+"Here DISK is something like /dev/hdb or /dev/sda\n"
+"and PARTITION is something like /dev/hda7\n"
+"-u: give Start and End in sector (instead of cylinder) units\n"
+"-b 2048: (for certain MO drives) use 2048-byte sectors\n"
+msgstr ""
+
+#: fdisk/fdisk.c:245
+msgid "A disk block device is needed.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:248
+msgid ""
+"Given name does not refer to a partition,\n"
+"or maybe not even to a block device.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:252
+#, fuzzy, c-format
+msgid "Unable to open %s\n"
+msgstr "Impossible d'ouvrir le disque dur"
+
+#: fdisk/fdisk.c:255
+#, c-format
+msgid "Unable to read %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:258
+#, c-format
+msgid "Unable to seek on %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:261
+#, c-format
+msgid "Unable to write %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:264
+msgid "Unable to allocate any more memory\n"
+msgstr ""
+
+#: fdisk/fdisk.c:266
+msgid "Fatal error\n"
+msgstr ""
+
+#: fdisk/fdisk.c:277 fdisk/fdisk.c:296 fdisk/fdisk.c:314 fdisk/fdisk.c:321
+#: fdisk/fdisk.c:344 fdisk/fdisk.c:362 fdisk/fdiskbsdlabel.c:105
+#, fuzzy
+msgid "Command action"
+msgstr "Commande Signification"
+
+#: fdisk/fdisk.c:278
+msgid " a toggle a read only flag"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:279 fdisk/fdisk.c:323
+msgid " b edit bsd disklabel"
+msgstr ""
+
+#: fdisk/fdisk.c:280
+msgid " c toggle the mountable flag"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:281 fdisk/fdisk.c:300 fdisk/fdisk.c:325
+#, fuzzy
+msgid " d delete a partition"
+msgstr " d Effacer la partition courante"
+
+#: fdisk/fdisk.c:282 fdisk/fdisk.c:301 fdisk/fdisk.c:326
+#, fuzzy
+msgid " l list known partition types"
+msgstr " t Changer le type de systčme de fichiers"
+
+#. sun
+#: fdisk/fdisk.c:283 fdisk/fdisk.c:302 fdisk/fdisk.c:315 fdisk/fdisk.c:327
+#: fdisk/fdisk.c:352 fdisk/fdisk.c:369 fdisk/fdiskbsdlabel.c:110
+#, fuzzy
+msgid " m print this menu"
+msgstr " h Afficher cet écran"
+
+#: fdisk/fdisk.c:284 fdisk/fdisk.c:303 fdisk/fdisk.c:328
+#, fuzzy
+msgid " n add a new partition"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/fdisk.c:285 fdisk/fdisk.c:304 fdisk/fdisk.c:316 fdisk/fdisk.c:329
+#, fuzzy
+msgid " o create a new empty DOS partition table"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/fdisk.c:286 fdisk/fdisk.c:305 fdisk/fdisk.c:330 fdisk/fdisk.c:353
+#: fdisk/fdisk.c:370
+#, fuzzy
+msgid " p print the partition table"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/fdisk.c:287 fdisk/fdisk.c:306 fdisk/fdisk.c:317 fdisk/fdisk.c:331
+#: fdisk/fdisk.c:354 fdisk/fdisk.c:371 fdisk/fdiskbsdlabel.c:113
+msgid " q quit without saving changes"
+msgstr ""
+
+#: fdisk/fdisk.c:288 fdisk/fdisk.c:307 fdisk/fdisk.c:318 fdisk/fdisk.c:332
+msgid " s create a new empty Sun disklabel"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:289 fdisk/fdisk.c:308 fdisk/fdisk.c:333
+#, fuzzy
+msgid " t change a partition's system id"
+msgstr " t Changer le type de systčme de fichiers"
+
+#: fdisk/fdisk.c:290 fdisk/fdisk.c:309 fdisk/fdisk.c:334
+msgid " u change display/entry units"
+msgstr ""
+
+#: fdisk/fdisk.c:291 fdisk/fdisk.c:310 fdisk/fdisk.c:335 fdisk/fdisk.c:357
+#: fdisk/fdisk.c:374
+#, fuzzy
+msgid " v verify the partition table"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/fdisk.c:292 fdisk/fdisk.c:311 fdisk/fdisk.c:336 fdisk/fdisk.c:358
+#: fdisk/fdisk.c:375
+msgid " w write table to disk and exit"
+msgstr ""
+
+#: fdisk/fdisk.c:293 fdisk/fdisk.c:337
+msgid " x extra functionality (experts only)"
+msgstr ""
+
+#: fdisk/fdisk.c:297
+#, fuzzy
+msgid " a select bootable partition"
+msgstr " d Effacer la partition courante"
+
+#. sgi flavour
+#: fdisk/fdisk.c:298
+msgid " b edit bootfile entry"
+msgstr ""
+
+#. sgi
+#: fdisk/fdisk.c:299
+#, fuzzy
+msgid " c select sgi swap partition"
+msgstr " d Effacer la partition courante"
+
+#: fdisk/fdisk.c:322
+msgid " a toggle a bootable flag"
+msgstr ""
+
+#: fdisk/fdisk.c:324
+msgid " c toggle the dos compatibility flag"
+msgstr ""
+
+#: fdisk/fdisk.c:345
+#, fuzzy
+msgid " a change number of alternate cylinders"
+msgstr "Entrez le nombre de cylindres: "
+
+#. sun
+#: fdisk/fdisk.c:346 fdisk/fdisk.c:364
+#, fuzzy
+msgid " c change number of cylinders"
+msgstr "Entrez le nombre de cylindres: "
+
+#: fdisk/fdisk.c:347 fdisk/fdisk.c:365
+#, fuzzy
+msgid " d print the raw data in the partition table"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/fdisk.c:348
+#, fuzzy
+msgid " e change number of extra sectors per cylinder"
+msgstr "Entrez le nombre de secteurs par piste: "
+
+#. sun
+#: fdisk/fdisk.c:349 fdisk/fdisk.c:368
+#, fuzzy
+msgid " h change number of heads"
+msgstr "Entrez le nombre de tętes: "
+
+#: fdisk/fdisk.c:350
+msgid " i change interleave factor"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:351
+#, fuzzy
+msgid " o change rotation speed (rpm)"
+msgstr " t Changer le type de systčme de fichiers"
+
+#: fdisk/fdisk.c:355 fdisk/fdisk.c:372 fdisk/fdiskbsdlabel.c:115
+msgid " r return to main menu"
+msgstr ""
+
+#: fdisk/fdisk.c:356 fdisk/fdisk.c:373
+#, fuzzy
+msgid " s change number of sectors"
+msgstr "Entrez le nombre de secteurs par piste: "
+
+#: fdisk/fdisk.c:359
+#, fuzzy
+msgid " y change number of physical cylinders"
+msgstr "Entrez le nombre de cylindres: "
+
+#: fdisk/fdisk.c:363
+msgid " b move beginning of data in a partition"
+msgstr ""
+
+#: fdisk/fdisk.c:366
+#, fuzzy
+msgid " e list extended partitions"
+msgstr "Pas de place pour créér une partition étendue"
+
+#. !sun
+#: fdisk/fdisk.c:367
+#, fuzzy
+msgid " g create an IRIX partition table"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/fdisk.c:463
+msgid "You must set"
+msgstr ""
+
+#: fdisk/fdisk.c:477
+#, fuzzy
+msgid "heads"
+msgstr "Tętes"
+
+#: fdisk/fdisk.c:479 fdisk/sfdisk.c:825
+#, fuzzy
+msgid "sectors"
+msgstr "Secteurs"
+
+#: fdisk/fdisk.c:481 fdisk/fdiskbsdlabel.c:441 fdisk/sfdisk.c:825
+#, fuzzy
+msgid "cylinders"
+msgstr "Cylindres"
+
+#: fdisk/fdisk.c:485
+#, c-format
+msgid ""
+"%s%s.\n"
+"You can do this from the extra functions menu.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:486
+msgid " and "
+msgstr ""
+
+#: fdisk/fdisk.c:520
+#, fuzzy
+msgid "Bad offset in primary extended partition\n"
+msgstr "Mauvaise partition primaire"
+
+#: fdisk/fdisk.c:524
+#, fuzzy, c-format
+msgid "Warning: deleting partitions after %d\n"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/fdisk.c:545
+#, fuzzy, c-format
+msgid "Warning: extra link pointer in partition table %d\n"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/fdisk.c:553
+#, c-format
+msgid "Warning: ignoring extra data in partition table %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:579
+msgid ""
+"Building a new DOS disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:615
+#, fuzzy
+msgid "You will not be able to write the partition table.\n"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/fdisk.c:624
+#, c-format
+msgid "Note: sector size is %d (not %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:671
+msgid ""
+"Device contains neither a valid DOS partition table, nor Sun or SGI "
+"disklabel\n"
+msgstr ""
+
+#: fdisk/fdisk.c:687
+#, fuzzy
+msgid "Internal error\n"
+msgstr "!!! Erreur Interne !!!"
+
+#: fdisk/fdisk.c:697
+#, fuzzy, c-format
+msgid "Ignoring extra extended partition %d\n"
+msgstr "Pas de place pour créér une partition étendue"
+
+#: fdisk/fdisk.c:704
+#, c-format
+msgid ""
+"Warning: invalid flag 0x%04x of partition table %d will be corrected by "
+"w(rite)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:725
+msgid ""
+"\n"
+"got EOF thrice - exiting..\n"
+msgstr ""
+
+#: fdisk/fdisk.c:762
+msgid "Hex code (type L to list codes): "
+msgstr ""
+
+#: fdisk/fdisk.c:801
+#, c-format
+msgid "%s (%d-%d, default %d): "
+msgstr ""
+
+#: fdisk/fdisk.c:855
+#, c-format
+msgid "Using default value %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:859
+msgid "Value out of range.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:866
+#, fuzzy
+msgid "Partition number"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/fdisk.c:874
+#, fuzzy, c-format
+msgid "Warning: partition %d has empty type\n"
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/fdisk.c:880
+#, fuzzy
+msgid "cylinder"
+msgstr "Cylindres"
+
+#: fdisk/fdisk.c:880
+#, fuzzy
+msgid "sector"
+msgstr "Secteurs"
+
+#: fdisk/fdisk.c:887
+#, c-format
+msgid "Changing display/entry units to %ss\n"
+msgstr ""
+
+#: fdisk/fdisk.c:897
+#, c-format
+msgid "WARNING: Partition %d is an extended partition\n"
+msgstr ""
+
+#: fdisk/fdisk.c:910
+msgid "DOS Compatibility flag is set\n"
+msgstr ""
+
+#: fdisk/fdisk.c:914
+msgid "DOS Compatibility flag is not set\n"
+msgstr ""
+
+#: fdisk/fdisk.c:999
+#, c-format
+msgid "Partition %d does not exist yet!\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1004
+msgid ""
+"Type 0 means free space to many systems\n"
+"(but not to Linux). Having partitions of\n"
+"type 0 is probably unwise. You can delete\n"
+"a partition using the `d' command.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1013
+msgid ""
+"You cannot change a partition into an extended one or vice versa\n"
+"Delete it first.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1022
+msgid ""
+"Consider leaving partition 3 as Whole disk (5),\n"
+"as SunOS/Solaris expects it and even Linux likes it.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1028
+msgid ""
+"Consider leaving partition 9 as volume header (0),\n"
+"and partition 11 as entire volume (6)as IRIX expects it.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1042
+#, c-format
+msgid "Changed system type of partition %d to %x (%s)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1095
+#, c-format
+msgid "Partition %d has different physical/logical beginnings (non-Linux?):\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1097 fdisk/fdisk.c:1105 fdisk/fdisk.c:1114 fdisk/fdisk.c:1123
+#, c-format
+msgid " phys=(%d, %d, %d) "
+msgstr ""
+
+#: fdisk/fdisk.c:1098 fdisk/fdisk.c:1106
+#, c-format
+msgid "logical=(%d, %d, %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1103
+#, c-format
+msgid "Partition %d has different physical/logical endings:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1112
+#, c-format
+msgid "Partition %i does not start on cylinder boundary:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1115
+#, c-format
+msgid "should be (%d, %d, 1)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1121
+#, c-format
+msgid "Partition %i does not end on cylinder boundary:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1124
+#, c-format
+msgid "should be (%d, %d, %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1131
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * %d bytes\n"
+"\n"
+msgstr ""
+
+#. FIXME! let's see how this shows up with other languagues
+#. acme@conectiva.com.br
+#: fdisk/fdisk.c:1168
+#, c-format
+msgid "%*s Boot Start End Blocks Id System\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1169 fdisk/fdisksgilabel.c:207 fdisk/fdisksunlabel.c:629
+msgid "Device"
+msgstr ""
+
+#: fdisk/fdisk.c:1209
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1211
+msgid "Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1250
+#, fuzzy, c-format
+msgid "Warning: partition %d contains sector 0\n"
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/fdisk.c:1253
+#, c-format
+msgid "Partition %d: head %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1256
+#, c-format
+msgid "Partition %d: sector %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1259
+#, c-format
+msgid "Partitions %d: cylinder %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1263
+#, c-format
+msgid "Partition %d: previous sectors %d disagrees with total %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1293
+#, fuzzy, c-format
+msgid "Warning: bad start-of-data in partition %d\n"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/fdisk.c:1301
+#, fuzzy, c-format
+msgid "Warning: partition %d overlaps partition %d.\n"
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/fdisk.c:1319
+#, fuzzy, c-format
+msgid "Warning: partition %d is empty\n"
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/fdisk.c:1324
+#, fuzzy, c-format
+msgid "Logical partition %d not entirely in partition %d\n"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/fdisk.c:1330
+#, c-format
+msgid "Total allocated sectors %d greater than the maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1333
+#, c-format
+msgid "%d unallocated sectors\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1345 fdisk/fdisksgilabel.c:684 fdisk/fdisksunlabel.c:479
+#, c-format
+msgid "Partition %d is already defined. Delete it before re-adding it.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1366 fdisk/fdiskbsdlabel.c:252 fdisk/fdisksgilabel.c:706
+#: fdisk/fdisksunlabel.c:494
+#, c-format
+msgid "First %s"
+msgstr ""
+
+#: fdisk/fdisk.c:1381 fdisk/fdisksunlabel.c:519
+#, c-format
+msgid "Sector %d is already allocated\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1407
+msgid "No free sectors available\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1417 fdisk/fdiskbsdlabel.c:256 fdisk/fdisksunlabel.c:529
+#, c-format
+msgid "Last %s or +size or +sizeM or +sizeK"
+msgstr ""
+
+#: fdisk/fdisk.c:1447
+#, fuzzy, c-format
+msgid "Warning: partition %d has an odd number of sectors.\n"
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/fdisk.c:1484 fdisk/fdiskbsdlabel.c:590
+msgid "The maximum number of partitions has been created\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1494
+msgid "You must delete some partition and add an extended partition first\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1498
+#, c-format
+msgid ""
+"Command action\n"
+" %s\n"
+" p primary partition (1-4)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1500
+msgid "l logical (5 or over)"
+msgstr ""
+
+#: fdisk/fdisk.c:1500
+msgid "e extended"
+msgstr ""
+
+#: fdisk/fdisk.c:1517
+#, c-format
+msgid "Invalid partition number for type `%c'\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1549
+#, fuzzy
+msgid ""
+"The partition table has been altered!\n"
+"\n"
+msgstr "Table de partition écrite sur disque"
+
+#: fdisk/fdisk.c:1551
+#, fuzzy
+msgid "Calling ioctl() to re-read partition table.\n"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/fdisk.c:1568
+msgid "Syncing disks.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1573
+#, fuzzy, c-format
+msgid ""
+"Re-read table failed with error %d: %s.\n"
+"Reboot your system to ensure the partition table is updated.\n"
+msgstr ""
+"Rebootez le systčme pour ętre sur que la table des partitions a été "
+"correctement mise ŕ jour.\n"
+
+#: fdisk/fdisk.c:1579
+#, fuzzy
+msgid ""
+"\n"
+"WARNING: If you have created or modified any DOS 6.x\n"
+"partitions, please see the fdisk manual page for additional\n"
+"information.\n"
+msgstr ""
+"\n"
+"AVERTISSEMENT: Si vous avez créé ou modifié\n"
+"une ou des partitions DOS 6.x, reportez-vous au manuel\n"
+"de cfdisk pour avoir plus d'informations.\n"
+
+#: fdisk/fdisk.c:1610
+#, fuzzy, c-format
+msgid "Device: %s\n"
+msgstr "Disque Dur: %s\n"
+
+#: fdisk/fdisk.c:1625
+#, fuzzy, c-format
+msgid "Partition %d has no data area\n"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/fdisk.c:1631
+msgid "New beginning of data"
+msgstr ""
+
+#: fdisk/fdisk.c:1645
+msgid "Expert command (m for help): "
+msgstr ""
+
+#: fdisk/fdisk.c:1656
+#, fuzzy
+msgid "Number of cylinders"
+msgstr "Entrez le nombre de cylindres: "
+
+#: fdisk/fdisk.c:1677
+#, fuzzy
+msgid "Number of heads"
+msgstr "Entrez le nombre de tętes: "
+
+#: fdisk/fdisk.c:1702
+#, fuzzy
+msgid "Number of sectors"
+msgstr " Secteurs"
+
+#: fdisk/fdisk.c:1705
+msgid "Warning: setting sector offset for DOS compatiblity\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1767
+#, fuzzy, c-format
+msgid "Disk %s doesn't contain a valid partition table\n"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/fdisk.c:1781
+#, fuzzy, c-format
+msgid "Cannot open %s\n"
+msgstr "Impossible d'ouvrir le disque dur"
+
+#: fdisk/fdisk.c:1836
+msgid "This kernel finds the sector size itself - -b option ignored\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1839
+msgid ""
+"Warning: the -b (set sector size) option should be used with one specified "
+"device\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1947
+#, fuzzy, c-format
+msgid "Using %s as default device!\n"
+msgstr "%s: n'est pas un lecteur de disquettes\n"
+
+#: fdisk/fdisk.c:1953
+msgid "Command (m for help): "
+msgstr ""
+
+#: fdisk/fdisk.c:1967
+#, c-format
+msgid ""
+"\n"
+"The current boot file is: %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1969
+msgid "Please enter the name of the new boot file: "
+msgstr ""
+
+#: fdisk/fdisk.c:1971
+#, fuzzy
+msgid "Boot file unchanged\n"
+msgstr "Le disque a été changé.\n"
+
+#: fdisk/fdisk.c:2031
+msgid ""
+"\n"
+"\tSorry, no experts menu for SGI partition tables available.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdiskaixlabel.c:29
+msgid ""
+"\n"
+"\tThere is a valid AIX label on this disk.\n"
+"\tUnfortunately Linux cannot handle these\n"
+"\tdisks at the moment. Nevertheless some\n"
+"\tadvice:\n"
+"\t1. fdisk will destroy its contents on write.\n"
+"\t2. Be sure that this disk is NOT a still vital\n"
+"\t part of a volume group. (Otherwise you may\n"
+"\t erase the other disks as well, if unmirrored.)\n"
+"\t3. Before deleting this physical volume be sure\n"
+"\t to remove the disk logically from your AIX\n"
+"\t machine. (Otherwise you become an AIXpert)."
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:97
+#, c-format
+msgid ""
+"\n"
+"BSD label for device: %s\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:106
+#, fuzzy
+msgid " d delete a BSD partition"
+msgstr " d Effacer la partition courante"
+
+#: fdisk/fdiskbsdlabel.c:107
+msgid " e edit drive data"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:108
+msgid " i install bootstrap"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:109
+#, fuzzy
+msgid " l list known filesystem types"
+msgstr " t Changer le type de systčme de fichiers"
+
+#: fdisk/fdiskbsdlabel.c:111
+#, fuzzy
+msgid " n add a new BSD partition"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/fdiskbsdlabel.c:112
+#, fuzzy
+msgid " p print BSD partition table"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/fdiskbsdlabel.c:117
+msgid " s show complete disklabel"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:118
+#, fuzzy
+msgid " t change a partition's filesystem id"
+msgstr " t Changer le type de systčme de fichiers"
+
+#: fdisk/fdiskbsdlabel.c:119
+msgid " w write disklabel to disk"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:121
+msgid " x link BSD partition to non-BSD partition"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:146
+#, fuzzy, c-format
+msgid "Partition %s%d has invalid starting sector 0.\n"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/fdiskbsdlabel.c:150
+#, c-format
+msgid "Reading disklabel of %s%d at sector %d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:159
+#, fuzzy, c-format
+msgid "There is no *BSD partition on %s.\n"
+msgstr "Table de partition non écrite sur le disque"
+
+#: fdisk/fdiskbsdlabel.c:174
+msgid "BSD disklabel command (m for help): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:286
+#, c-format
+msgid "type: %s\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:288
+#, c-format
+msgid "type: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:289
+#, fuzzy, c-format
+msgid "disk: %.*s\n"
+msgstr "Disque Dur: %s\n"
+
+#: fdisk/fdiskbsdlabel.c:290
+#, c-format
+msgid "label: %.*s\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:291
+#, fuzzy
+msgid "flags:"
+msgstr "Drapeaux"
+
+#: fdisk/fdiskbsdlabel.c:293
+#, fuzzy
+msgid " removable"
+msgstr "Enlever"
+
+#: fdisk/fdiskbsdlabel.c:295
+msgid " ecc"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:297
+msgid " badsect"
+msgstr ""
+
+#. On various machines the fields of *lp are short/int/long
+#. In order to avoid problems, we cast them all to long.
+#: fdisk/fdiskbsdlabel.c:301
+#, fuzzy, c-format
+msgid "bytes/sector: %ld\n"
+msgstr "Secteur %d:\n"
+
+#: fdisk/fdiskbsdlabel.c:302
+#, fuzzy, c-format
+msgid "sectors/track: %ld\n"
+msgstr "Secteur %d:\n"
+
+#: fdisk/fdiskbsdlabel.c:303
+#, c-format
+msgid "tracks/cylinder: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:304
+#, c-format
+msgid "sectors/cylinder: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:305
+#, fuzzy, c-format
+msgid "cylinders: %ld\n"
+msgstr "Cylindres"
+
+#: fdisk/fdiskbsdlabel.c:306
+#, c-format
+msgid "rpm: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:307
+#, c-format
+msgid "interleave: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:308
+#, c-format
+msgid "trackskew: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:309
+#, fuzzy, c-format
+msgid "cylinderskew: %d\n"
+msgstr "Cylindres"
+
+#: fdisk/fdiskbsdlabel.c:310
+#, c-format
+msgid "headswitch: %ld\t\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:311
+#, c-format
+msgid "track-to-track seek: %ld\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:312
+msgid "drivedata: "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:321
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%d partitions:\n"
+msgstr "Ne pas créér la partition"
+
+#: fdisk/fdiskbsdlabel.c:322
+msgid "# size offset fstype [fsize bsize cpg]\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:378
+#, fuzzy, c-format
+msgid "Writing disklabel to %s%d.\n"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/fdiskbsdlabel.c:381
+#, fuzzy, c-format
+msgid "Writing disklabel to %s.\n"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/fdiskbsdlabel.c:392
+#, c-format
+msgid "%s%d contains no disklabel.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:395
+#, c-format
+msgid "%s contains no disklabel.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:399
+msgid "Do you want to create a disklabel? (y/n) "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:438
+#, fuzzy
+msgid "bytes/sector"
+msgstr "Secteurs"
+
+#: fdisk/fdiskbsdlabel.c:439
+#, fuzzy
+msgid "sectors/track"
+msgstr "Secteurs"
+
+#: fdisk/fdiskbsdlabel.c:440
+#, fuzzy
+msgid "tracks/cylinder"
+msgstr "Cylindres"
+
+#: fdisk/fdiskbsdlabel.c:448
+#, fuzzy
+msgid "sectors/cylinder"
+msgstr "Cylindres"
+
+#: fdisk/fdiskbsdlabel.c:452
+msgid "Must be <= sectors/track * tracks/cylinder (default).\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:454
+msgid "rpm"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:455
+msgid "interleave"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:456
+msgid "trackskew"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:457
+#, fuzzy
+msgid "cylinderskew"
+msgstr "Cylindres"
+
+#: fdisk/fdiskbsdlabel.c:458
+msgid "headswitch"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:459
+msgid "track-to-track seek"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:500
+#, c-format
+msgid "Bootstrap: %sboot -> boot%s (%s): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:526
+msgid "Bootstrap overlaps with disk label!\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:547
+#, c-format
+msgid "Bootstrap installed on %s%d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:549
+#, c-format
+msgid "Bootstrap installed on %s.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:570
+#, c-format
+msgid "Partition (a-%c): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:601
+#, fuzzy
+msgid "This partition already exists.\n"
+msgstr "Table de partition écrite sur disque"
+
+#: fdisk/fdiskbsdlabel.c:723
+#, fuzzy, c-format
+msgid "Warning: too many partitions (%d, maximum is %d).\n"
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/fdiskbsdlabel.c:769
+msgid ""
+"\n"
+"Syncing disks.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:56
+msgid "SGI volhdr"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:57
+msgid "SGI trkrepl"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:58
+msgid "SGI secrepl"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:59
+msgid "SGI raw"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:60
+msgid "SGI bsd"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:61
+msgid "SGI sysv"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:62
+msgid "SGI volume"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:63
+msgid "SGI efs"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:64
+msgid "SGI lvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:65
+msgid "SGI rlvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:66
+msgid "SGI xfs"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:67
+msgid "SGI xlvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:68
+msgid "SGI rxlvol"
+msgstr ""
+
+#. Minix 1.4b and later
+#: fdisk/fdisksgilabel.c:69 fdisk/fdisksunlabel.c:52 fdisk/i386_sys_types.c:52
+#, fuzzy
+msgid "Linux swap"
+msgstr "Linux"
+
+#: fdisk/fdisksgilabel.c:70 fdisk/fdisksunlabel.c:53
+#, fuzzy
+msgid "Linux native"
+msgstr "Linux ext2"
+
+#: fdisk/fdisksgilabel.c:143
+msgid ""
+"According to MIPS Computer Systems, Inc the Label must not contain more than "
+"512 bytes\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:162
+msgid "Detected sgi disklabel with wrong checksum.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:186
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors\n"
+"%d cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:199
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:205
+#, c-format
+msgid ""
+"----- partitions -----\n"
+"%*s Info Start End Sectors Id System\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:227
+#, c-format
+msgid ""
+"----- bootinfo -----\n"
+"Bootfile: %s\n"
+"----- directory entries -----\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:237
+#, c-format
+msgid "%2d: %-10s sector%5u size%8u\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:298
+msgid ""
+"\n"
+"Invalid Bootfile!\n"
+"\tThe bootfile must be an absolute non-zero pathname,\n"
+"\te.g. \"/unix\" or \"/unix.save\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:305
+msgid ""
+"\n"
+"\tName of Bootfile too long: 16 bytes maximum.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:310
+msgid ""
+"\n"
+"\tBootfile must have a fully qualified pathname.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:315
+msgid ""
+"\n"
+"\tBe aware, that the bootfile is not checked for existence.\n"
+"\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:343
+#, c-format
+msgid ""
+"\n"
+"\tBootfile is changed to \"%s\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:448
+msgid "More than one entire disk entry present.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:456 fdisk/fdisksunlabel.c:455
+#, fuzzy
+msgid "No partitions defined\n"
+msgstr "Ne pas créér la partition"
+
+#: fdisk/fdisksgilabel.c:463
+msgid "IRIX likes when Partition 11 covers the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:465
+#, c-format
+msgid ""
+"The entire disk partition should start at block 0,\n"
+"not at diskblock %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:469
+#, c-format
+msgid ""
+"The entire disk partition is only %d diskblock large,\n"
+"but the disk is %d diskblocks long.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:476
+msgid "One Partition (#11) should cover the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:488
+#, fuzzy, c-format
+msgid "Partition %d does not start on cylinder boundary.\n"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/fdisksgilabel.c:495
+#, c-format
+msgid "Partition %d does not end on cylinder boundary.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:503
+#, c-format
+msgid "The Partition %d and %d overlap by %d sectors.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:512 fdisk/fdisksgilabel.c:532
+#, c-format
+msgid "Unused gap of %8d sectors - sectors %8d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:545
+#, fuzzy
+msgid ""
+"\n"
+"The boot partition does not exist.\n"
+msgstr "Table de partition écrite sur disque"
+
+#: fdisk/fdisksgilabel.c:549
+#, fuzzy
+msgid ""
+"\n"
+"The swap partition does not exist.\n"
+msgstr "Table de partition écrite sur disque"
+
+#: fdisk/fdisksgilabel.c:554
+msgid ""
+"\n"
+"The swap partition has no swap type.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:558
+msgid "\tYou have chosen an unusual boot file name.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:569
+msgid "Sorry You may change the Tag of non-empty partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:576
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is of type \"SGI volhdr\", the IRIX system will rely on it to\n"
+"retrieve from its directory standalone tools like sash and fx.\n"
+"Only the \"SGI volume\" entire disk section may violate this.\n"
+"Type YES if you are sure about tagging this partition differently.\n"
+msgstr ""
+
+#. rebuild freelist
+#: fdisk/fdisksgilabel.c:621
+msgid "Do You know, You got a partition overlap on the disk?\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:691
+msgid "Attempting to generate entire disk entry automatically.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:698
+msgid "The entire disk is already covered with partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:703
+msgid "You got a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:712 fdisk/fdisksgilabel.c:741
+msgid ""
+"It is highly recommended that eleventh partition\n"
+"covers the entire disk and is of type `SGI volume'\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:728
+msgid "You will get a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:733
+#, c-format
+msgid " Last %s"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:756
+msgid ""
+"Building a new SGI disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content will be unrecoverable lost.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:784
+#, c-format
+msgid "Trying to keep parameters of partition %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:786
+#, c-format
+msgid "ID=%02x\tSTART=%d\tLENGTH=%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:43 fdisk/i386_sys_types.c:6
+msgid "Empty"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:45
+msgid "SunOS root"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:46
+msgid "SunOS swap"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:47
+msgid "SunOS usr"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:48
+msgid "Whole disk"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:49
+msgid "SunOS stand"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:50
+msgid "SunOS var"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:51
+msgid "SunOS home"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:122
+msgid ""
+"Detected sun disklabel with wrong checksum.\n"
+"Probably you'll have to set all the values,\n"
+"e.g. heads, sectors, cylinders and partitions\n"
+"or force a fresh label (s command in main menu)\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:215
+#, c-format
+msgid "Autoconfigure found a %s%s%s\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:242
+msgid ""
+"Building a new sun disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:253
+msgid ""
+"Drive type\n"
+" ? auto configure\n"
+" 0 custom (with hardware detected defaults)"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:263
+msgid "Select type (? for auto, 0 for custom): "
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:275
+msgid "Autoconfigure failed.\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:303
+#, fuzzy
+msgid "Sectors/track"
+msgstr "Secteurs"
+
+#: fdisk/fdisksunlabel.c:310
+#, fuzzy
+msgid "Alternate cylinders"
+msgstr "Cylindres"
+
+#: fdisk/fdisksunlabel.c:313
+#, fuzzy
+msgid "Physical cylinders"
+msgstr "Cylindres"
+
+#: fdisk/fdisksunlabel.c:316 fdisk/fdisksunlabel.c:679
+msgid "Rotation speed (rpm)"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:318 fdisk/fdisksunlabel.c:672
+msgid "Interleave factor"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:321 fdisk/fdisksunlabel.c:665
+#, fuzzy
+msgid "Extra sectors per cylinder"
+msgstr "Cylindres"
+
+#: fdisk/fdisksunlabel.c:334
+msgid "You may change all the disk params from the x menu"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+msgid "3,5\" floppy"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+#, fuzzy
+msgid "Linux custom"
+msgstr "Linux ext2"
+
+#: fdisk/fdisksunlabel.c:418
+#, c-format
+msgid "Partition %d doesn't end on cylinder boundary\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:438
+#, fuzzy, c-format
+msgid "Partition %d overlaps with others in sectors %d-%d\n"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/fdisksunlabel.c:460
+#, c-format
+msgid "Unused gap - sectors 0-%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:462 fdisk/fdisksunlabel.c:466
+#, c-format
+msgid "Unused gap - sectors %d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:489
+msgid ""
+"Other partitions already cover the whole disk.\n"
+"Delete some/shrink them before retry.\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:547
+#, c-format
+msgid ""
+"You haven't covered whole disk with 3rd partition, but your value\n"
+"%d %s covers some other partition. Your entry have been changed\n"
+"to %d %s\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:565
+#, c-format
+msgid ""
+"If you want to maintain SunOS/Solaris compatibility, consider leaving this\n"
+"partition as Whole disk (5), starting at 0, with %u sectors\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:578
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n"
+"there may destroy your partition table and bootblock.\n"
+"Type YES if you're very sure you would like that partition\n"
+"tagged with 82 (Linux swap): "
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:609
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n"
+"%d cylinders, %d alternate cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:623
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:628
+#, c-format
+msgid "%*s Flag Start End Blocks Id System\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:653
+#, fuzzy
+msgid "Number of alternate cylinders"
+msgstr "Entrez le nombre de cylindres: "
+
+#: fdisk/fdisksunlabel.c:686
+#, fuzzy
+msgid "Number of physical cylinders"
+msgstr "Entrez le nombre de cylindres: "
+
+#: fdisk/i386_sys_types.c:7
+msgid "FAT12"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:8
+msgid "XENIX root"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:9
+msgid "XENIX usr"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:10
+msgid "FAT16 <32M"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:11
+msgid "Extended"
+msgstr ""
+
+#. DOS 3.3+ extended partition
+#: fdisk/i386_sys_types.c:12
+msgid "FAT16"
+msgstr ""
+
+#. DOS 16-bit >=32M
+#: fdisk/i386_sys_types.c:13
+#, fuzzy
+msgid "HPFS/NTFS"
+msgstr "NTFS"
+
+#. OS/2 IFS, eg, HPFS or NTFS or QNX
+#: fdisk/i386_sys_types.c:14
+msgid "AIX"
+msgstr ""
+
+#. AIX boot (AIX -- PS/2 port) or SplitDrive
+#: fdisk/i386_sys_types.c:15
+#, fuzzy
+msgid "AIX bootable"
+msgstr "Bootable"
+
+#. AIX data or Coherent
+#: fdisk/i386_sys_types.c:16
+msgid "OS/2 Boot Manager"
+msgstr ""
+
+#. OS/2 Boot Manager
+#: fdisk/i386_sys_types.c:17
+msgid "Win95 FAT32"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:18
+msgid "Win95 FAT32 (LBA)"
+msgstr ""
+
+#. LBA really is `Extended Int 13h'
+#: fdisk/i386_sys_types.c:19
+msgid "Win95 FAT16 (LBA)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:20
+msgid "Win95 Ext'd (LBA)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:21
+msgid "OPUS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:22
+msgid "Hidden FAT12"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:23
+msgid "Compaq diagnostics"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:24
+msgid "Hidden FAT16 <32M"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:25
+msgid "Hidden FAT16"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:26
+msgid "Hidden HPFS/NTFS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:27
+msgid "AST Windows swapfile"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:28
+msgid "NEC DOS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:29
+#, fuzzy
+msgid "PartitionMagic recovery"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/i386_sys_types.c:30
+msgid "Venix 80286"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:31
+msgid "PPC PReP Boot"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:32
+msgid "SFS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:33
+msgid "QNX4.x"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:34
+msgid "QNX4.x 2nd part"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:35
+msgid "QNX4.x 3rd part"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:36
+msgid "OnTrack DM"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:37
+msgid "OnTrack DM6 Aux1"
+msgstr ""
+
+#. (or Novell)
+#: fdisk/i386_sys_types.c:38
+msgid "CP/M"
+msgstr ""
+
+#. CP/M or Microport SysV/AT
+#: fdisk/i386_sys_types.c:39
+msgid "OnTrack DM6 Aux3"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:40
+msgid "OnTrackDM6"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:41
+msgid "EZ-Drive"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:42
+msgid "Golden Bow"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:43
+msgid "Priam Edisk"
+msgstr ""
+
+#. DOS R/O or SpeedStor
+#: fdisk/i386_sys_types.c:44 fdisk/i386_sys_types.c:73
+#: fdisk/i386_sys_types.c:75 fdisk/i386_sys_types.c:76
+#, fuzzy
+msgid "SpeedStor"
+msgstr "Secteurs"
+
+#: fdisk/i386_sys_types.c:45
+msgid "GNU HURD or SysV"
+msgstr ""
+
+#. GNU HURD or Mach or Sys V/386 (such as ISC UNIX)
+#: fdisk/i386_sys_types.c:46
+msgid "Novell Netware 286"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:47
+msgid "Novell Netware 386"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:48
+msgid "DiskSecure Multi-Boot"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:49
+msgid "PC/IX"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:50
+msgid "Old Minix"
+msgstr ""
+
+#. Minix 1.4a and earlier
+#: fdisk/i386_sys_types.c:51
+msgid "Minix / old Linux"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:54
+msgid "OS/2 hidden C: drive"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:55
+#, fuzzy
+msgid "Linux extended"
+msgstr "Linux ext2"
+
+#: fdisk/i386_sys_types.c:56 fdisk/i386_sys_types.c:57
+msgid "NTFS volume set"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:58
+msgid "Amoeba"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:59
+msgid "Amoeba BBT"
+msgstr ""
+
+#. (bad block table)
+#: fdisk/i386_sys_types.c:60
+msgid "IBM Thinkpad hibernation"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:61
+msgid "BSD/386"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:62
+msgid "OpenBSD"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:63
+msgid "NeXTSTEP"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:64
+msgid "BSDI fs"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:65
+msgid "BSDI swap"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:66
+msgid "DRDOS/sec (FAT-12)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:67
+msgid "DRDOS/sec (FAT-16 < 32M)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:68
+msgid "DRDOS/sec (FAT-16)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:69
+msgid "Syrinx"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:70
+msgid "CP/M / CTOS / ..."
+msgstr ""
+
+#. CP/M or Concurrent CP/M or Concurrent DOS or CTOS
+#: fdisk/i386_sys_types.c:71
+msgid "DOS access"
+msgstr ""
+
+#. DOS access or SpeedStor 12-bit FAT extended partition
+#: fdisk/i386_sys_types.c:72
+msgid "DOS R/O"
+msgstr ""
+
+#. SpeedStor 16-bit FAT extended partition < 1024 cyl.
+#: fdisk/i386_sys_types.c:74
+msgid "BeOS fs"
+msgstr ""
+
+#. SpeedStor large partition
+#: fdisk/i386_sys_types.c:77
+msgid "DOS secondary"
+msgstr ""
+
+#. DOS 3.3+ secondary
+#: fdisk/i386_sys_types.c:78
+msgid "LANstep"
+msgstr ""
+
+#. SpeedStor >1024 cyl. or LANstep
+#: fdisk/i386_sys_types.c:79
+msgid "BBT"
+msgstr ""
+
+#: fdisk/sfdisk.c:148
+#, c-format
+msgid "seek error on %s - cannot seek to %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:153
+#, c-format
+msgid "seek error: wanted 0x%08x%08x, got 0x%08x%08x\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:199
+msgid "out of memory - giving up\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:203 fdisk/sfdisk.c:286
+#, c-format
+msgid "read error on %s - cannot read sector %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:219
+#, c-format
+msgid "ERROR: sector %lu does not have an msdos signature\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:236
+#, c-format
+msgid "write error on %s - cannot write sector %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:274
+#, c-format
+msgid "cannot open partition sector save file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:292
+#, c-format
+msgid "write error on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:310
+#, c-format
+msgid "cannot stat partition restore file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:315
+msgid "partition restore file has wrong size - not restoring\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:319
+msgid "out of memory?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:325
+#, c-format
+msgid "cannot open partition restore file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:331
+#, c-format
+msgid "error reading %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:338
+#, fuzzy, c-format
+msgid "cannot open device %s for writing\n"
+msgstr "Impossible d'ouvrir le disque dur"
+
+#: fdisk/sfdisk.c:350
+#, c-format
+msgid "error writing sector %lu on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:407
+#, c-format
+msgid ""
+"Warning: start=%d - this looks like a partition rather than\n"
+"the entire disk. Using fdisk on it is probably meaningless.\n"
+"[Use the --force option if you really want this]\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:413
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d heads\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:416
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d sectors\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:419
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d cylinders\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:423
+#, fuzzy, c-format
+msgid "Disk %s: cannot get geometry\n"
+msgstr "Changement de géométrie terminé"
+
+#: fdisk/sfdisk.c:425
+#, c-format
+msgid ""
+"Warning: unlikely number of sectors (%d) - usually at most 63\n"
+"This will give problems with all software that uses C/H/S addressing.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:429
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %lu heads, %lu sectors, %lu cylinders\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:509
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for head: %d (should be in 0-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:514
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for sector: %d (should be in 1-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:519
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for cylinders: %d (should be in "
+"0-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:558
+msgid ""
+"Id Name\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:703
+#, fuzzy
+msgid "Re-reading the partition table ...\n"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/sfdisk.c:709
+msgid ""
+"The command to re-read the partition table failed\n"
+"Reboot your system now, before using mkfs\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:714
+#, c-format
+msgid "Error closing %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:752
+#, fuzzy, c-format
+msgid "%s: no such partition\n"
+msgstr "Mauvaise partition logique"
+
+#: fdisk/sfdisk.c:775
+msgid "unrecognized format - using sectors\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:813
+#, fuzzy, c-format
+msgid "# partition table of %s\n"
+msgstr "Table de partitions pour %s\n"
+
+#: fdisk/sfdisk.c:814
+msgid ""
+"unit: sectors\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:824
+#, c-format
+msgid "unimplemented format - using %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:828
+#, c-format
+msgid ""
+"Units = cylinders of %lu bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:831
+msgid " Device Boot Start End #cyls #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:836
+#, c-format
+msgid ""
+"Units = sectors of 512 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:838
+msgid " Device Boot Start End #sectors Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:841
+#, c-format
+msgid ""
+"Units = blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:843
+msgid " Device Boot Start End #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:846
+#, c-format
+msgid ""
+"Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:848
+msgid " Device Boot Start End MB #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:903
+#, c-format
+msgid " start=%9lu"
+msgstr ""
+
+#: fdisk/sfdisk.c:904
+#, fuzzy, c-format
+msgid ", size=%8lu"
+msgstr "Taillemax=%ld\n"
+
+#: fdisk/sfdisk.c:906
+#, c-format
+msgid ", Id=%2x"
+msgstr ""
+
+#: fdisk/sfdisk.c:908
+#, fuzzy
+msgid ", bootable"
+msgstr "Bootable"
+
+#: fdisk/sfdisk.c:969
+#, c-format
+msgid "\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:976
+#, c-format
+msgid "\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:979
+#, c-format
+msgid "partition ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:989
+#, fuzzy
+msgid "No partitions found\n"
+msgstr "Ne pas créér la partition"
+
+#: fdisk/sfdisk.c:1034
+#, fuzzy
+msgid "no partition table present.\n"
+msgstr "Table de partition écrite sur disque"
+
+#: fdisk/sfdisk.c:1036
+#, c-format
+msgid "strange, only %d partitions defined.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1045
+#, c-format
+msgid "Warning: partition %s has size 0 but is not marked Empty\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1048
+#, c-format
+msgid "Warning: partition %s has size 0 and is bootable\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1051
+#, c-format
+msgid "Warning: partition %s has size 0 and nonzero start\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1062
+#, fuzzy, c-format
+msgid "Warning: partition %s "
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/sfdisk.c:1063
+#, fuzzy, c-format
+msgid "is not contained in partition %s\n"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/sfdisk.c:1074
+#, c-format
+msgid "Warning: partitions %s "
+msgstr ""
+
+#: fdisk/sfdisk.c:1075
+#, c-format
+msgid "and %s overlap\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1086
+#, fuzzy, c-format
+msgid "Warning: partition %s contains part of "
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/sfdisk.c:1087
+#, fuzzy, c-format
+msgid "the partition table (sector %lu),\n"
+msgstr "Table de partition écrite sur disque"
+
+#: fdisk/sfdisk.c:1088
+msgid "and will destroy it when filled\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1097
+#, c-format
+msgid "Warning: partition %s starts at sector 0\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1101
+#, fuzzy, c-format
+msgid "Warning: partition %s extends past end of disk\n"
+msgstr "Ecriture de la table de partition sur disque..."
+
+#: fdisk/sfdisk.c:1115
+msgid "Among the primary partitions, at most one can be extended\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1116
+msgid " (although this is not a problem under Linux)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1133
+#, c-format
+msgid "Warning: partition %s does not start at a cylinder boundary\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1139
+#, c-format
+msgid "Warning: partition %s does not end at a cylinder boundary\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1157
+msgid ""
+"Warning: more than one primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1164
+msgid ""
+"Warning: usually one can boot from primary partitions only\n"
+"LILO disregards the `bootable' flag.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1170
+msgid ""
+"Warning: no primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1187
+#, c-format
+msgid ""
+"partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1196
+#, c-format
+msgid "partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1199
+#, c-format
+msgid "partition %s ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1232 fdisk/sfdisk.c:1309
+#, c-format
+msgid "too many partitions - ignoring those past nr (%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1247
+#, fuzzy
+msgid "tree of partitions?\n"
+msgstr "Ne pas créér la partition"
+
+#: fdisk/sfdisk.c:1351
+msgid "detected Disk Manager - unable to handle that\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1358
+msgid "DM6 signature found - giving up\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1378
+msgid "strange..., an extended partition of size 0?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1385
+msgid "strange..., a BSD partition of size 0?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1417
+#, c-format
+msgid " %s: unrecognized partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1429
+msgid "-n flag was given: Nothing changed\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1442
+msgid "Failed saving the old sectors - aborting\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1447
+#, fuzzy, c-format
+msgid "Failed writing the partition on %s\n"
+msgstr "Table de partition non écrite sur le disque"
+
+#: fdisk/sfdisk.c:1524
+msgid "long or incomplete input line - quitting\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1560
+#, c-format
+msgid "input error: `=' expected after %s field\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1567
+#, c-format
+msgid "input error: unexpected character %c after %s field\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1573
+#, c-format
+msgid "unrecognized input: %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1605
+msgid "number too big\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1609
+msgid "trailing junk after number\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1725
+#, fuzzy
+msgid "no room for partition descriptor\n"
+msgstr "Ne pas créér la partition"
+
+#: fdisk/sfdisk.c:1758
+msgid "cannot build surrounding extended partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1809
+#, fuzzy
+msgid "too many input fields\n"
+msgstr "Trops d'arguments.\n"
+
+#. no free blocks left - don't read any further
+#: fdisk/sfdisk.c:1843
+msgid "No room for more\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1862
+#, fuzzy
+msgid "Illegal type\n"
+msgstr "Touche non valide"
+
+#: fdisk/sfdisk.c:1894
+#, c-format
+msgid "Warning: exceeds max allowable size (%lu)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1899
+#, fuzzy
+msgid "Warning: empty partition\n"
+msgstr "Créér une nouvelle partition primaire"
+
+#: fdisk/sfdisk.c:1913
+#, c-format
+msgid "Warning: bad partition start (earliest %lu)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1926
+msgid "unrecognized bootable flag - choose - or *\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1943 fdisk/sfdisk.c:1956
+msgid "partial c,h,s specification?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1967
+#, fuzzy
+msgid "Extended partition not where expected\n"
+msgstr "Créér une nouvelle partition"
+
+#: fdisk/sfdisk.c:1999
+msgid "bad input\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2021
+#, fuzzy
+msgid "too many partitions\n"
+msgstr "Trops d'arguments.\n"
+
+#: fdisk/sfdisk.c:2054
+msgid ""
+"Input in the following format; absent fields get a default value.\n"
+"<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+"Usually you only need to specify <start> and <size> (and perhaps <type>).\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2074
+msgid "version"
+msgstr ""
+
+#: fdisk/sfdisk.c:2080
+#, fuzzy, c-format
+msgid "Usage: %s [options] device ...\n"
+msgstr "usage: %s [ -n ] périphérique\n"
+
+#: fdisk/sfdisk.c:2081
+msgid "device: something like /dev/hda or /dev/sda"
+msgstr ""
+
+#: fdisk/sfdisk.c:2082
+msgid "useful options:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2083
+msgid " -s [or --show-size]: list size of a partition"
+msgstr ""
+
+#: fdisk/sfdisk.c:2084
+msgid " -c [or --id]: print or change partition Id"
+msgstr ""
+
+#: fdisk/sfdisk.c:2085
+msgid " -l [or --list]: list partitions of each device"
+msgstr ""
+
+#: fdisk/sfdisk.c:2086
+msgid " -d [or --dump]: idem, but in a format suitable for later input"
+msgstr ""
+
+#: fdisk/sfdisk.c:2087
+msgid " -i [or --increment]: number cylinders etc. from 1 instead of from 0"
+msgstr ""
+
+#: fdisk/sfdisk.c:2088
+msgid ""
+" -uS, -uB, -uC, -uM: accept/report in units of "
+"sectors/blocks/cylinders/MB"
+msgstr ""
+
+#: fdisk/sfdisk.c:2089
+msgid " -T [or --list-types]:list the known partition types"
+msgstr ""
+
+#: fdisk/sfdisk.c:2090
+msgid " -D [or --DOS]: for DOS-compatibility: waste a little space"
+msgstr ""
+
+#: fdisk/sfdisk.c:2091
+msgid " -R [or --re-read]: make kernel reread partition table"
+msgstr ""
+
+#: fdisk/sfdisk.c:2092
+#, fuzzy
+msgid " -N# : change only the partition with number #"
+msgstr ""
+" u Changement de l'unité utilisée pour la taille des partitions"
+
+#: fdisk/sfdisk.c:2093
+#, fuzzy
+msgid " -n : do not actually write to disk"
+msgstr ""
+" r - Données brutes (Exactement ce que cfdisk écrirait sur le "
+"disque)"
+
+#: fdisk/sfdisk.c:2094
+#, fuzzy
+msgid ""
+" -O file : save the sectors that will be overwritten to file"
+msgstr ""
+" r - Données brutes (Exactement ce que cfdisk écrirait sur le "
+"disque)"
+
+#: fdisk/sfdisk.c:2095
+#, fuzzy
+msgid " -I file : restore these sectors again"
+msgstr " s - Table triée par secteurs"
+
+#: fdisk/sfdisk.c:2096
+msgid " -v [or --version]: print version"
+msgstr ""
+
+#: fdisk/sfdisk.c:2097
+#, fuzzy
+msgid " -? [or --help]: print this message"
+msgstr " h Afficher cet écran"
+
+#: fdisk/sfdisk.c:2098
+msgid "dangerous options:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2099
+msgid " -g [or --show-geometry]: print the kernel's idea of the geometry"
+msgstr ""
+
+#: fdisk/sfdisk.c:2100
+msgid ""
+" -x [or --show-extended]: also list extended partitions on output\n"
+" or expect descriptors for them on input"
+msgstr ""
+
+#: fdisk/sfdisk.c:2102
+msgid ""
+" -L [or --Linux]: do not complain about things irrelevant for Linux"
+msgstr ""
+
+#: fdisk/sfdisk.c:2103
+msgid " -q [or --quiet]: suppress warning messages"
+msgstr ""
+
+#: fdisk/sfdisk.c:2104
+msgid " You can override the detected geometry using:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2105
+#, fuzzy
+msgid " -C# [or --cylinders #]:set the number of cylinders to use"
+msgstr "Entrez le nombre de cylindres: "
+
+#: fdisk/sfdisk.c:2106
+msgid " -H# [or --heads #]: set the number of heads to use"
+msgstr ""
+
+#: fdisk/sfdisk.c:2107
+msgid " -S# [or --sectors #]: set the number of sectors to use"
+msgstr ""
+
+#: fdisk/sfdisk.c:2108
+msgid "You can disable all consistency checking with:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2109
+msgid " -f [or --force]: do what I say, even if it is stupid"
+msgstr ""
+
+#: fdisk/sfdisk.c:2115
+msgid "Usage:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2116
+#, c-format
+msgid "%s device\t\t list active partitions on device\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2117
+#, c-format
+msgid "%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2118
+#, c-format
+msgid "%s -An device\t activate partition n, inactivate the other ones\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2237
+msgid "no command?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2360
+#, fuzzy, c-format
+msgid "total: %d blocks\n"
+msgstr "%ld blocs\n"
+
+#: fdisk/sfdisk.c:2397
+msgid "usage: sfdisk --print-id device partition-number\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2399
+msgid "usage: sfdisk --change-id device partition-number Id\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2401
+msgid "usage: sfdisk --id device partition-number [Id]\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2408
+msgid "can specify only one device (except with -l or -s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2433
+#, fuzzy, c-format
+msgid "cannot open %s %s\n"
+msgstr "Impossible d'ouvrir le disque dur"
+
+#: fdisk/sfdisk.c:2433
+msgid "read-write"
+msgstr ""
+
+#: fdisk/sfdisk.c:2433
+msgid "for reading"
+msgstr ""
+
+#: fdisk/sfdisk.c:2458
+#, c-format
+msgid "%s: OK\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2475
+#, c-format
+msgid "%s: %d cylinders, %d heads, %d sectors/track\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2478
+#, c-format
+msgid "%s: unknown geometry\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2493
+#, c-format
+msgid "BLKGETSIZE ioctl failed for %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2570
+#, c-format
+msgid "bad active byte: 0x%x instead of 0x80\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2587 fdisk/sfdisk.c:2640 fdisk/sfdisk.c:2670
+#, fuzzy
+msgid ""
+"Done\n"
+"\n"
+msgstr "Terminé"
+
+#: fdisk/sfdisk.c:2596
+#, c-format
+msgid ""
+"You have %d active primary partitions. This does not matter for LILO,\n"
+"but the DOS MBR will only boot a disk with 1 active partition.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2610
+#, c-format
+msgid "partition %s has id %x and is not hidden\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2666
+#, c-format
+msgid "Bad Id %x\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2681
+msgid "This disk is currently in use.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2698
+#, c-format
+msgid "Fatal error: cannot find %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2701
+#, fuzzy, c-format
+msgid "Warning: %s is not a block device\n"
+msgstr "%s: n'est pas un lecteur de disquettes\n"
+
+#: fdisk/sfdisk.c:2706
+msgid "Checking that no-one is using this disk right now ...\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2708
+msgid ""
+"\n"
+"This disk is currently in use - repartitioning is probably a bad idea.Umount "
+"all file systems, and swapoff all swap partitions on this disk.Use the "
+"--no-reread flag to suppress this check.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2712
+msgid "Use the --force flag to overrule all checks.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2716
+msgid "OK"
+msgstr ""
+
+#: fdisk/sfdisk.c:2725
+msgid "Old situation:\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2729
+#, c-format
+msgid "Partition %d does not exist, cannot change it\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2737
+msgid "New situation:\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2742
+msgid ""
+"I don't like these partitions - nothing changed.\n"
+"(If you really want this, use the --force option.)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2745
+msgid "I don't like this - probably you should answer No\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2750
+msgid "Are you satisfied with this? [ynq] "
+msgstr ""
+
+#: fdisk/sfdisk.c:2752
+msgid "Do you want to write this to disk? [ynq] "
+msgstr ""
+
+#: fdisk/sfdisk.c:2757
+msgid ""
+"\n"
+"sfdisk: premature end of input\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2759
+msgid "Quitting - nothing changed\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2765
+msgid "Please answer one of y,n,q\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2773
+#, fuzzy
+msgid ""
+"Successfully wrote the new partition table\n"
+"\n"
+msgstr "Seulement imprimer la table de partitions"
+
+#: fdisk/sfdisk.c:2779
+msgid ""
+"If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
+"to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
+"(See fdisk(8).)\n"
+msgstr ""
+
+#: games/banner.c:1051
+msgid "usage: banner [-w width]\n"
+msgstr ""
+
+#: games/banner.c:1071
+msgid "Message: "
+msgstr ""
+
+#: games/banner.c:1105
+#, c-format
+msgid "The character '%c' is not in my character set"
+msgstr ""
+
+#: games/banner.c:1113
+#, c-format
+msgid "Message '%s' is OK\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:229
+msgid "Try `getopt --help' for more information.\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:295
+msgid "empty long option after -l or --long argument"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:315
+msgid "unknown shell after -s or --shell argument"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:320
+msgid "Usage: getopt optstring parameters\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:321
+msgid " getopt [options] [--] optstring parameters\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:322
+msgid " getopt [options] -o|--options optstring [options] [--]\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:323
+#, fuzzy
+msgid " parameters\n"
+msgstr " Premier Dernier\n"
+
+#: getopt-1.0.3b/getopt.c:324
+msgid ""
+" -a, --alternative Allow long options starting with single -\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:325
+msgid " -h, --help This small usage guide\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:326
+msgid " -l, --longoptions=longopts Long options to be recognized\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:327
+msgid ""
+" -n, --name=progname The name under which errors are reported\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:328
+msgid " -o, --options=optstring Short options to be recognized\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:329
+#, fuzzy
+msgid " -q, --quiet Disable error reporting by getopt(3)\n"
+msgstr " s - Table triée par secteurs"
+
+#: getopt-1.0.3b/getopt.c:330
+msgid " -Q, --quiet-output No normal output\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:331
+msgid " -s, --shell=shell Set shell quoting conventions\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:332
+msgid " -T, --test Test for getopt(1) version\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:333
+msgid " -V, --version Output version information\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:387 getopt-1.0.3b/getopt.c:445
+msgid "missing optstring argument"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:433
+msgid "getopt (enhanced) 1.0.3\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:439
+msgid "internal error, contact the author."
+msgstr ""
+
+#: login-utils/agetty.c:300
+msgid "calling open_tty\n"
+msgstr ""
+
+#. Initialize the termio settings (raw mode, eight-bit, blocking i/o).
+#: login-utils/agetty.c:313
+msgid "calling termio_init\n"
+msgstr ""
+
+#: login-utils/agetty.c:318
+msgid "writing init string\n"
+msgstr ""
+
+#. Optionally detect the baud rate from the modem status message.
+#: login-utils/agetty.c:328
+msgid "before autobaud\n"
+msgstr ""
+
+#: login-utils/agetty.c:340
+msgid "waiting for cr-lf\n"
+msgstr ""
+
+#: login-utils/agetty.c:344
+#, c-format
+msgid "read %c\n"
+msgstr ""
+
+#. Read the login name.
+#: login-utils/agetty.c:353
+msgid "reading login name\n"
+msgstr ""
+
+#: login-utils/agetty.c:374
+#, c-format
+msgid "%s: can't exec %s: %m"
+msgstr ""
+
+#: login-utils/agetty.c:394
+msgid "can't malloc initstring"
+msgstr ""
+
+#: login-utils/agetty.c:456
+#, c-format
+msgid "bad timeout value: %s"
+msgstr ""
+
+#: login-utils/agetty.c:465
+msgid "after getopt loop\n"
+msgstr ""
+
+#: login-utils/agetty.c:483
+msgid "exiting parseargs\n"
+msgstr ""
+
+#: login-utils/agetty.c:496
+msgid "entered parse_speeds\n"
+msgstr ""
+
+#: login-utils/agetty.c:499
+#, c-format
+msgid "bad speed: %s"
+msgstr ""
+
+#: login-utils/agetty.c:501
+msgid "too many alternate speeds"
+msgstr ""
+
+#: login-utils/agetty.c:503
+msgid "exiting parsespeeds\n"
+msgstr ""
+
+#: login-utils/agetty.c:576
+#, c-format
+msgid "%s: open for update: %m"
+msgstr ""
+
+#: login-utils/agetty.c:592
+#, c-format
+msgid "%s: no utmp entry"
+msgstr ""
+
+#: login-utils/agetty.c:621
+#, c-format
+msgid "/dev: chdir() failed: %m"
+msgstr ""
+
+#: login-utils/agetty.c:625
+#, c-format
+msgid "/dev/%s: not a character device"
+msgstr ""
+
+#. ignore close(2) errors
+#: login-utils/agetty.c:632
+msgid "open(2)\n"
+msgstr ""
+
+#: login-utils/agetty.c:634
+#, c-format
+msgid "/dev/%s: cannot open as standard input: %m"
+msgstr ""
+
+#: login-utils/agetty.c:644
+#, c-format
+msgid "%s: not open for read/write"
+msgstr ""
+
+#. Set up standard output and standard error file descriptors.
+#: login-utils/agetty.c:648
+msgid "duping\n"
+msgstr ""
+
+#. set up stdout and stderr
+#: login-utils/agetty.c:650
+#, c-format
+msgid "%s: dup problem: %m"
+msgstr ""
+
+#: login-utils/agetty.c:712
+msgid "term_io 2\n"
+msgstr ""
+
+#: login-utils/agetty.c:894
+msgid "user"
+msgstr ""
+
+#: login-utils/agetty.c:894
+msgid "users"
+msgstr ""
+
+#: login-utils/agetty.c:982
+#, c-format
+msgid "%s: read: %m"
+msgstr ""
+
+#: login-utils/agetty.c:1028
+#, c-format
+msgid "%s: input overrun"
+msgstr ""
+
+#: login-utils/agetty.c:1152
+#, c-format
+msgid ""
+"Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] "
+"baud_rate,... line [termtype]\n"
+"or\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line "
+"baud_rate,... [termtype]\n"
+msgstr ""
+
+#: login-utils/checktty.c:46
+#, c-format
+msgid "badlogin: %s\n"
+msgstr ""
+
+#: login-utils/checktty.c:52
+#, c-format
+msgid "sleepexit %d\n"
+msgstr ""
+
+#: login-utils/checktty.c:108 login-utils/checktty.c:130
+msgid "login: memory low, login may fail\n"
+msgstr ""
+
+#: login-utils/checktty.c:109
+msgid "can't malloc for ttyclass"
+msgstr ""
+
+#: login-utils/checktty.c:131
+msgid "can't malloc for grplist"
+msgstr ""
+
+#. there was a default rule, but user didn't match, reject!
+#: login-utils/checktty.c:424
+#, c-format
+msgid "Login on %s from %s denied by default.\n"
+msgstr ""
+
+#. if we get here, /etc/usertty exists, there's a line
+#. matching our username, but it doesn't contain the
+#. name of the tty where the user is trying to log in.
+#. So deny access!
+#: login-utils/checktty.c:435
+#, c-format
+msgid "Login on %s from %s denied.\n"
+msgstr ""
+
+#: login-utils/chfn.c:139 login-utils/chsh.c:118
+#, c-format
+msgid "%s: you (user %d) don't exist.\n"
+msgstr ""
+
+#: login-utils/chfn.c:146 login-utils/chsh.c:125
+#, c-format
+msgid "%s: user \"%s\" does not exist.\n"
+msgstr ""
+
+#: login-utils/chfn.c:151 login-utils/chsh.c:130
+#, c-format
+msgid "%s: can only change local entries; use yp%s instead.\n"
+msgstr ""
+
+#: login-utils/chfn.c:163
+#, c-format
+msgid "Changing finger information for %s.\n"
+msgstr ""
+
+#: login-utils/chfn.c:169 login-utils/chfn.c:173 login-utils/chfn.c:180
+#: login-utils/chfn.c:184 login-utils/chsh.c:154 login-utils/chsh.c:158
+#: login-utils/chsh.c:165 login-utils/chsh.c:169
+msgid "Password error."
+msgstr ""
+
+#: login-utils/chfn.c:193 login-utils/chsh.c:178 login-utils/login.c:650
+#: login-utils/newgrp.c:47 login-utils/simpleinit.c:219 mount/lomount.c:196
+#: mount/lomount.c:202 mount/losetup.c:115 mount/losetup.c:121
+msgid "Password: "
+msgstr ""
+
+#: login-utils/chfn.c:196 login-utils/chsh.c:181
+msgid "Incorrect password."
+msgstr ""
+
+#: login-utils/chfn.c:207
+msgid "Finger information not changed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:310
+#, c-format
+msgid "Usage: %s [ -f full-name ] [ -o office ] "
+msgstr ""
+
+#: login-utils/chfn.c:311
+msgid ""
+"[ -p office-phone ]\n"
+"\t[ -h home-phone ] "
+msgstr ""
+
+#: login-utils/chfn.c:312
+msgid "[ --help ] [ --version ]\n"
+msgstr ""
+
+#: login-utils/chfn.c:381 login-utils/chsh.c:294
+msgid ""
+"\n"
+"Aborted.\n"
+msgstr ""
+
+#: login-utils/chfn.c:414
+msgid "field is too long.\n"
+msgstr ""
+
+#: login-utils/chfn.c:422
+#, c-format
+msgid "'%c' is not allowed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:427
+msgid "Control characters are not allowed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:492
+msgid "Finger information *NOT* changed. Try again later.\n"
+msgstr ""
+
+#: login-utils/chfn.c:495
+msgid "Finger information changed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:509 login-utils/chsh.c:412 sys-utils/cytune.c:315
+msgid "malloc failed"
+msgstr ""
+
+#: login-utils/chsh.c:141
+#, c-format
+msgid "%s: Your shell is not in /etc/shells, shell change denied\n"
+msgstr ""
+
+#: login-utils/chsh.c:148
+#, c-format
+msgid "Changing shell for %s.\n"
+msgstr ""
+
+#: login-utils/chsh.c:189
+msgid "New shell"
+msgstr ""
+
+#: login-utils/chsh.c:196
+#, fuzzy
+msgid "Shell not changed.\n"
+msgstr "Le disque a été changé.\n"
+
+#: login-utils/chsh.c:203
+msgid "Shell *NOT* changed. Try again later.\n"
+msgstr ""
+
+#: login-utils/chsh.c:206
+#, fuzzy
+msgid "Shell changed.\n"
+msgstr "Le disque a été changé.\n"
+
+#: login-utils/chsh.c:274
+#, c-format
+msgid "Usage: %s [ -s shell ] "
+msgstr ""
+
+#: login-utils/chsh.c:275
+msgid "[ --list-shells ] [ --help ] [ --version ]\n"
+msgstr ""
+
+#: login-utils/chsh.c:276
+msgid " [ username ]\n"
+msgstr ""
+
+#: login-utils/chsh.c:320
+#, c-format
+msgid "%s: shell must be a full path name.\n"
+msgstr ""
+
+#: login-utils/chsh.c:324
+#, c-format
+msgid "%s: \"%s\" does not exist.\n"
+msgstr ""
+
+#: login-utils/chsh.c:328
+#, c-format
+msgid "%s: \"%s\" is not executable.\n"
+msgstr ""
+
+#: login-utils/chsh.c:335
+#, c-format
+msgid "%s: '%c' is not allowed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:339
+#, c-format
+msgid "%s: Control characters are not allowed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:346
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells\n"
+msgstr ""
+
+#: login-utils/chsh.c:348
+#, c-format
+msgid "%s: \"%s\" is not listed in /etc/shells.\n"
+msgstr ""
+
+#: login-utils/chsh.c:350
+#, c-format
+msgid "%s: use -l option to see list\n"
+msgstr ""
+
+#: login-utils/chsh.c:356
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells.\n"
+msgstr ""
+
+#: login-utils/chsh.c:357
+#, c-format
+msgid "Use %s -l to see list.\n"
+msgstr ""
+
+#: login-utils/chsh.c:378
+msgid "No known shells.\n"
+msgstr ""
+
+#: login-utils/cryptocard.c:70
+msgid "couldn't open /dev/urandom"
+msgstr ""
+
+#: login-utils/cryptocard.c:75
+msgid "couldn't read random data from /dev/urandom"
+msgstr ""
+
+#: login-utils/cryptocard.c:98
+#, c-format
+msgid "can't open %s for reading"
+msgstr ""
+
+#: login-utils/cryptocard.c:102
+#, c-format
+msgid "can't stat(%s)"
+msgstr ""
+
+#: login-utils/cryptocard.c:108
+#, c-format
+msgid "%s doesn't have the correct filemodes"
+msgstr ""
+
+#: login-utils/cryptocard.c:113
+#, c-format
+msgid "can't read data from %s"
+msgstr ""
+
+#: login-utils/islocal.c:36
+#, c-format
+msgid "Can't read %s, exiting."
+msgstr ""
+
+#: login-utils/last.c:138
+msgid "usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n"
+msgstr ""
+
+#: login-utils/last.c:215
+#, c-format
+msgid "last: %s: "
+msgstr ""
+
+#: login-utils/last.c:270
+msgid " still logged in"
+msgstr ""
+
+#: login-utils/last.c:291
+#, c-format
+msgid ""
+"\n"
+"wtmp begins %10.10s %5.5s \n"
+msgstr ""
+
+#: login-utils/last.c:352 login-utils/last.c:372 login-utils/last.c:427
+msgid "last: malloc failure.\n"
+msgstr ""
+
+#: login-utils/last.c:401
+msgid "last: gethostname"
+msgstr ""
+
+#: login-utils/last.c:454
+#, c-format
+msgid ""
+"\n"
+"interrupted %10.10s %5.5s \n"
+msgstr ""
+
+#: login-utils/login.c:349
+msgid "login: -h for super-user only.\n"
+msgstr ""
+
+#: login-utils/login.c:374
+msgid "usage: login [-fp] [username]\n"
+msgstr ""
+
+#: login-utils/login.c:476
+#, c-format
+msgid "login: PAM Failure, aborting: %s\n"
+msgstr ""
+
+#: login-utils/login.c:478
+#, c-format
+msgid "Couldn't initialize PAM: %s"
+msgstr ""
+
+#: login-utils/login.c:518
+#, c-format
+msgid "FAILED LOGIN %d FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:520
+msgid ""
+"Login incorrect\n"
+"\n"
+msgstr ""
+
+#: login-utils/login.c:529
+#, c-format
+msgid "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:533
+#, c-format
+msgid "FAILED LOGIN SESSION FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:536
+msgid ""
+"\n"
+"Login incorrect\n"
+msgstr ""
+
+#: login-utils/login.c:585
+#, fuzzy
+msgid "Illegal username"
+msgstr "Touche non valide"
+
+#: login-utils/login.c:628
+#, c-format
+msgid "%s login refused on this terminal.\n"
+msgstr ""
+
+#: login-utils/login.c:633
+#, c-format
+msgid "LOGIN %s REFUSED FROM %s ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:637
+#, c-format
+msgid "LOGIN %s REFUSED ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:689
+msgid "Login incorrect\n"
+msgstr ""
+
+#: login-utils/login.c:711
+msgid ""
+"Too many users logged on already.\n"
+"Try again later.\n"
+msgstr ""
+
+#: login-utils/login.c:715
+msgid "You have too many processes running.\n"
+msgstr ""
+
+#: login-utils/login.c:761
+msgid "Warning: no Kerberos tickets issued\n"
+msgstr ""
+
+#: login-utils/login.c:773
+msgid "Sorry -- your password has expired.\n"
+msgstr ""
+
+#: login-utils/login.c:779
+#, c-format
+msgid "Warning: your password expires on %s %d, %d\n"
+msgstr ""
+
+#: login-utils/login.c:787
+msgid "Sorry -- your account has expired.\n"
+msgstr ""
+
+#: login-utils/login.c:793
+#, c-format
+msgid "Warning: your account expires on %s %d, %d\n"
+msgstr ""
+
+#: login-utils/login.c:1012
+#, c-format
+msgid "DIALUP AT %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1019
+#, c-format
+msgid "ROOT LOGIN ON %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1022
+#, c-format
+msgid "ROOT LOGIN ON %s"
+msgstr ""
+
+#: login-utils/login.c:1025
+#, c-format
+msgid "LOGIN ON %s BY %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1028
+#, c-format
+msgid "LOGIN ON %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1039
+#, c-format
+msgid "You have %smail.\n"
+msgstr ""
+
+#: login-utils/login.c:1040
+msgid "new "
+msgstr ""
+
+#. error in fork()
+#: login-utils/login.c:1057
+#, c-format
+msgid "login: failure forking: %s"
+msgstr ""
+
+#: login-utils/login.c:1072
+msgid "setuid() failed"
+msgstr ""
+
+#: login-utils/login.c:1078
+#, c-format
+msgid "No directory %s!\n"
+msgstr ""
+
+#: login-utils/login.c:1082
+msgid "Logging in with home = \"/\".\n"
+msgstr ""
+
+#: login-utils/login.c:1090
+msgid "login: no memory for shell script.\n"
+msgstr ""
+
+#: login-utils/login.c:1116
+#, c-format
+msgid "login: couldn't exec shell script: %s.\n"
+msgstr ""
+
+#: login-utils/login.c:1119
+#, c-format
+msgid "login: no shell: %s.\n"
+msgstr ""
+
+#: login-utils/login.c:1135
+#, c-format
+msgid ""
+"\n"
+"%s login: "
+msgstr ""
+
+#: login-utils/login.c:1146
+msgid "login name much too long.\n"
+msgstr ""
+
+#: login-utils/login.c:1147
+msgid "NAME too long"
+msgstr ""
+
+#: login-utils/login.c:1154
+msgid "login names may not start with '-'.\n"
+msgstr ""
+
+#: login-utils/login.c:1164
+msgid "too many bare linefeeds.\n"
+msgstr ""
+
+#: login-utils/login.c:1165
+msgid "EXCESSIVE linefeeds"
+msgstr ""
+
+#: login-utils/login.c:1176
+#, c-format
+msgid "Login timed out after %d seconds\n"
+msgstr ""
+
+#: login-utils/login.c:1276
+#, c-format
+msgid "Last login: %.*s "
+msgstr ""
+
+#: login-utils/login.c:1280
+#, c-format
+msgid "from %.*s\n"
+msgstr ""
+
+#: login-utils/login.c:1283
+#, c-format
+msgid "on %.*s\n"
+msgstr ""
+
+#: login-utils/login.c:1306
+#, c-format
+msgid "LOGIN FAILURE FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1309
+#, c-format
+msgid "LOGIN FAILURE ON %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1313
+#, c-format
+msgid "%d LOGIN FAILURES FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1316
+#, c-format
+msgid "%d LOGIN FAILURES ON %s, %s"
+msgstr ""
+
+#: login-utils/mesg.c:89
+msgid "is y\n"
+msgstr ""
+
+#: login-utils/mesg.c:92
+msgid "is n\n"
+msgstr ""
+
+#: login-utils/mesg.c:112
+msgid "usage: mesg [y | n]\n"
+msgstr ""
+
+#: login-utils/newgrp.c:67
+msgid "newgrp: Who are you?"
+msgstr ""
+
+#: login-utils/newgrp.c:75 login-utils/newgrp.c:85
+msgid "newgrp: setgid"
+msgstr ""
+
+#: login-utils/newgrp.c:80
+msgid "newgrp: No such group."
+msgstr ""
+
+#: login-utils/newgrp.c:89
+msgid "newgrp: Permission denied"
+msgstr ""
+
+#: login-utils/newgrp.c:96
+msgid "newgrp: setuid"
+msgstr ""
+
+#: login-utils/newgrp.c:102
+msgid "No shell"
+msgstr ""
+
+#: login-utils/passwd.c:165
+msgid "The password must have at least 6 characters, try again.\n"
+msgstr ""
+
+#: login-utils/passwd.c:178
+msgid "The password must contain characters out of two of the following\n"
+msgstr ""
+
+#: login-utils/passwd.c:179
+msgid "classes: upper and lower case letters, digits and non alphanumeric\n"
+msgstr ""
+
+#: login-utils/passwd.c:180
+msgid "characters. See passwd(1) for more information.\n"
+msgstr ""
+
+#: login-utils/passwd.c:185
+msgid "You cannot reuse the old password.\n"
+msgstr ""
+
+#: login-utils/passwd.c:190
+msgid "Please don't use something like your username as password!\n"
+msgstr ""
+
+#: login-utils/passwd.c:201 login-utils/passwd.c:208
+msgid "Please don't use something like your realname as password!\n"
+msgstr ""
+
+#: login-utils/passwd.c:225
+msgid "Usage: passwd [username [password]]\n"
+msgstr ""
+
+#: login-utils/passwd.c:226
+msgid "Only root may use the one and two argument forms.\n"
+msgstr ""
+
+#: login-utils/passwd.c:282
+msgid "Usage: passwd [-foqsvV] [user [password]]\n"
+msgstr ""
+
+#: login-utils/passwd.c:302
+#, c-format
+msgid "Can't exec %s: %s\n"
+msgstr ""
+
+#: login-utils/passwd.c:313
+msgid "Cannot find login name"
+msgstr ""
+
+#: login-utils/passwd.c:320 login-utils/passwd.c:327
+msgid "Only root can change the password for others.\n"
+msgstr ""
+
+#: login-utils/passwd.c:335
+msgid "Too many arguments.\n"
+msgstr "Trops d'arguments.\n"
+
+#: login-utils/passwd.c:340
+#, c-format
+msgid "Can't find username anywhere. Is `%s' really a user?"
+msgstr ""
+"Impossible de trouver ce nom d'utilisateur. Es ce que `%s' est réélement un "
+"utilisateur?"
+
+#: login-utils/passwd.c:344
+msgid "Sorry, I can only change local passwords. Use yppasswd instead."
+msgstr ""
+"Désolé, je peux seulement changer les mots de passe locaux. Utilisez "
+"yppasswd ŕ la place."
+
+#: login-utils/passwd.c:350
+msgid "UID and username does not match, imposter!"
+msgstr "UID et nom d'utilisaeur ne correspondent pas, imposteur!"
+
+#: login-utils/passwd.c:355
+#, c-format
+msgid "Changing password for %s\n"
+msgstr "Changement du mot de passe pour %s\n"
+
+#: login-utils/passwd.c:359
+msgid "Enter old password: "
+msgstr "Donnez l'ancien mot de passe: "
+
+#: login-utils/passwd.c:361
+msgid "Illegal password, imposter."
+msgstr "Mot de passe invalide, imposteur."
+
+#: login-utils/passwd.c:373
+msgid "Enter new password: "
+msgstr "Donnez le nouveau mot de passe: "
+
+#: login-utils/passwd.c:375
+msgid "Password not changed."
+msgstr "Mot de passe inchangé."
+
+#: login-utils/passwd.c:385
+msgid "Re-type new password: "
+msgstr "Redonnez le nouveau mot de passe: "
+
+#: login-utils/passwd.c:388
+msgid "You misspelled it. Password not changed."
+msgstr "Vous avez fait une faute de frappe. Mot de passe inchangé."
+
+#: login-utils/passwd.c:403
+#, c-format
+msgid "password changed, user %s"
+msgstr "mot de passe changé pour l'utilisateur %s"
+
+#: login-utils/passwd.c:406
+msgid "ROOT PASSWORD CHANGED"
+msgstr "MOT DE PASSE DE ROOT CHANGÉ"
+
+#: login-utils/passwd.c:408
+#, c-format
+msgid "password changed by root, user %s"
+msgstr ""
+
+#: login-utils/passwd.c:415
+msgid "calling setpwnam to set password.\n"
+msgstr ""
+
+#: login-utils/passwd.c:419
+msgid "Password *NOT* changed. Try again later.\n"
+msgstr "Mot de passe *NON* changé. Essayez ŕ nouveau plus tard.\n"
+
+#: login-utils/passwd.c:425
+msgid "Password changed.\n"
+msgstr "Mot de passe changé.\n"
+
+#: login-utils/shutdown.c:85
+msgid "Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n"
+msgstr "Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n"
+
+#: login-utils/shutdown.c:103
+msgid "Shutdown process aborted"
+msgstr ""
+
+#: login-utils/shutdown.c:125
+#, c-format
+msgid "%s: Only root can shut a system down.\n"
+msgstr "%s: Seulement le super-utilisateur peux éteindre le systčme.\n"
+
+#: login-utils/shutdown.c:219
+msgid "That must be tomorrow, "
+msgstr ""
+
+#: login-utils/shutdown.c:220
+msgid "can't you wait till then?\n"
+msgstr ""
+
+#: login-utils/shutdown.c:271
+msgid "for maintenance; bounce, bounce"
+msgstr ""
+
+#: login-utils/shutdown.c:275
+#, c-format
+msgid "timeout = %d, quiet = %d, reboot = %d\n"
+msgstr ""
+
+#: login-utils/shutdown.c:300
+msgid "The system is being shut down within 5 minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:304
+msgid "Login is therefore prohibited."
+msgstr ""
+
+#: login-utils/shutdown.c:325
+#, c-format
+msgid "%s by %s: %s"
+msgstr ""
+
+#: login-utils/shutdown.c:326
+msgid "rebooted"
+msgstr ""
+
+#: login-utils/shutdown.c:326
+msgid "halted"
+msgstr ""
+
+#. RB_AUTOBOOT
+#: login-utils/shutdown.c:369
+msgid ""
+"\n"
+"Why am I still alive after reboot?"
+msgstr ""
+"\n"
+"Pourquoi suis-je encore vivant aprčs le redémarrage?"
+
+#: login-utils/shutdown.c:371
+msgid ""
+"\n"
+"Now you can turn off the power..."
+msgstr ""
+"\n"
+"Maintenant vous pouvez éteindre la machine..."
+
+#: login-utils/shutdown.c:386
+msgid "Calling kernel power-off facility...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:389
+#, c-format
+msgid "Error powering off\t%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:397
+#, c-format
+msgid "Executing the program \"%s\" ...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:400
+#, c-format
+msgid "Error executing\t%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:423
+#, c-format
+msgid "URGENT: broadcast message from %s:"
+msgstr ""
+
+#: login-utils/shutdown.c:429
+msgid "System going down IMMEDIATELY!\n"
+msgstr "Arręt IMMÉDIAT du systčme!\n"
+
+#: login-utils/shutdown.c:432
+#, c-format
+msgid "System going down in %d hour%s %d minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:435
+#, c-format
+msgid "System going down in %d minute%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:441
+#, c-format
+msgid "\t... %s ...\n"
+msgstr "\t... %s ...\n"
+
+#: login-utils/shutdown.c:498
+msgid "Cannot fork for swapoff. Shrug!"
+msgstr ""
+
+#: login-utils/shutdown.c:506
+msgid "Cannot exec swapoff, "
+msgstr ""
+
+#: login-utils/shutdown.c:507
+msgid "hoping umount will do the trick."
+msgstr ""
+
+#: login-utils/shutdown.c:525
+msgid "Cannot fork for umount, trying manually."
+msgstr ""
+
+#: login-utils/shutdown.c:531
+msgid "Cannot exec "
+msgstr ""
+
+#: login-utils/shutdown.c:531
+msgid ", trying umount."
+msgstr ""
+
+#: login-utils/shutdown.c:533
+msgid "Cannot exec umount, giving up on umount."
+msgstr ""
+
+#: login-utils/shutdown.c:538
+msgid "Unmounting any remaining filesystems..."
+msgstr ""
+
+#: login-utils/shutdown.c:574
+#, c-format
+msgid "shutdown: Couldn't umount %s\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:79
+msgid "Booting to single user mode.\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:83
+msgid "exec of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:87
+msgid "fork of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:226
+msgid ""
+"\n"
+"Wrong password.\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:252
+msgid "exec rc failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:255
+msgid "open of rc file failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:261
+msgid "fork of rc shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:273
+msgid "fork failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:302 text-utils/more.c:1469
+msgid "exec failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:324
+msgid "cannot open inittab\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:362
+msgid "no TERM or cannot stat tty\n"
+msgstr ""
+
+#: login-utils/ttymsg.c:79
+msgid "too many iov's (change code in wall/ttymsg.c)"
+msgstr ""
+
+#. A slash is an attempt to break security...
+#: login-utils/ttymsg.c:83
+#, c-format
+msgid "'/' in \"%s\""
+msgstr ""
+
+#: login-utils/ttymsg.c:88
+msgid "excessively long line arg"
+msgstr ""
+
+#: login-utils/ttymsg.c:142
+msgid "cannot fork"
+msgstr ""
+
+#: login-utils/ttymsg.c:145
+#, c-format
+msgid "fork: %s"
+msgstr ""
+
+#: login-utils/ttymsg.c:172
+#, c-format
+msgid "%s: BAD ERROR"
+msgstr ""
+
+#: login-utils/vipw.c:147
+#, c-format
+msgid "%s: the %s file is busy.\n"
+msgstr ""
+
+#: login-utils/vipw.c:163
+#, c-format
+msgid "%s: the %s file is busy (%s present)\n"
+msgstr ""
+
+#: login-utils/vipw.c:168
+#, c-format
+msgid "%s: can't link %s: %s\n"
+msgstr ""
+
+#: login-utils/vipw.c:188
+#, c-format
+msgid "%s: can't unlock %s: %s (your changes are still in %s)\n"
+msgstr ""
+
+#: login-utils/vipw.c:212
+#, c-format
+msgid "%s: Cannot fork\n"
+msgstr ""
+
+#: login-utils/vipw.c:252
+#, fuzzy, c-format
+msgid "%s: %s unchanged\n"
+msgstr "Le disque a été changé.\n"
+
+#: login-utils/vipw.c:295
+#, c-format
+msgid "%s: no changes made\n"
+msgstr ""
+
+#: login-utils/wall.c:104
+msgid "usage: wall [file]\n"
+msgstr ""
+
+#: login-utils/wall.c:115
+#, c-format
+msgid "wall: cannot read %s.\n"
+msgstr ""
+
+#: login-utils/wall.c:132
+#, c-format
+msgid "wall: %s\n"
+msgstr ""
+
+#: login-utils/wall.c:154
+msgid "wall: can't open temporary file.\n"
+msgstr ""
+
+#: login-utils/wall.c:181
+#, c-format
+msgid "Broadcast Message from %s@%s"
+msgstr ""
+
+#: login-utils/wall.c:191
+#, c-format
+msgid "wall: can't read %s.\n"
+msgstr ""
+
+#: login-utils/wall.c:216
+msgid "wall: can't stat temporary file.\n"
+msgstr ""
+
+#: login-utils/wall.c:225
+msgid "wall: can't read temporary file.\n"
+msgstr ""
+
+#: misc-utils/cal.c:198
+msgid "illegal month value: use 1-12"
+msgstr ""
+
+#: misc-utils/cal.c:202
+msgid "illegal year value: use 1-9999"
+msgstr ""
+
+#: misc-utils/cal.c:498
+msgid "usage: cal [-mjy] [[month] year]\n"
+msgstr ""
+
+#: misc-utils/ddate.c:184
+#, c-format
+msgid "usage: %s [+format] [day month year]\n"
+msgstr ""
+
+#. handle St. Tib's Day
+#: misc-utils/ddate.c:230
+msgid "St. Tib's Day"
+msgstr ""
+
+#: misc-utils/kill.c:199
+#, c-format
+msgid "%s: unknown signal %s\n"
+msgstr ""
+
+#: misc-utils/kill.c:261
+#, c-format
+msgid "%s: can't find process \"%s\"\n"
+msgstr ""
+
+#: misc-utils/kill.c:303
+#, c-format
+msgid "%s: unknown signal %s; valid signals:\n"
+msgstr ""
+
+#: misc-utils/kill.c:343
+#, c-format
+msgid "usage: %s [ -s signal | -p ] [ -a ] pid ...\n"
+msgstr ""
+
+#: misc-utils/kill.c:344
+#, c-format
+msgid " %s -l [ signal ]\n"
+msgstr ""
+
+#: misc-utils/logger.c:135
+#, c-format
+msgid "logger: %s: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:232
+#, c-format
+msgid "logger: unknown facility name: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:244
+#, c-format
+msgid "logger: unknown priority name: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:271
+msgid "logger: [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n"
+msgstr ""
+
+#: misc-utils/look.c:170 misc-utils/setterm.c:1153 text-utils/more.c:1782
+#: text-utils/more.c:1793
+msgid "Out of memory"
+msgstr ""
+
+#: misc-utils/look.c:340
+msgid "usage: look [-dfa] [-t char] string [file]\n"
+msgstr ""
+
+#: misc-utils/look.c:365
+msgid "look: "
+msgstr ""
+
+#: misc-utils/mcookie.c:95 misc-utils/mcookie.c:120
+#, c-format
+msgid "Could not open %s\n"
+msgstr ""
+
+#: misc-utils/mcookie.c:103 misc-utils/mcookie.c:117
+#, c-format
+msgid "Got %d bytes from %s\n"
+msgstr ""
+
+#: misc-utils/namei.c:107
+#, c-format
+msgid "namei: unable to get current directory - %s\n"
+msgstr ""
+
+#: misc-utils/namei.c:118
+#, c-format
+msgid "namei: unable to chdir to %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:128
+msgid "usage: namei [-mx] pathname [pathname ...]\n"
+msgstr ""
+
+#: misc-utils/namei.c:157
+msgid "namei: could not chdir to root!\n"
+msgstr ""
+
+#: misc-utils/namei.c:164
+msgid "namei: could not stat root!\n"
+msgstr ""
+
+#: misc-utils/namei.c:219
+#, c-format
+msgid " ? could not chdir into %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:248
+#, c-format
+msgid " ? problems reading symlink %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:258
+msgid " *** EXCEEDED UNIX LIMIT OF SYMLINKS ***"
+msgstr ""
+
+#: misc-utils/namei.c:294
+#, c-format
+msgid "namei: unknown file type 0%06o on file %s\n"
+msgstr ""
+
+#: misc-utils/script.c:108
+msgid "usage: script [-a] [file]\n"
+msgstr ""
+
+#: misc-utils/script.c:128
+#, c-format
+msgid "Script started, file is %s\n"
+msgstr ""
+
+#: misc-utils/script.c:197
+#, c-format
+msgid "Script started on %s"
+msgstr ""
+
+#: misc-utils/script.c:263
+#, c-format
+msgid ""
+"\n"
+"Script done on %s"
+msgstr ""
+
+#: misc-utils/script.c:268
+#, c-format
+msgid "Script done, file is %s\n"
+msgstr ""
+
+#: misc-utils/script.c:280
+msgid "openpty failed\n"
+msgstr ""
+
+#: misc-utils/script.c:314
+msgid "Out of pty's\n"
+msgstr ""
+
+#. Print error message about arguments, and the command's syntax.
+#: misc-utils/setterm.c:745
+#, c-format
+msgid "%s: Argument error, usage\n"
+msgstr ""
+
+#: misc-utils/setterm.c:747
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:748
+msgid " [ -term terminal_name ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:749
+msgid " [ -reset ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:750
+msgid " [ -initialize ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:751
+msgid " [ -cursor [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:753
+msgid " [ -snow [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:754
+msgid " [ -softscroll [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:755
+msgid " [ -keyboard pc|olivetti|dutch|extended ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:757
+msgid " [ -repeat [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:758
+msgid " [ -appcursorkeys [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:759
+msgid " [ -linewrap [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:760
+msgid " [ -default ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:761
+msgid " [ -foreground black|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:762 misc-utils/setterm.c:764
+msgid "|red|magenta|yellow|white|default ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:763
+msgid " [ -background black|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:765
+msgid " [ -ulcolor black|grey|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:766 misc-utils/setterm.c:768 misc-utils/setterm.c:770
+#: misc-utils/setterm.c:772
+msgid "|red|magenta|yellow|white ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:767
+msgid " [ -ulcolor bright blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:769
+msgid " [ -hbcolor black|grey|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:771
+msgid " [ -hbcolor bright blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:774
+msgid " [ -standout [ attr ] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:776
+msgid " [ -inversescreen [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:777
+msgid " [ -bold [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:778
+msgid " [ -half-bright [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:779
+msgid " [ -blink [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:780
+msgid " [ -reverse [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:781
+msgid " [ -underline [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:782
+msgid " [ -store ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:783
+msgid " [ -clear [all|rest] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:784
+msgid " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr ""
+
+#: misc-utils/setterm.c:785
+msgid " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr ""
+
+#: misc-utils/setterm.c:786
+msgid " [ -regtabs [1-160] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:787
+msgid " [ -blank [0-60] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:788
+msgid " [ -dump [1-NR_CONSOLES] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:789
+msgid " [ -append [1-NR_CONSOLES] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:790
+msgid " [ -file dumpfilename ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:791
+msgid " [ -msg [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:792
+msgid " [ -msglevel [0-8] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:793
+msgid " [ -powersave [on|vsync|hsync|powerdown|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:794
+msgid " [ -powerdown [0-60] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:795
+msgid " [ -blength [0-2000] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:796
+msgid " [ -bfreq freqnumber ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:841
+msgid "keyboard.pc"
+msgstr ""
+
+#: misc-utils/setterm.c:844
+msgid "keyboard.olivetti"
+msgstr ""
+
+#: misc-utils/setterm.c:847
+msgid "keyboard.dutch"
+msgstr ""
+
+#: misc-utils/setterm.c:850
+msgid "keyboard.extended"
+msgstr ""
+
+#: misc-utils/setterm.c:884
+msgid "snow.on"
+msgstr ""
+
+#: misc-utils/setterm.c:886
+msgid "snow.off"
+msgstr ""
+
+#: misc-utils/setterm.c:892
+msgid "softscroll.on"
+msgstr ""
+
+#: misc-utils/setterm.c:894
+msgid "softscroll.off"
+msgstr ""
+
+#: misc-utils/setterm.c:1069
+msgid "cannot (un)set powersave mode\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1108 misc-utils/setterm.c:1116
+#, c-format
+msgid "klogctl error: %s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1157
+#, c-format
+msgid "Error reading %s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1172
+msgid "Error writing screendump\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1186
+#, c-format
+msgid "couldn't read %s, and cannot ioctl dump\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1251
+#, c-format
+msgid "%s: $TERM is not defined.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:119
+msgid "usage: tsort [ inputfile ]\n"
+msgstr ""
+
+#: misc-utils/tsort.c:156
+msgid "tsort: odd data count.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:321
+msgid "tsort: cycle in data.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:334
+msgid "tsort: internal error -- could not find cycle.\n"
+msgstr ""
+
+#: misc-utils/whereis.c:158
+msgid "whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n"
+msgstr ""
+
+#: misc-utils/write.c:101
+msgid "write: can't find your tty's name\n"
+msgstr ""
+
+#: misc-utils/write.c:112
+msgid "write: you have write permission turned off.\n"
+msgstr ""
+
+#: misc-utils/write.c:133
+#, c-format
+msgid "write: %s is not logged in on %s.\n"
+msgstr ""
+
+#: misc-utils/write.c:141
+#, c-format
+msgid "write: %s has messages disabled on %s\n"
+msgstr ""
+
+#: misc-utils/write.c:148
+msgid "usage: write user [tty]\n"
+msgstr ""
+
+#: misc-utils/write.c:247
+#, c-format
+msgid "write: %s is not logged in\n"
+msgstr ""
+
+#: misc-utils/write.c:256
+#, c-format
+msgid "write: %s has messages disabled\n"
+msgstr ""
+
+#: misc-utils/write.c:260
+#, c-format
+msgid "write: %s is logged in more than once; writing to %s\n"
+msgstr ""
+
+#: misc-utils/write.c:327
+#, c-format
+msgid "Message from %s@%s on %s at %s ..."
+msgstr ""
+
+#: mount/fstab.c:113
+#, c-format
+msgid "warning: error reading %s: %s"
+msgstr ""
+
+#: mount/fstab.c:140 mount/fstab.c:162
+#, c-format
+msgid "warning: can't open %s: %s"
+msgstr ""
+
+#: mount/fstab.c:144
+#, c-format
+msgid "mount: could not open %s - using %s instead\n"
+msgstr ""
+
+#. MOUNTLOCK_LINKTARGET does not exist (as a file)
+#. and we cannot create it. Read-only filesystem?
+#. Too many files open in the system? Filesystem full?
+#: mount/fstab.c:346
+#, c-format
+msgid "can't create lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:358
+#, c-format
+msgid "can't link lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:369
+#, c-format
+msgid "can't open lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:383
+#, c-format
+msgid "Can't lock lock file %s: %s\n"
+msgstr ""
+
+#: mount/fstab.c:392
+#, c-format
+msgid "can't lock lock file %s: %s"
+msgstr ""
+
+#: mount/fstab.c:394
+msgid "timed out"
+msgstr ""
+
+#: mount/fstab.c:438
+#, c-format
+msgid "cannot open %s (%s) - mtab not updated"
+msgstr ""
+
+#: mount/fstab.c:445
+#, c-format
+msgid "can't open %s (%s) - mtab not updated"
+msgstr ""
+
+#: mount/fstab.c:470
+msgid "mount: warning: cannot change mounted device with a remount\n"
+msgstr ""
+
+#: mount/fstab.c:475
+msgid "mount: warning: cannot change filesystem type with a remount\n"
+msgstr ""
+
+#: mount/fstab.c:482 mount/fstab.c:486
+#, c-format
+msgid "error writing %s: %s"
+msgstr ""
+
+#: mount/fstab.c:491
+#, c-format
+msgid "error changing mode of %s: %s\n"
+msgstr ""
+
+#: mount/fstab.c:496
+#, c-format
+msgid "can't rename %s to %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:75
+#, c-format
+msgid "loop: can't open device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:80
+#, c-format
+msgid "loop: can't get info on device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:85 mount/losetup.c:74
+#, c-format
+msgid "%s: [%04x]:%ld (%s) offset %d, %s encryption\n"
+msgstr ""
+
+#: mount/lomount.c:139
+msgid "mount: could not find any device /dev/loop#"
+msgstr ""
+
+#: mount/lomount.c:143
+msgid ""
+"mount: Could not find any loop device.\n"
+" Maybe /dev/loop# has a wrong major number?"
+msgstr ""
+
+#: mount/lomount.c:147
+#, c-format
+msgid ""
+"mount: Could not find any loop device, and, according to %s,\n"
+" this kernel does not know about the loop device.\n"
+" (If so, then recompile or `insmod loop.o'.)"
+msgstr ""
+
+#: mount/lomount.c:152
+msgid ""
+"mount: Could not find any loop device. Maybe this kernel does not know\n"
+" about the loop device (then recompile or `insmod loop.o'), or\n"
+" maybe /dev/loop# has the wrong major number?"
+msgstr ""
+
+#: mount/lomount.c:156
+msgid "mount: could not find any free loop device"
+msgstr ""
+
+#: mount/lomount.c:187 mount/losetup.c:106
+#, c-format
+msgid "Unsupported encryption type %s\n"
+msgstr ""
+
+#: mount/lomount.c:206 mount/losetup.c:125
+msgid "Init (up to 16 hex digits): "
+msgstr ""
+
+#: mount/lomount.c:213 mount/losetup.c:132
+#, c-format
+msgid "Non-hex digit '%c'.\n"
+msgstr ""
+
+#: mount/lomount.c:219 mount/losetup.c:138
+#, c-format
+msgid "Don't know how to get key for encryption system %d\n"
+msgstr ""
+
+#: mount/lomount.c:235
+#, c-format
+msgid "set_loop(%s,%s,%d): success\n"
+msgstr ""
+
+#: mount/lomount.c:245
+#, c-format
+msgid "loop: can't delete device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:255
+#, c-format
+msgid "del_loop(%s): success\n"
+msgstr ""
+
+#: mount/lomount.c:263
+msgid "This mount was compiled without loop support. Please recompile.\n"
+msgstr ""
+
+#: mount/losetup.c:70
+msgid "Cannot get loop info"
+msgstr ""
+
+#: mount/losetup.c:174
+#, c-format
+msgid ""
+"usage:\n"
+" %s loop_device # give info\n"
+" %s -d loop_device # delete\n"
+" %s [ -e encryption ] [ -o offset ] loop_device file # setup\n"
+msgstr ""
+
+#: mount/losetup.c:231
+msgid "No loop support was available at compile time. Please recompile.\n"
+msgstr ""
+
+#: mount/mntent.c:165
+#, c-format
+msgid "[mntent]: warning: no final newline at the end of %s\n"
+msgstr ""
+
+#: mount/mntent.c:214
+#, c-format
+msgid "[mntent]: line %d in %s is bad%s\n"
+msgstr ""
+
+#: mount/mntent.c:217
+msgid "; rest of file ignored"
+msgstr ""
+
+#: mount/mount.c:319
+#, c-format
+msgid "mount: according to mtab, %s is already mounted on %s"
+msgstr ""
+
+#: mount/mount.c:322
+#, c-format
+msgid "mount: according to mtab, %s is mounted on %s"
+msgstr ""
+
+#: mount/mount.c:342
+#, c-format
+msgid "mount: can't open %s for writing: %s"
+msgstr ""
+
+#: mount/mount.c:355 mount/mount.c:597
+#, c-format
+msgid "mount: error writing %s: %s"
+msgstr ""
+
+#: mount/mount.c:360
+#, c-format
+msgid "mount: error changing mode of %s: %s"
+msgstr ""
+
+#: mount/mount.c:434
+msgid "mount failed"
+msgstr ""
+
+#: mount/mount.c:436
+#, c-format
+msgid "mount: only root can mount %s on %s"
+msgstr ""
+
+#: mount/mount.c:461
+msgid "mount: loop device specified twice"
+msgstr ""
+
+#: mount/mount.c:467
+msgid "mount: type specified twice"
+msgstr ""
+
+#: mount/mount.c:479
+msgid "mount: skipping the setup of a loop device\n"
+msgstr ""
+
+#: mount/mount.c:488
+#, c-format
+msgid "mount: going to use the loop device %s\n"
+msgstr ""
+
+#: mount/mount.c:492
+msgid "mount: failed setting up loop device\n"
+msgstr ""
+
+#: mount/mount.c:496
+msgid "mount: setup loop device successfully\n"
+msgstr ""
+
+#: mount/mount.c:509
+msgid "mount: this version was compiled without support for the type `nfs'"
+msgstr ""
+
+#: mount/mount.c:557 mount/mount.c:969
+#, c-format
+msgid "mount: cannot fork: %s"
+msgstr ""
+
+#: mount/mount.c:593
+#, c-format
+msgid "mount: can't open %s: %s"
+msgstr ""
+
+#: mount/mount.c:619
+#, fuzzy
+msgid "mount: you must specify the filesystem type"
+msgstr " t Changer le type de systčme de fichiers"
+
+#: mount/mount.c:626 mount/mount.c:660
+#, c-format
+msgid "mount: mount point %s is not a directory"
+msgstr ""
+
+#: mount/mount.c:628
+msgid "mount: permission denied"
+msgstr ""
+
+#: mount/mount.c:630
+msgid "mount: must be superuser to use mount"
+msgstr ""
+
+#. heuristic: if /proc/version exists, then probably proc is mounted
+#. proc mounted?
+#: mount/mount.c:634 mount/mount.c:638
+#, c-format
+msgid "mount: %s is busy"
+msgstr ""
+
+#. no
+#. yes, don't mention it
+#: mount/mount.c:640
+msgid "mount: proc already mounted"
+msgstr ""
+
+#: mount/mount.c:642
+#, c-format
+msgid "mount: %s already mounted or %s busy"
+msgstr ""
+
+#: mount/mount.c:648
+#, c-format
+msgid "mount: mount point %s does not exist"
+msgstr ""
+
+#: mount/mount.c:650
+#, c-format
+msgid "mount: mount point %s is a symbolic link to nowhere"
+msgstr ""
+
+#: mount/mount.c:653
+#, c-format
+msgid "mount: special device %s does not exist"
+msgstr ""
+
+#: mount/mount.c:666
+#, c-format
+msgid "mount: %s not mounted already, or bad option"
+msgstr ""
+
+#: mount/mount.c:668
+#, c-format
+msgid ""
+"mount: wrong fs type, bad option, bad superblock on %s,\n"
+" or too many mounted file systems"
+msgstr ""
+
+#: mount/mount.c:683
+msgid "mount table full"
+msgstr ""
+
+#: mount/mount.c:685
+#, c-format
+msgid "mount: %s: can't read superblock"
+msgstr ""
+
+#: mount/mount.c:688
+#, c-format
+msgid "mount: %s has wrong major or minor number"
+msgstr ""
+
+#: mount/mount.c:693
+#, c-format
+msgid "mount: fs type %s not supported by kernel"
+msgstr ""
+
+#: mount/mount.c:705
+#, c-format
+msgid "mount: probably you meant %s"
+msgstr ""
+
+#: mount/mount.c:707
+msgid "mount: maybe you meant iso9660 ?"
+msgstr ""
+
+#: mount/mount.c:710
+#, c-format
+msgid "mount: %s has wrong device number or fs type %s not supported"
+msgstr ""
+
+#. strange ...
+#: mount/mount.c:715
+#, c-format
+msgid "mount: %s is not a block device, and stat fails?"
+msgstr ""
+
+#: mount/mount.c:717
+#, c-format
+msgid ""
+"mount: the kernel does not recognize %s as a block device\n"
+" (maybe `insmod driver'?)"
+msgstr ""
+
+#: mount/mount.c:720
+#, c-format
+msgid "mount: %s is not a block device (maybe try `-o loop'?)"
+msgstr ""
+
+#: mount/mount.c:723
+#, c-format
+msgid "mount: %s is not a block device"
+msgstr ""
+
+#: mount/mount.c:726
+#, c-format
+msgid "mount: %s is not a valid block device"
+msgstr ""
+
+#: mount/mount.c:730
+#, c-format
+msgid "mount: block device %s is not permitted on its filesystem"
+msgstr ""
+
+#: mount/mount.c:747
+#, c-format
+msgid "mount: %s%s is write-protected, mounting read-only"
+msgstr ""
+
+#: mount/mount.c:748
+msgid "block device "
+msgstr ""
+
+#: mount/mount.c:834
+#, c-format
+msgid "mount: consider mounting %s by %s\n"
+msgstr ""
+
+#: mount/mount.c:835
+msgid "UUID"
+msgstr ""
+
+#: mount/mount.c:835
+#, fuzzy
+msgid "label"
+msgstr "[Label]"
+
+#: mount/mount.c:837 mount/mount.c:1151
+msgid "mount: no such partition found"
+msgstr ""
+
+#: mount/mount.c:845
+msgid "mount: no type was given - I'll assume nfs because of the colon\n"
+msgstr ""
+
+#.
+#. * Retry in the background.
+#.
+#: mount/mount.c:861
+#, c-format
+msgid "mount: backgrounding \"%s\"\n"
+msgstr ""
+
+#: mount/mount.c:872
+#, c-format
+msgid "mount: giving up \"%s\"\n"
+msgstr ""
+
+#: mount/mount.c:921
+#, c-format
+msgid "mount: %s already mounted on %s\n"
+msgstr ""
+
+#: mount/mount.c:1030
+msgid ""
+"Usage: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-t vfstypes]\n"
+" mount [-nfrsvw] [-o options] special | node\n"
+" mount [-nfrsvw] [-t vfstype] [-o options] special node\n"
+" A special device can be indicated by -L label or -U uuid ."
+msgstr ""
+
+#: mount/mount.c:1136
+msgid "mount: only root can do that"
+msgstr ""
+
+#: mount/mount.c:1141
+#, c-format
+msgid "mount: no %s found - creating it..\n"
+msgstr ""
+
+#: mount/mount.c:1153
+#, c-format
+msgid "mount: mounting %s\n"
+msgstr ""
+
+#: mount/mount.c:1162
+msgid "not mounted anything"
+msgstr ""
+
+#: mount/mount.c:1175
+#, c-format
+msgid "mount: cannot find %s in %s"
+msgstr ""
+
+#: mount/mount.c:1189
+#, c-format
+msgid "mount: can't find %s in %s or %s"
+msgstr ""
+
+#: mount/mount_by_label.c:141
+msgid "mount: bad UUID"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:186
+#, c-format
+msgid "mount: you didn't specify a filesystem type for %s\n"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:189
+#, c-format
+msgid " I will try type %s\n"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:191
+#, c-format
+msgid " I will try all types mentioned in %s or %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:157
+msgid "mount: excessively long host:dir argument\n"
+msgstr ""
+
+#: mount/nfsmount.c:170
+msgid "mount: warning: multiple hostnames not supported\n"
+msgstr ""
+
+#: mount/nfsmount.c:174
+msgid "mount: directory to mount not in host:dir format\n"
+msgstr ""
+
+#: mount/nfsmount.c:185 mount/nfsmount.c:420
+#, c-format
+msgid "mount: can't get address for %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:191
+msgid "mount: got bad hp->h_length\n"
+msgstr ""
+
+#: mount/nfsmount.c:208
+msgid "mount: excessively long option argument\n"
+msgstr ""
+
+#: mount/nfsmount.c:299
+msgid "Warning: Unrecognized proto= option.\n"
+msgstr ""
+
+#: mount/nfsmount.c:306
+msgid "Warning: Option namlen is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:310
+#, c-format
+msgid "unknown nfs mount parameter: %s=%d\n"
+msgstr ""
+
+#: mount/nfsmount.c:345
+msgid "Warning: option nolock is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:348
+#, c-format
+msgid "unknown nfs mount option: %s%s\n"
+msgstr ""
+
+#: mount/nfsmount.c:349
+msgid "no"
+msgstr ""
+
+#: mount/nfsmount.c:426
+msgid "mount: got bad hp->h_length?\n"
+msgstr ""
+
+#: mount/nfsmount.c:528
+#, c-format
+msgid "mount: %s:%s failed, reason given by server: %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:539
+msgid "NFS over TCP is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:546
+msgid "nfs socket"
+msgstr ""
+
+#: mount/nfsmount.c:550
+msgid "nfs bindresvport"
+msgstr ""
+
+#: mount/nfsmount.c:561
+msgid "used portmapper to find NFS port\n"
+msgstr ""
+
+#: mount/nfsmount.c:565
+#, c-format
+msgid "using port %d for nfs deamon\n"
+msgstr ""
+
+#: mount/nfsmount.c:576
+msgid "nfs connect"
+msgstr ""
+
+#: mount/nfsmount.c:665
+#, c-format
+msgid "unknown nfs status return value: %d"
+msgstr ""
+
+#: mount/sundries.c:40 mount/sundries.c:55
+msgid "not enough memory"
+msgstr ""
+
+#: mount/sundries.c:65
+msgid "bug in xstrndup call"
+msgstr ""
+
+#: mount/swapon.c:49
+#, c-format
+msgid ""
+"usage: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p priority] special ...\n"
+" %s [-s]\n"
+msgstr ""
+
+#: mount/swapon.c:86
+#, c-format
+msgid "%s on %s\n"
+msgstr ""
+
+#: mount/swapon.c:90
+#, c-format
+msgid "swapon: cannot stat %s: %s\n"
+msgstr ""
+
+#: mount/swapon.c:95
+#, c-format
+msgid "swapon: warning: %s has insecure permissions %04o, 0600 suggested\n"
+msgstr ""
+
+#: mount/swapon.c:103
+#, c-format
+msgid "swapon: Skipping file %s - it appears to have holes.\n"
+msgstr ""
+
+#: mount/swapon.c:204
+#, c-format
+msgid "%s: cannot open %s: %s\n"
+msgstr ""
+
+#: mount/umount.c:65
+msgid "umount: compiled without support for -f\n"
+msgstr ""
+
+#: mount/umount.c:115
+#, c-format
+msgid "host: %s, directory: %s\n"
+msgstr ""
+
+#: mount/umount.c:132
+#, c-format
+msgid "umount: can't get address for %s\n"
+msgstr ""
+
+#: mount/umount.c:137
+msgid "umount: got bad hostp->h_length\n"
+msgstr ""
+
+#: mount/umount.c:175
+#, c-format
+msgid "umount: %s: invalid block device"
+msgstr ""
+
+#: mount/umount.c:177
+#, c-format
+msgid "umount: %s: not mounted"
+msgstr ""
+
+#: mount/umount.c:179
+#, c-format
+msgid "umount: %s: can't write superblock"
+msgstr ""
+
+#. Let us hope fstab has a line "proc /proc ..."
+#. and not "none /proc ..."
+#: mount/umount.c:183
+#, c-format
+msgid "umount: %s: device is busy"
+msgstr ""
+
+#: mount/umount.c:185
+#, c-format
+msgid "umount: %s: not found"
+msgstr ""
+
+#: mount/umount.c:187
+#, c-format
+msgid "umount: %s: must be superuser to umount"
+msgstr ""
+
+#: mount/umount.c:189
+#, c-format
+msgid "umount: %s: block devices not permitted on fs"
+msgstr ""
+
+#: mount/umount.c:191
+#, c-format
+msgid "umount: %s: %s"
+msgstr ""
+
+#: mount/umount.c:235
+msgid "no umount2, trying umount...\n"
+msgstr ""
+
+#: mount/umount.c:248
+#, c-format
+msgid "could not umount %s - trying %s instead\n"
+msgstr ""
+
+#: mount/umount.c:264
+#, c-format
+msgid "umount: %s busy - remounted read-only\n"
+msgstr ""
+
+#: mount/umount.c:272
+#, c-format
+msgid "umount: could not remount %s read-only\n"
+msgstr ""
+
+#: mount/umount.c:280
+#, c-format
+msgid "%s umounted\n"
+msgstr ""
+
+#: mount/umount.c:363
+msgid "umount: cannot find list of filesystems to unmount"
+msgstr ""
+
+#: mount/umount.c:392
+msgid ""
+"Usage: umount [-hV]\n"
+" umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n"
+" umount [-f] [-r] [-n] [-v] special | node...\n"
+msgstr ""
+
+#: mount/umount.c:453
+msgid "umount: only root can do that"
+msgstr ""
+
+#: mount/umount.c:468
+#, c-format
+msgid "Trying to umount %s\n"
+msgstr ""
+
+#: mount/umount.c:472
+#, c-format
+msgid "Could not find %s in mtab\n"
+msgstr ""
+
+#: mount/umount.c:476
+#, c-format
+msgid "umount: %s is not mounted (according to mtab)"
+msgstr ""
+
+#: mount/umount.c:478
+#, c-format
+msgid "umount: it seems %s is mounted multiple times"
+msgstr ""
+
+#: mount/umount.c:480
+#, c-format
+msgid "umount: %s is not in the fstab (and you are not root)"
+msgstr ""
+
+#: mount/umount.c:486
+#, c-format
+msgid "umount: %s mount disagrees with the fstab"
+msgstr ""
+
+#: mount/umount.c:505
+#, c-format
+msgid "umount: only root can unmount %s from %s"
+msgstr ""
+
+#: mount/umount.c:515
+#, c-format
+msgid "umount: only %s can unmount %s from %s"
+msgstr ""
+
+#: sys-utils/ctrlaltdel.c:26
+msgid "You must be root to set the Ctrl-Alt-Del behaviour.\n"
+msgstr ""
+
+#: sys-utils/ctrlaltdel.c:41
+msgid "Usage: ctrlaltdel hard|soft\n"
+msgstr ""
+
+#: sys-utils/cytune.c:116
+#, c-format
+msgid ""
+"File %s, For threshold value %lu, Maximum characters in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+
+#: sys-utils/cytune.c:127
+#, c-format
+msgid ""
+"File %s, For threshold value %lu and timrout value %lu, Maximum characters "
+"in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+
+#: sys-utils/cytune.c:194
+#, c-format
+msgid "Invalid interval value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:202
+#, c-format
+msgid "Invalid set value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:210
+#, c-format
+msgid "Invalid default value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:218
+#, c-format
+msgid "Invalid set time value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:226
+#, c-format
+msgid "Invalid default time value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:243
+#, c-format
+msgid ""
+"Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) "
+"[-g|-G] file [file...]\n"
+msgstr ""
+
+#: sys-utils/cytune.c:254 sys-utils/cytune.c:270 sys-utils/cytune.c:287
+#: sys-utils/cytune.c:332
+#, c-format
+msgid "Can't open %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:260
+#, c-format
+msgid "Can't set %s to threshold %d: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:276
+#, c-format
+msgid "Can't set %s to time threshold %d: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:291 sys-utils/cytune.c:342 sys-utils/cytune.c:370
+#, c-format
+msgid "Can't get threshold for %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:296 sys-utils/cytune.c:347 sys-utils/cytune.c:375
+#, c-format
+msgid "Can't get timeout for %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:300
+#, c-format
+msgid "%s: %ld %s threshold and %ld %s timeout\n"
+msgstr ""
+
+#: sys-utils/cytune.c:302 sys-utils/cytune.c:304
+msgid "current"
+msgstr ""
+
+#: sys-utils/cytune.c:302 sys-utils/cytune.c:304
+msgid "default"
+msgstr ""
+
+#: sys-utils/cytune.c:321
+msgid "Can't set signal handler"
+msgstr ""
+
+#: sys-utils/cytune.c:325 sys-utils/cytune.c:356
+msgid "gettimeofday failed"
+msgstr ""
+
+#: sys-utils/cytune.c:336 sys-utils/cytune.c:365
+#, c-format
+msgid "Can't issue CYGETMON on %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:405
+#, c-format
+msgid "%s: %lu ints, %lu/%lu chars; "
+msgstr ""
+
+#: sys-utils/cytune.c:406
+#, c-format
+msgid "fifo: %lu thresh, %lu tmout, "
+msgstr ""
+
+#: sys-utils/cytune.c:407
+#, c-format
+msgid "%lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:412
+#, c-format
+msgid " %f int/sec; %f rec, %f send (char/sec)\n"
+msgstr ""
+
+#: sys-utils/cytune.c:417
+#, c-format
+msgid ""
+"%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:422
+#, c-format
+msgid " %f int/sec; %f rec (char/sec)\n"
+msgstr ""
+
+#: sys-utils/dmesg.c:38
+#, c-format
+msgid "Usage: %s [-c] [-n level] [-s bufsize]\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:46
+#, c-format
+msgid "usage: %s [shm | msg | sem] id\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:70
+#, c-format
+msgid "usage: %s [-shm | -msg | -sem] id\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:73
+msgid "resource deleted\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:91
+#, c-format
+msgid "usage : %s -asmq -tclup \n"
+msgstr ""
+
+#: sys-utils/ipcs.c:92
+#, c-format
+msgid "\t%s [-s -m -q] -i id\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:93
+#, c-format
+msgid "\t%s -h for help.\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:99
+#, c-format
+msgid "%s provides information on ipc facilities for"
+msgstr ""
+
+#: sys-utils/ipcs.c:100
+msgid " which you have read access.\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:101
+msgid ""
+"Resource Specification:\n"
+"\t-m : shared_mem\n"
+"\t-q : messages\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:102
+msgid ""
+"\t-s : semaphores\n"
+"\t-a : all (default)\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:103
+msgid ""
+"Output Format:\n"
+"\t-t : time\n"
+"\t-p : pid\n"
+"\t-c : creator\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:104
+msgid ""
+"\t-l : limits\n"
+"\t-u : summary\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:105
+msgid "-i id [-s -q -m] : details on resource identified by id\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:237 sys-utils/ipcs.c:439
+msgid "kernel not configured for shared memory\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:243
+msgid "------ Shared Memory Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:246
+#, c-format
+msgid "max number of segments = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:247
+#, c-format
+msgid "max seg size (kbytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:248
+#, c-format
+msgid "max total shared memory (kbytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:249
+#, c-format
+msgid "min seg size (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:253
+msgid "------ Shared Memory Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:254
+#, c-format
+msgid "segments allocated %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:255
+#, c-format
+msgid "pages allocated %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:256
+#, c-format
+msgid "pages resident %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:257
+#, c-format
+msgid "pages swapped %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:258
+#, c-format
+msgid "Swap performance: %ld attempts\t %ld successes\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:263
+msgid "------ Shared Memory Segment Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:264 sys-utils/ipcs.c:370 sys-utils/ipcs.c:462
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:271 sys-utils/ipcs.c:276
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:377
+msgid "shmid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:282 sys-utils/ipcs.c:371
+#: sys-utils/ipcs.c:386 sys-utils/ipcs.c:463 sys-utils/ipcs.c:480
+msgid "perms"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cuid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cgid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "uid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:463
+msgid "gid"
+msgstr ""
+
+#: sys-utils/ipcs.c:269
+msgid "------ Shared Memory Attach/Detach/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:270
+#, c-format
+msgid "%-10s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:271 sys-utils/ipcs.c:276 sys-utils/ipcs.c:282
+#: sys-utils/ipcs.c:377 sys-utils/ipcs.c:386 sys-utils/ipcs.c:469
+#: sys-utils/ipcs.c:474 sys-utils/ipcs.c:480
+#, fuzzy
+msgid "owner"
+msgstr "Terminé"
+
+#: sys-utils/ipcs.c:271
+msgid "attached"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "detached"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "changed"
+msgstr ""
+
+#: sys-utils/ipcs.c:275
+msgid "------ Shared Memory Creator/Last-op --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276 sys-utils/ipcs.c:474
+#, c-format
+msgid "%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "cpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "lpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:280
+msgid "------ Shared Memory Segments --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:386 sys-utils/ipcs.c:479
+msgid "key"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "bytes"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "nattch"
+msgstr ""
+
+#: sys-utils/ipcs.c:282 sys-utils/ipcs.c:386
+msgid "status"
+msgstr ""
+
+#: sys-utils/ipcs.c:302 sys-utils/ipcs.c:303 sys-utils/ipcs.c:304
+#: sys-utils/ipcs.c:407 sys-utils/ipcs.c:408 sys-utils/ipcs.c:500
+#: sys-utils/ipcs.c:501 sys-utils/ipcs.c:502
+msgid "Not set"
+msgstr ""
+
+#: sys-utils/ipcs.c:324
+msgid "dest"
+msgstr ""
+
+#: sys-utils/ipcs.c:325
+msgid "locked"
+msgstr ""
+
+#: sys-utils/ipcs.c:345
+msgid "kernel not configured for semaphores\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:351
+#, fuzzy
+msgid "------ Semaphore Limits --------\n"
+msgstr "-------- -------------"
+
+#: sys-utils/ipcs.c:355
+#, c-format
+msgid "max number of arrays = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:356
+#, c-format
+msgid "max semaphores per array = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:357
+#, c-format
+msgid "max semaphores system wide = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:358
+#, c-format
+msgid "max ops per semop call = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:359
+#, c-format
+msgid "semaphore max value = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:363
+#, fuzzy
+msgid "------ Semaphore Status --------\n"
+msgstr "-------- -------------"
+
+#: sys-utils/ipcs.c:364
+#, c-format
+msgid "used arrays = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:365
+#, c-format
+msgid "allocated semaphores = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:369
+msgid "------ Semaphore Arrays Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:371 sys-utils/ipcs.c:386
+msgid "semid"
+msgstr ""
+
+#: sys-utils/ipcs.c:375
+msgid "------ Shared Memory Operation/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:376
+#, c-format
+msgid "%-8s%-10s %-26.24s %-26.24s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-op"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-changed"
+msgstr ""
+
+#: sys-utils/ipcs.c:384
+#, fuzzy
+msgid "------ Semaphore Arrays --------\n"
+msgstr "-------- -------------"
+
+#: sys-utils/ipcs.c:385
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:386
+msgid "nsems"
+msgstr ""
+
+#: sys-utils/ipcs.c:447
+#, fuzzy
+msgid "------ Messages: Limits --------\n"
+msgstr "-------- -------------"
+
+#: sys-utils/ipcs.c:448
+#, c-format
+msgid "max queues system wide = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:449
+#, c-format
+msgid "max size of message (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:450
+#, c-format
+msgid "default max size of queue (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:454
+#, fuzzy
+msgid "------ Messages: Status --------\n"
+msgstr "-------- -------------"
+
+#: sys-utils/ipcs.c:455
+#, c-format
+msgid "allocated queues = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:456
+#, c-format
+msgid "used headers = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:457
+#, c-format
+msgid "used space = %d bytes\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:461
+msgid "------ Message Queues: Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:463 sys-utils/ipcs.c:469 sys-utils/ipcs.c:474
+#: sys-utils/ipcs.c:479
+msgid "msqid"
+msgstr ""
+
+#: sys-utils/ipcs.c:467
+msgid "------ Message Queues Send/Recv/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:468
+#, c-format
+msgid "%-8s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "send"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "recv"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "change"
+msgstr ""
+
+#: sys-utils/ipcs.c:473
+#, fuzzy
+msgid "------ Message Queues PIDs --------\n"
+msgstr "-------- -------------"
+
+#: sys-utils/ipcs.c:474
+msgid "lspid"
+msgstr ""
+
+#: sys-utils/ipcs.c:474
+msgid "lrpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:478
+#, fuzzy
+msgid "------ Message Queues --------\n"
+msgstr "-------- -------------"
+
+#: sys-utils/ipcs.c:479
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-12s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "used-bytes"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "messages"
+msgstr ""
+
+#: sys-utils/ipcs.c:539
+#, c-format
+msgid ""
+"\n"
+"Shared memory Segment shmid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:540
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:542
+#, c-format
+msgid "mode=%#o\taccess_perms=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:543
+#, c-format
+msgid "bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:546
+#, c-format
+msgid "att_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:547 sys-utils/ipcs.c:549 sys-utils/ipcs.c:598
+msgid "Not set\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:548
+#, c-format
+msgid "det_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:550
+#, c-format
+msgid "change_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:566
+#, c-format
+msgid ""
+"\n"
+"Message Queue msqid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:567
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:569
+#, c-format
+msgid "cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:572
+#, c-format
+msgid "send_time=%srcv_time=%schange_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:573 sys-utils/ipcs.c:574 sys-utils/ipcs.c:575
+msgid "Not Set\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:592
+#, c-format
+msgid ""
+"\n"
+"Semaphore Array semid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:593
+#, c-format
+msgid "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:595
+#, c-format
+msgid "mode=%#o, access_perms=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:596
+#, c-format
+msgid "nsems = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:597
+#, c-format
+msgid "otime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:599
+#, c-format
+msgid "ctime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "semnum"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+#, fuzzy
+msgid "value"
+msgstr "Table"
+
+#: sys-utils/ipcs.c:601
+msgid "ncount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "zcount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "pid"
+msgstr ""
+
+#: sys-utils/kbdrate.c:126
+#, c-format
+msgid "util-linux kbdrate %s \n"
+msgstr ""
+
+#: sys-utils/kbdrate.c:159 sys-utils/kbdrate.c:206
+#, c-format
+msgid "Typematic Rate set to %.1f cps (delay = %d mS)\n"
+msgstr ""
+
+#: sys-utils/kbdrate.c:182
+msgid "Cannot open /dev/port"
+msgstr ""
+
+#: sys-utils/rdev.c:68
+msgid "usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]"
+msgstr ""
+
+#: sys-utils/rdev.c:69
+msgid ""
+" rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device"
+msgstr ""
+
+#: sys-utils/rdev.c:70
+msgid " rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2"
+msgstr ""
+
+#: sys-utils/rdev.c:71
+msgid " rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)"
+msgstr ""
+
+#: sys-utils/rdev.c:72
+msgid " rdev -s /dev/fd0 /dev/hda2 set the SWAP device"
+msgstr ""
+
+#: sys-utils/rdev.c:73
+msgid " rdev -r /dev/fd0 627 set the RAMDISK size"
+msgstr ""
+
+#: sys-utils/rdev.c:74
+msgid " rdev -v /dev/fd0 1 set the bootup VIDEOMODE"
+msgstr ""
+
+#: sys-utils/rdev.c:75
+msgid " rdev -o N ... use the byte offset N"
+msgstr ""
+
+#: sys-utils/rdev.c:76
+msgid " rootflags ... same as rdev -R"
+msgstr ""
+
+#: sys-utils/rdev.c:77
+msgid " swapdev ... same as rdev -s"
+msgstr ""
+
+#: sys-utils/rdev.c:78
+msgid " ramsize ... same as rdev -r"
+msgstr ""
+
+#: sys-utils/rdev.c:79
+msgid " vidmode ... same as rdev -v"
+msgstr ""
+
+#: sys-utils/rdev.c:80
+msgid ""
+"Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,..."
+msgstr ""
+
+#: sys-utils/rdev.c:81
+msgid " use -R 1 to mount root readonly, -R 0 for read/write."
+msgstr ""
+
+#: sys-utils/readprofile.c:50
+#, c-format
+msgid ""
+"%s: Usage: \"%s [options]\n"
+"\t -m <mapfile> (default = \"%s\")\n"
+"\t -p <pro-file> (default = \"%s\")\n"
+"\t -i print only info about the sampling step\n"
+"\t -v print verbose data\n"
+"\t -a print all symbols, even if count is 0\n"
+"\t -r reset all the counters (root only)\n"
+"\t -V print version and exit\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:113
+#, c-format
+msgid "%s Version %s\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:125
+msgid "anything\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:154
+#, c-format
+msgid "Sampling_step: %i\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:167 sys-utils/readprofile.c:193
+#, c-format
+msgid "%s: %s(%i): wrong map line\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:180
+#, c-format
+msgid "%s: can't find \"_stext\" in %s\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:221
+#, fuzzy
+msgid "total"
+msgstr "Bootable"
+
+#: sys-utils/renice.c:66
+msgid "usage: renice priority [ [ -p ] pids ] "
+msgstr ""
+
+#: sys-utils/renice.c:67
+msgid "[ [ -g ] pgrps ] [ [ -u ] users ]\n"
+msgstr ""
+
+#: sys-utils/renice.c:93
+#, c-format
+msgid "renice: %s: unknown user\n"
+msgstr ""
+
+#: sys-utils/renice.c:101
+#, c-format
+msgid "renice: %s: bad value\n"
+msgstr ""
+
+#: sys-utils/renice.c:121
+msgid "getpriority"
+msgstr ""
+
+#: sys-utils/renice.c:126
+msgid "setpriority"
+msgstr ""
+
+#: sys-utils/renice.c:129
+#, c-format
+msgid "%d: old priority %d, new priority %d\n"
+msgstr ""
+
+#: sys-utils/setsid.c:23
+#, c-format
+msgid "usage: %s program [arg ...]\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:77
+#, c-format
+msgid ""
+"Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
+" -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s ]\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:89
+msgid "malloc error"
+msgstr ""
+
+#: sys-utils/tunelp.c:100
+msgid "sscanf error"
+msgstr ""
+
+#: sys-utils/tunelp.c:140
+#, c-format
+msgid "%s: %s not an lp device.\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:239
+#, c-format
+msgid "%s status is %d"
+msgstr ""
+
+#: sys-utils/tunelp.c:240
+msgid ", busy"
+msgstr ""
+
+#: sys-utils/tunelp.c:241
+msgid ", ready"
+msgstr ""
+
+#: sys-utils/tunelp.c:242
+msgid ", out of paper"
+msgstr ""
+
+#: sys-utils/tunelp.c:243
+msgid ", on-line"
+msgstr ""
+
+#: sys-utils/tunelp.c:244
+msgid ", error"
+msgstr ""
+
+#: sys-utils/tunelp.c:261
+msgid "LPGETIRQ error"
+msgstr ""
+
+#: sys-utils/tunelp.c:267
+#, c-format
+msgid "%s using IRQ %d\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:269
+#, c-format
+msgid "%s using polling\n"
+msgstr ""
+
+#: text-utils/col.c:154
+#, c-format
+msgid "col: bad -l argument %s.\n"
+msgstr ""
+
+#: text-utils/col.c:515
+msgid "usage: col [-bfx] [-l nline]\n"
+msgstr ""
+
+#: text-utils/col.c:521
+msgid "col: write error.\n"
+msgstr ""
+
+#: text-utils/col.c:528
+#, c-format
+msgid "col: warning: can't back up %s.\n"
+msgstr ""
+
+#: text-utils/col.c:529
+msgid "past first line"
+msgstr ""
+
+#: text-utils/col.c:529
+msgid "-- line already flushed"
+msgstr ""
+
+#: text-utils/colcrt.c:93
+#, c-format
+msgid "usage: %s [ - ] [ -2 ] [ file ... ]\n"
+msgstr ""
+
+#: text-utils/column.c:276
+msgid "line too long"
+msgstr ""
+
+#: text-utils/column.c:311
+msgid "usage: column [-tx] [-c columns] [file ...]\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:80
+msgid "hexdump: bad length value.\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:91
+msgid "hexdump: bad skip value.\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:129
+msgid ""
+"hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"
+msgstr ""
+
+#: text-utils/more.c:247
+msgid "usage: "
+msgstr ""
+
+#: text-utils/more.c:249
+msgid " [-dfln] [+linenum | +/pattern] name1 name2 ...\n"
+msgstr ""
+
+#: text-utils/more.c:423
+#, c-format
+msgid ""
+"\n"
+"*** %s: directory ***\n"
+"\n"
+msgstr ""
+
+#. simple ELF detection
+#: text-utils/more.c:462
+#, c-format
+msgid ""
+"\n"
+"******** %s: Not a text file ********\n"
+"\n"
+msgstr ""
+
+#: text-utils/more.c:566
+msgid "[Use q or Q to quit]"
+msgstr ""
+
+#: text-utils/more.c:752
+msgid "--More--"
+msgstr ""
+
+#: text-utils/more.c:754
+#, c-format
+msgid "(Next file: %s)"
+msgstr ""
+
+#: text-utils/more.c:760
+#, fuzzy
+msgid "[Press space to continue, 'q' to quit.]"
+msgstr "Appuyez sur une touche pour continuer"
+
+#: text-utils/more.c:1058
+#, c-format
+msgid "...back %d page"
+msgstr ""
+
+#: text-utils/more.c:1104
+#, c-format
+msgid "...skipping %d line"
+msgstr ""
+
+#: text-utils/more.c:1145
+msgid ""
+"\n"
+"***Back***\n"
+"\n"
+msgstr ""
+
+#: text-utils/more.c:1183
+msgid "Can't open help file"
+msgstr ""
+
+#: text-utils/more.c:1204 text-utils/more.c:1208
+msgid "[Press 'h' for instructions.]"
+msgstr ""
+
+#: text-utils/more.c:1243
+#, c-format
+msgid "\"%s\" line %d"
+msgstr ""
+
+#: text-utils/more.c:1245
+#, c-format
+msgid "[Not a file] line %d"
+msgstr ""
+
+#: text-utils/more.c:1329
+msgid " Overflow\n"
+msgstr ""
+
+#: text-utils/more.c:1376
+msgid "...skipping\n"
+msgstr ""
+
+#: text-utils/more.c:1406
+msgid "Regular expression botch"
+msgstr ""
+
+#: text-utils/more.c:1418
+msgid ""
+"\n"
+"Pattern not found\n"
+msgstr ""
+
+#: text-utils/more.c:1421
+msgid "Pattern not found"
+msgstr ""
+
+#: text-utils/more.c:1483
+msgid "can't fork\n"
+msgstr ""
+
+#: text-utils/more.c:1522
+msgid ""
+"\n"
+"...Skipping "
+msgstr ""
+
+#: text-utils/more.c:1526
+msgid "...Skipping "
+msgstr ""
+
+#: text-utils/more.c:1527
+msgid "to file "
+msgstr ""
+
+#: text-utils/more.c:1527
+msgid "back to file "
+msgstr ""
+
+#: text-utils/more.c:1765
+msgid "Line too long"
+msgstr ""
+
+#: text-utils/more.c:1809
+msgid "No previous command to substitute for"
+msgstr ""
+
+#: text-utils/odsyntax.c:133
+msgid "od: od(1) has been deprecated for hexdump(1).\n"
+msgstr ""
+
+#: text-utils/odsyntax.c:136
+#, c-format
+msgid "od: hexdump(1) compatibility doesn't support the -%c option%s\n"
+msgstr ""
+
+#: text-utils/odsyntax.c:137
+msgid "; see strings(1)."
+msgstr ""
+
+#: text-utils/parse.c:63
+#, c-format
+msgid "hexdump: can't read %s.\n"
+msgstr ""
+
+#: text-utils/parse.c:68
+msgid "hexdump: line too long.\n"
+msgstr ""
+
+#: text-utils/parse.c:406
+msgid "hexdump: byte count with multiple conversion characters.\n"
+msgstr ""
+
+#: text-utils/parse.c:490
+#, c-format
+msgid "hexdump: bad byte count for conversion character %s.\n"
+msgstr ""
+
+#: text-utils/parse.c:497
+msgid "hexdump: %%s requires a precision or a byte count.\n"
+msgstr ""
+
+#: text-utils/parse.c:503
+#, c-format
+msgid "hexdump: bad format {%s}\n"
+msgstr ""
+
+#: text-utils/parse.c:509
+msgid "hexdump: bad conversion character %%%s.\n"
+msgstr ""
+
+#: text-utils/rev.c:109
+msgid "Unable to allocate bufferspace\n"
+msgstr ""
+
+#: text-utils/rev.c:167
+msgid "usage: rev [file ...]\n"
+msgstr ""
+
+#: text-utils/ul.c:125
+#, c-format
+msgid "usage: %s [ -i ] [ -tTerm ] file...\n"
+msgstr ""
+
+#: text-utils/ul.c:136
+msgid "trouble reading terminfo"
+msgstr ""
+
+#: text-utils/ul.c:223
+#, c-format
+msgid "Unknown escape sequence in input: %o, %o\n"
+msgstr ""
+
+#: text-utils/ul.c:372
+msgid "Unable to allocate buffer.\n"
+msgstr ""
+
+#: text-utils/ul.c:529
+msgid "Input line too long.\n"
+msgstr ""
+
+#: text-utils/ul.c:542
+msgid "Out of memory when growing buffer.\n"
+msgstr ""
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 000000000..15f9e9459
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,827 @@
+# Translation for util-linux.
+# Copyright (C) 1999 Marco d'Itri
+# Marco d'Itri <md@linux.it>, 1999.
+#
+#: fdisk/cfdisk.c:2554
+msgid ""
+msgstr ""
+"Project-Id-Version: util-linux 2.9i\n"
+"POT-Creation-Date: 1999-02-21 22:08+0100\n"
+"PO-Revision-Date: 1999-04-04 21:12+02:00\n"
+"Last-Translator: Marco d'Itri <md@linux.it>\n"
+"Language-Team: Italian <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: fdisk/cfdisk.c:323
+msgid "Linux/MINIX"
+msgstr "Linux/MINIX"
+
+#: fdisk/cfdisk.c:324
+msgid "Linux Swap"
+msgstr "Linux Swap"
+
+#: fdisk/cfdisk.c:325 fdisk/cfdisk.c:388
+msgid "Linux"
+msgstr "Linux"
+
+#: fdisk/cfdisk.c:326 fdisk/cfdisk.c:383 fdisk/cfdisk.c:1757
+msgid "Free Space"
+msgstr "Spazio Libero"
+
+#: fdisk/cfdisk.c:327
+msgid "Extended"
+msgstr "Estesa"
+
+#: fdisk/cfdisk.c:328
+msgid "Linux extended"
+msgstr "Estesa linux"
+
+#: fdisk/cfdisk.c:329
+msgid "DOS FAT12"
+msgstr "DOS FAT12"
+
+#: fdisk/cfdisk.c:330
+msgid "XENIX root"
+msgstr "XENIX root"
+
+#: fdisk/cfdisk.c:331
+msgid "XENIX usr"
+msgstr "XENIX usr"
+
+#: fdisk/cfdisk.c:332
+msgid "DOS FAT16"
+msgstr "DOS FAT16"
+
+#: fdisk/cfdisk.c:333
+msgid "DOS FAT16 (big)"
+msgstr "DOS FAT16 (big)"
+
+#: fdisk/cfdisk.c:334
+msgid "OS/2 HPFS or NTFS"
+msgstr "OS/2 HPFS o NTFS"
+
+#: fdisk/cfdisk.c:335
+msgid "AIX"
+msgstr "AIX"
+
+#: fdisk/cfdisk.c:336
+msgid "AIX bootable"
+msgstr "AIX bootabile"
+
+#: fdisk/cfdisk.c:337
+msgid "OS/2 Boot Manager"
+msgstr "OS/2 Boot Manager"
+
+#: fdisk/cfdisk.c:338
+msgid "Win95 FAT32"
+msgstr "Win95 FAT32"
+
+#: fdisk/cfdisk.c:339
+msgid "Win95 FAT32 (LBA)"
+msgstr "Win95 FAT32 (LBA)"
+
+#: fdisk/cfdisk.c:340
+msgid "Win95 FAT16 (LBA)"
+msgstr "Win95 FAT16 (LBA)"
+
+#: fdisk/cfdisk.c:341
+msgid "Win95 Extended (LBA)"
+msgstr "Win95 Estesa (LBA)"
+
+#: fdisk/cfdisk.c:342
+msgid "Hidden DOS FAT12"
+msgstr "DOS FAT12 nascosta"
+
+#: fdisk/cfdisk.c:343
+msgid "Hidden DOS FAT16"
+msgstr "DOS FAT16 nascosta"
+
+#: fdisk/cfdisk.c:344
+msgid "Hidden DOS FAT16 (big)"
+msgstr "DOS FAT16 (big) nascosta"
+
+#: fdisk/cfdisk.c:345
+msgid "Hidden OS/2 HPFS or NTFS"
+msgstr "OS/2 HPFS o NTFS nascosta"
+
+#: fdisk/cfdisk.c:346
+msgid "Venix 80286"
+msgstr "Venix 80286"
+
+#: fdisk/cfdisk.c:347
+msgid "PPC PReP boot"
+msgstr "PPC PReP boot"
+
+#: fdisk/cfdisk.c:348
+msgid "Novell?"
+msgstr "Novell?"
+
+#: fdisk/cfdisk.c:349
+msgid "Microport"
+msgstr "Microport"
+
+#: fdisk/cfdisk.c:350
+msgid "GNU HURD"
+msgstr "GNU HURD"
+
+#: fdisk/cfdisk.c:351
+msgid "Novell Netware 286"
+msgstr "Novell Netware 286"
+
+#: fdisk/cfdisk.c:352
+msgid "Novell Netware 386"
+msgstr "Novell Netware 386"
+
+#: fdisk/cfdisk.c:353
+msgid "PC/IX"
+msgstr "PC/IX"
+
+#: fdisk/cfdisk.c:354
+msgid "Old MINIX"
+msgstr "Vecchio MINIX"
+
+#: fdisk/cfdisk.c:355
+msgid "Amoeba"
+msgstr "Amoeba"
+
+#: fdisk/cfdisk.c:356
+msgid "Amoeba BBT"
+msgstr "Amoeba BBT"
+
+#: fdisk/cfdisk.c:357
+msgid "BSD/386"
+msgstr "BSD/386"
+
+#: fdisk/cfdisk.c:358
+msgid "OpenBSD"
+msgstr "OpenBSD"
+
+#: fdisk/cfdisk.c:359
+msgid "NEXTSTEP"
+msgstr "NEXTSTEP"
+
+#: fdisk/cfdisk.c:360
+msgid "BSDI fs"
+msgstr "BSDI fs"
+
+#: fdisk/cfdisk.c:361
+msgid "BSDI swap"
+msgstr "BSDI swap"
+
+#: fdisk/cfdisk.c:362
+msgid "Syrinx"
+msgstr "Syrinx"
+
+#: fdisk/cfdisk.c:363
+msgid "CP/M"
+msgstr "CP/M"
+
+#: fdisk/cfdisk.c:364
+msgid "DOS access"
+msgstr "DOS access"
+
+#: fdisk/cfdisk.c:365
+msgid "DOS R/O"
+msgstr "DOS R/O"
+
+#: fdisk/cfdisk.c:366
+msgid "BeOS fs"
+msgstr "BeOS fs"
+
+#: fdisk/cfdisk.c:367
+msgid "DOS secondary"
+msgstr "DOS secondary"
+
+#: fdisk/cfdisk.c:368
+msgid "BBT"
+msgstr "BBT"
+
+#: fdisk/cfdisk.c:381 fdisk/cfdisk.c:1755
+msgid "Unusable"
+msgstr "Inutilizzabile"
+
+#: fdisk/cfdisk.c:386
+msgid "Linux ext2"
+msgstr "Linux ext2"
+
+#: fdisk/cfdisk.c:391
+msgid "OS/2 HPFS"
+msgstr "OS/2 HPFS"
+
+#: fdisk/cfdisk.c:393
+msgid "OS/2 IFS"
+msgstr "OS/2 IFS"
+
+#: fdisk/cfdisk.c:397
+msgid "NTFS"
+msgstr "NTFS"
+
+#: fdisk/cfdisk.c:408
+msgid "Disk has been changed.\n"
+msgstr "Il disco č stato modificato.\n"
+
+#: fdisk/cfdisk.c:409
+msgid "Reboot the system to ensure the partition table is correctly updated.\n"
+msgstr ""
+"Riavviare il sistema per essere sicuri che la tabella delle partizioni sia\n"
+"stata aggiornata correttamente.\n"
+
+#: fdisk/cfdisk.c:412
+msgid ""
+"\n"
+"WARNING: If you have created or modified any\n"
+"DOS 6.x partitions, please see the cfdisk manual\n"
+"page for additional information.\n"
+msgstr ""
+"\n"
+"ATTENZIONE: Se sono state create o modificate\n"
+"partizioni del DOS 6.x consultare il manuale di\n"
+"cfdisk per ulteriori informazioni.\n"
+
+#: fdisk/cfdisk.c:848
+msgid ""
+"!!!! Internal error creating logical drive with no extended partition !!!!"
+msgstr ""
+"!!!! Errore interno durante la creazione di un drive logico senza partizione\n"
+"estesa !!!!"
+
+#: fdisk/cfdisk.c:1007
+msgid "Menu item too long. Menu may look odd."
+msgstr "Voce del menů troppo lunga. Il menů puň apparire strano."
+
+#: fdisk/cfdisk.c:1009
+#, c-format
+msgid "[%*s%-*s]"
+msgstr "[%*s%-*s]"
+
+#: fdisk/cfdisk.c:1012
+#, c-format
+msgid "%*s%-*s"
+msgstr "%*s%-*s"
+
+#: fdisk/cfdisk.c:1054
+msgid "Menu without direction. Defaulting horizontal."
+msgstr "Menů senza direzione. Predefinita l'orizzontale."
+
+#: fdisk/cfdisk.c:1169
+msgid "Illegal key"
+msgstr "Tasto non valido"
+
+#: fdisk/cfdisk.c:1192
+msgid "Press a key to continue"
+msgstr "Premere un tasto per continuare"
+
+#: fdisk/cfdisk.c:1236 fdisk/cfdisk.c:1726 fdisk/cfdisk.c:2233
+#: fdisk/cfdisk.c:2235
+msgid "Primary"
+msgstr "Primaria"
+
+#: fdisk/cfdisk.c:1236
+msgid "Create a new primary partition"
+msgstr "Crea una nuova partizione primaria"
+
+#: fdisk/cfdisk.c:1237 fdisk/cfdisk.c:1726 fdisk/cfdisk.c:2232
+#: fdisk/cfdisk.c:2235
+msgid "Logical"
+msgstr "Logica"
+
+#: fdisk/cfdisk.c:1237
+msgid "Create a new logical partition"
+msgstr "Crea una nuova partizione logica"
+
+#: fdisk/cfdisk.c:1238 fdisk/cfdisk.c:1291 fdisk/cfdisk.c:1938
+msgid "Cancel"
+msgstr "Annulla"
+
+#: fdisk/cfdisk.c:1238 fdisk/cfdisk.c:1291
+msgid "Don't create a partition"
+msgstr "Non crea partizioni"
+
+#: fdisk/cfdisk.c:1254
+msgid "!!! Internal error !!!"
+msgstr "!!! Errore interno !!!"
+
+#: fdisk/cfdisk.c:1256
+#, c-format
+msgid "%.2f"
+msgstr "%.2f"
+
+#: fdisk/cfdisk.c:1289
+msgid "Beginning"
+msgstr "Inizio"
+
+#: fdisk/cfdisk.c:1289
+msgid "Add partition at beginning of free space"
+msgstr "Aggiunge la partizione all'inizio dello spazio libero"
+
+#: fdisk/cfdisk.c:1290
+msgid "End"
+msgstr "Fine"
+
+#: fdisk/cfdisk.c:1290
+msgid "Add partition at end of free space"
+msgstr "Aggiunge la partizione alla fine dello spazio libero"
+
+#: fdisk/cfdisk.c:1553
+msgid "Are you sure you want write the partition table to disk? (yes or no): "
+msgstr "Sicuro di volere scrivere sul disco la tabella delle part.? (yes o no): "
+
+#: fdisk/cfdisk.c:1669 fdisk/cfdisk.c:1787 fdisk/cfdisk.c:1879
+msgid "Enter filename or press RETURN to display on screen: "
+msgstr "Inserire il nome del file o premere INVIO per mostrarlo sullo schermo: "
+
+#: fdisk/cfdisk.c:1688
+#, c-format
+msgid "Disk Drive: %s\n"
+msgstr "Disk Drive: %s\n"
+
+#: fdisk/cfdisk.c:1690
+msgid "Sector 0:\n"
+msgstr "Settore 0:\n"
+
+#: fdisk/cfdisk.c:1697
+#, c-format
+msgid "Sector %d:\n"
+msgstr "Settore %d:\n"
+
+#: fdisk/cfdisk.c:1717
+msgid " None "
+msgstr " Nessuno "
+
+#: fdisk/cfdisk.c:1719
+msgid " Pri/Log"
+msgstr " Pri/Log"
+
+#: fdisk/cfdisk.c:1721
+msgid " Primary"
+msgstr " Primaria"
+
+#: fdisk/cfdisk.c:1723
+msgid " Logical"
+msgstr " Logica"
+
+#: fdisk/cfdisk.c:1761
+msgid "Unknown"
+msgstr "Sconosciuta"
+
+#: fdisk/cfdisk.c:1767
+#, c-format
+msgid "Boot (%02X)"
+msgstr "Boot (%02X)"
+
+#: fdisk/cfdisk.c:1769 fdisk/cfdisk.c:2241
+#, c-format
+msgid "Unknown (%02X)"
+msgstr "Sconosciuta (%02X)"
+
+#: fdisk/cfdisk.c:1771
+#, c-format
+msgid "None (%02X)"
+msgstr "No (%02X)"
+
+#: fdisk/cfdisk.c:1806 fdisk/cfdisk.c:1898
+#, c-format
+msgid "Partition Table for %s\n"
+msgstr "Tabella delle partizioni per %s\n"
+
+#: fdisk/cfdisk.c:1807 fdisk/cfdisk.c:1899
+msgid "\n"
+msgstr "\n"
+
+#: fdisk/cfdisk.c:1808
+msgid " First Last\n"
+msgstr " Primo Ultimo\n"
+
+#: fdisk/cfdisk.c:1809
+msgid ""
+" # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n"
+msgstr " # Tipo Settore Settore Offset Lunghezza Tipo filesystem (ID) Flag\n"
+
+#: fdisk/cfdisk.c:1810
+msgid ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+msgstr "-- ------- -------- --------- ------ --------- ---------------------- ---------\n"
+
+#: fdisk/cfdisk.c:1900
+msgid " ---Starting--- ----Ending---- Start Number of\n"
+msgstr " ---Iniziale--- ----Finale---- Settore Numero di\n"
+
+#: fdisk/cfdisk.c:1901
+msgid " # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n"
+msgstr " # Flag Head Sect Cyl ID Head Sect Cyl Iniziale Settori\n"
+
+#: fdisk/cfdisk.c:1902
+msgid "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+msgstr "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+
+#: fdisk/cfdisk.c:1935
+msgid "Raw"
+msgstr "Raw"
+
+#: fdisk/cfdisk.c:1935
+msgid "Print the table using raw data format"
+msgstr "Stampa la tabella in formato grezzo"
+
+#: fdisk/cfdisk.c:1936 fdisk/cfdisk.c:2041
+msgid "Sectors"
+msgstr "Settori"
+
+#: fdisk/cfdisk.c:1936
+msgid "Print the table ordered by sectors"
+msgstr "Stampa la tabella ordinata secondo i settori"
+
+#: fdisk/cfdisk.c:1937
+msgid "Table"
+msgstr "Tabella"
+
+#: fdisk/cfdisk.c:1937
+msgid "Just print the partition table"
+msgstr "Stampa solo la tabella delle partizioni"
+
+#: fdisk/cfdisk.c:1938
+msgid "Don't print the table"
+msgstr "Non stampa la tabella"
+
+#: fdisk/cfdisk.c:1967
+msgid "Help Screen for cfdisk 0.8l"
+msgstr "Schermo di aiuto di cfdisk 0.8l"
+
+#: fdisk/cfdisk.c:1969
+msgid "This is cfdisk, a curses based disk partitioning program, which"
+msgstr "Questo č cfdisk, un programma di partizionamento del disco basato su"
+
+#: fdisk/cfdisk.c:1970
+msgid "allows you to create, delete and modify partitions on your hard"
+msgstr "curses che permette di creare, cancellare e modificare le partizioni"
+
+#: fdisk/cfdisk.c:1971
+msgid "disk drive."
+msgstr "sull'hard disk."
+
+#: fdisk/cfdisk.c:1973
+msgid "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+msgstr "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+
+#: fdisk/cfdisk.c:1975
+msgid "Command Meaning"
+msgstr "Comando Significato"
+
+#: fdisk/cfdisk.c:1976
+msgid "------- -------"
+msgstr "------- -----------"
+
+#: fdisk/cfdisk.c:1977
+msgid " b Toggle bootable flag of the current partition"
+msgstr " b Cambia il flag di bootabilitŕ dalla partizione corrente"
+
+#: fdisk/cfdisk.c:1978
+msgid " d Delete the current partition"
+msgstr " d Cancella la partizione corrente"
+
+#: fdisk/cfdisk.c:1979
+msgid " g Change cylinders, heads, sectors-per-track parameters"
+msgstr " g Cambia i parametri di cilindri, testine e settori per traccia"
+
+#: fdisk/cfdisk.c:1980
+msgid " WARNING: This option should only be used by people who"
+msgstr " ATTENZIONE: Questa opzione dovrebbe essere usata solo da"
+
+#: fdisk/cfdisk.c:1981
+msgid " know what they are doing."
+msgstr " persone che sanno cosa stanno facendo."
+
+#: fdisk/cfdisk.c:1982
+msgid " h Print this screen"
+msgstr " h Stampa questa schermata"
+
+#: fdisk/cfdisk.c:1983
+msgid " m Maximize disk usage of the current partition"
+msgstr " m Massimizza l'uso del disco da parte della partizione corrente"
+
+#: fdisk/cfdisk.c:1984
+msgid " Note: This may make the partition incompatible with"
+msgstr " Nota: Questo puň rendere la partizione incompatibile con"
+
+#: fdisk/cfdisk.c:1985
+msgid " DOS, OS/2, ..."
+msgstr " DOS, OS/2, ..."
+
+#: fdisk/cfdisk.c:1986
+msgid " n Create new partition from free space"
+msgstr " n Crea una nuova partizione dallo spazio libero"
+
+#: fdisk/cfdisk.c:1987
+msgid " p Print partition table to the screen or to a file"
+msgstr " p Stampa la tabella delle partizioni sullo schermo o su un file"
+
+#: fdisk/cfdisk.c:1988
+msgid " There are several different formats for the partition"
+msgstr " Ci sono diversi formati di visualizzazione"
+
+#: fdisk/cfdisk.c:1989
+msgid " that you can choose from:"
+msgstr " tra cui scegliere:"
+
+#: fdisk/cfdisk.c:1990
+msgid " r - Raw data (exactly what would be written to disk)"
+msgstr " r - Dati grezzi (quello che sarebbe scritto sul disco)"
+
+#: fdisk/cfdisk.c:1991
+msgid " s - Table ordered by sectors"
+msgstr " s - Tabella ordinata per settori"
+
+#: fdisk/cfdisk.c:1992
+msgid " t - Table in raw format"
+msgstr " t - Tabella in formato grezzo"
+
+#: fdisk/cfdisk.c:1993
+msgid " q Quit program without writing partition table"
+msgstr " q Abbandona il programma senza scrivere la tabella"
+
+#: fdisk/cfdisk.c:1994
+msgid " t Change the filesystem type"
+msgstr " t Cambia il tipo di filesystem"
+
+#: fdisk/cfdisk.c:1995
+msgid " u Change units of the partition size display"
+msgstr " u Cambia l'unitŕ di dimensione usata"
+
+#: fdisk/cfdisk.c:1996
+msgid " Rotates through Mb, sectors and cylinders"
+msgstr " Cambia tra Mb, settori e cilindri"
+
+#: fdisk/cfdisk.c:1997
+msgid " W Write partition table to disk (must enter upper case W)"
+msgstr " W Scrive la tabella sul disco (deve essere usata una W maiuscola)"
+
+#: fdisk/cfdisk.c:1998
+msgid " Since this might destroy data on the disk, you must"
+msgstr " Poichč questo puň distruggere i dati sul disco bisogna"
+
+#: fdisk/cfdisk.c:1999
+msgid " either confirm or deny the write by entering `yes' or"
+msgstr " confermare o annullare la scrittura digitando `yes' o"
+
+#: fdisk/cfdisk.c:2000
+msgid " `no'"
+msgstr " `no'"
+
+#: fdisk/cfdisk.c:2001
+msgid "Up Arrow Move cursor to the previous partition"
+msgstr "Freccia su Sposta il cursore alla partizione precedente"
+
+#: fdisk/cfdisk.c:2002
+msgid "Down Arrow Move cursor to the next partition"
+msgstr "Freccia giů Sposta il cursore alla partizione seguente"
+
+#: fdisk/cfdisk.c:2003
+msgid "CTRL-L Redraws the screen"
+msgstr "CTRL-L Ridisegna lo schermo"
+
+#: fdisk/cfdisk.c:2004
+msgid " ? Print this screen"
+msgstr " ? Stampa questa schermata"
+
+#: fdisk/cfdisk.c:2006
+msgid "Note: All of the commands can be entered with either upper or lower"
+msgstr "Nota: tutti i comandi (tranne Write) possono essere immessi sia in lettere"
+
+#: fdisk/cfdisk.c:2007
+msgid "case letters (except for Writes)."
+msgstr "maiuscole che minuscole"
+
+#: fdisk/cfdisk.c:2039 fdisk/cfdisk.c:2322
+msgid "Cylinders"
+msgstr "Cilindri"
+
+#: fdisk/cfdisk.c:2039
+msgid "Change cylinder geometry"
+msgstr "Cambia la geometria del cilindro"
+
+#: fdisk/cfdisk.c:2040
+msgid "Heads"
+msgstr "Testine"
+
+#: fdisk/cfdisk.c:2040
+msgid "Change head geometry"
+msgstr "Cambia la geometria della testina"
+
+#: fdisk/cfdisk.c:2041
+msgid "Change sector geometry"
+msgstr "Cambia la geometria del settore"
+
+#: fdisk/cfdisk.c:2042
+msgid "Done"
+msgstr "Fatto"
+
+#: fdisk/cfdisk.c:2042
+msgid "Done with changing geometry"
+msgstr "Basta cambiamenti di geometria"
+
+#: fdisk/cfdisk.c:2055
+msgid "Enter the number of cylinders: "
+msgstr "Inserire il numero di cilindri: "
+
+#: fdisk/cfdisk.c:2068
+msgid "Enter the number of heads: "
+msgstr "Inserire il numero di testine: "
+
+#: fdisk/cfdisk.c:2081
+msgid "Enter the number of sectors per track: "
+msgstr "Inserire il numero di settori per traccia: "
+
+#: fdisk/cfdisk.c:2168
+msgid "Enter filesystem type: "
+msgstr "Inserire il tipo di filesystem: "
+
+#: fdisk/cfdisk.c:2210
+msgid "Boot"
+msgstr "Boot"
+
+#: fdisk/cfdisk.c:2212
+#, c-format
+msgid "Unk(%02X)"
+msgstr "Scon(%02X)"
+
+#: fdisk/cfdisk.c:2215 fdisk/cfdisk.c:2218
+msgid ", NC"
+msgstr ", NC"
+
+#: fdisk/cfdisk.c:2223 fdisk/cfdisk.c:2226
+msgid "NC"
+msgstr "NC"
+
+#: fdisk/cfdisk.c:2234
+msgid "Pri/Log"
+msgstr "Pri/Log"
+
+#: fdisk/cfdisk.c:2306
+#, c-format
+msgid "cfdisk %s"
+msgstr "cfdisk %s"
+
+#: fdisk/cfdisk.c:2308
+#, c-format
+msgid "Disk Drive: %s"
+msgstr "Disk Drive: %s"
+
+#: fdisk/cfdisk.c:2310
+#, c-format
+msgid "Heads: %d Sectors per Track: %d Cylinders: %d"
+msgstr "Testine: %d Settori per traccia: %d Cilindri: %d"
+
+#: fdisk/cfdisk.c:2314
+msgid "Name"
+msgstr "Nome"
+
+#: fdisk/cfdisk.c:2315
+msgid "Flags"
+msgstr "Flag"
+
+#: fdisk/cfdisk.c:2316
+msgid "Part Type"
+msgstr "Tipo Part"
+
+#: fdisk/cfdisk.c:2317
+msgid "FS Type"
+msgstr "Tipo FS"
+
+#: fdisk/cfdisk.c:2318
+msgid "[Label]"
+msgstr "[Etichetta]"
+
+#: fdisk/cfdisk.c:2320
+msgid " Sectors"
+msgstr "Settori"
+
+#: fdisk/cfdisk.c:2324
+msgid "Size (MB)"
+msgstr "Dim (MB)"
+
+#: fdisk/cfdisk.c:2379
+msgid "Bootable"
+msgstr "Bootable"
+
+#: fdisk/cfdisk.c:2379
+msgid "Toggle bootable flag of the current partition"
+msgstr "Cambia il flag di bootabilitŕ dalla partizione corrente"
+
+#: fdisk/cfdisk.c:2380
+msgid "Delete"
+msgstr "Delete"
+
+#: fdisk/cfdisk.c:2380
+msgid "Delete the current partition"
+msgstr "Cancella la partizione corrente"
+
+#: fdisk/cfdisk.c:2381
+msgid "Geometry"
+msgstr "Geometria"
+
+#: fdisk/cfdisk.c:2381
+msgid "Change disk geometry (experts only)"
+msgstr "Cambia la geometria del disco (solo per esperti)"
+
+#: fdisk/cfdisk.c:2382
+msgid "Help"
+msgstr "Help"
+
+#: fdisk/cfdisk.c:2382
+msgid "Print help screen"
+msgstr "Stampa la schermata di aiuto"
+
+#: fdisk/cfdisk.c:2383
+msgid "Maximize"
+msgstr "Massim."
+
+#: fdisk/cfdisk.c:2383
+msgid "Maximize disk usage of the current partition (experts only)"
+msgstr "Massimizza lo spazio usato dalla partizione corrente (solo per esperti)"
+
+#: fdisk/cfdisk.c:2384
+msgid "New"
+msgstr "Nuova"
+
+#: fdisk/cfdisk.c:2384
+msgid "Create new partition from free space"
+msgstr "Crea una nuova partizione dallo spazio libero"
+
+#: fdisk/cfdisk.c:2385
+msgid "Print"
+msgstr "Print"
+
+#: fdisk/cfdisk.c:2385
+msgid "Print partition table to the screen or to a file"
+msgstr "Stampa la tabella delle partizioni sullo schermo o su un file"
+
+#: fdisk/cfdisk.c:2386
+msgid "Quit"
+msgstr "Quit"
+
+#: fdisk/cfdisk.c:2386
+msgid "Quit program without writing partition table"
+msgstr "Abbandona il programma senza scrivere la tabella delle partizioni"
+
+#: fdisk/cfdisk.c:2387
+msgid "Type"
+msgstr "Tipo"
+
+#: fdisk/cfdisk.c:2387
+msgid "Change the filesystem type (DOS, Linux, OS/2 and so on)"
+msgstr "Cambia il tipo di filesystem (DOS, Linux, OS/2 ecc...)"
+
+#: fdisk/cfdisk.c:2388
+msgid "Units"
+msgstr "Unitŕ"
+
+#: fdisk/cfdisk.c:2388
+msgid "Change units of the partition size display (MB, sect, cyl)"
+msgstr "Cambia l'unitŕ di misura usata per le dimensioni (MB, sett, cil)"
+
+#: fdisk/cfdisk.c:2389
+msgid "Write"
+msgstr "Write"
+
+#: fdisk/cfdisk.c:2389
+msgid "Write partition table to disk (this might destroy data)"
+msgstr "Scrive la tabella delle partizioni sul disco (puň distruggere dati)"
+
+#: fdisk/cfdisk.c:2542
+msgid "Copyright (C) 1994-1997 Kevin E. Martin & aeb\n"
+msgstr "Copyright (C) 1994-1997 Kevin E. Martin & aeb\n"
+
+#: fdisk/cfdisk.c:2547
+msgid ""
+"\n"
+"Usage:\n"
+msgstr "\nUso:\n"
+
+#: fdisk/cfdisk.c:2548
+msgid "Print version:\n"
+msgstr "Stampa la versione:\n"
+
+#: fdisk/cfdisk.c:2549
+#, c-format
+msgid "\t%s -v\n"
+msgstr "\t%s -v\n"
+
+#: fdisk/cfdisk.c:2550
+msgid "Print partition table:\n"
+msgstr "Stampa la tabella delle partizioni:\n"
+
+#: fdisk/cfdisk.c:2551
+#, c-format
+msgid "\t%s -P {r|s|t} [options] device\n"
+msgstr "\t%s -P {r|s|t} [opzioni] dispositivo\n"
+
+#: fdisk/cfdisk.c:2552
+msgid "Interactive use:\n"
+msgstr "Uso interattivo:\n"
+
+#: fdisk/cfdisk.c:2553
+#, c-format
+msgid "\t%s [options] device\n"
+msgstr "\t%s [opzioni] dispositivo\n"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 000000000..86f795a79
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,8416 @@
+# util-linux 2.9t
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Daisuke Yamashita <yamad@mb.infoweb.ne.jp>, 1999.
+# contains cfdisk translation by
+# Hidenobu NABETANI <nabetani@kern.phys.sci.osaka-u.ac.jp>
+msgid ""
+msgstr ""
+"Project-Id-Version: util-linux 2.9t\n"
+"POT-Creation-Date: 1999-07-08 01:31+0900\n"
+"PO-Revision-Date: 1999-07-08 01:31+09:00\n"
+"Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
+"Language-Team: japanese <japo@flatout.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=euc-jp\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: clock/cmos.c:146
+msgid "booted from MILO\n"
+msgstr "MILO ¤Ť¤éĽÖĄźĽČ¤ľ¤ě¤Ţ¤ˇ¤ż\n"
+
+#: clock/cmos.c:154
+msgid "Ruffian BCD clock\n"
+msgstr "ÍđË˝¤Ę BCD ĽŻĽíĽĂĽŻ\n"
+
+#: clock/cmos.c:170
+#, c-format
+msgid "clockport adjusted to 0x%x\n"
+msgstr "ĽŻĽíĽĂĽŻĽÝĄźĽČ¤ň 0x%x ¤Ë˝¤Ŕľ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: clock/cmos.c:180
+msgid "funky TOY!\n"
+msgstr "Ľ¤ĽŤ¤ˇ¤ż´áśń!\n"
+
+#: clock/cmos.c:234
+#, c-format
+msgid "%s: atomic %s failed for 1000 iterations!"
+msgstr "%s: ÉÔ˛ÄĘŹ¤Ę%s¤Î 1000 ˛ó¤ÎČżÉü¤ŹźşÇÔ!"
+
+#: clock/cmos.c:558
+#, c-format
+msgid "Cannot open /dev/port: %s"
+msgstr "/dev/port ¤ňłŤ¤ą¤Ţ¤ť¤ó: %s"
+
+#: clock/cmos.c:565
+msgid "I failed to get permission because I didnt try.\n"
+msgstr "ľö˛Ä¤ÎźčĆŔ¤ňťî¤ľ¤Ę¤Ť¤Ă¤ż¤Î¤ÇĄ˘ľö˛Ä¤ÎźčĆŔ¤ËźşÇÔ¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: clock/cmos.c:568
+#, c-format
+msgid "%s is unable to get I/O port access: the iopl(3) call failed.\n"
+msgstr "%s ¤Ď I/O ĽÝĄźĽČĽ˘ĽŻĽťĽš¤Ź¤Ç¤­¤Ţ¤ť¤ó: iopl(3) ĽłĄźĽë¤ËźşÇÔĄŁ\n"
+
+#: clock/cmos.c:571
+msgid "Probably you need root privileges.\n"
+msgstr "ś˛¤é¤ŻĽëĄźĽČ¸˘¸Â¤ŹÉŹÍפǤšĄŁ\n"
+
+#: clock/hwclock.c:253
+#, c-format
+msgid "Last drift adjustment done at %d seconds after 1969\n"
+msgstr "¤ş¤ě¤ÎşÇ˝Ş˝¤Ŕľ¤Ď 1969 ÇŻ°Ęšß %d ÉĂťţĹŔ¤ÇšÔ¤Ę¤ď¤ě¤Ţ¤ˇ¤ż\n"
+
+#: clock/hwclock.c:255
+#, c-format
+msgid "Last calibration done at %d seconds after 1969\n"
+msgstr "şÇ˝ŞÄ´Ŕ°¤Ď 1969 ÇŻ°Ęšß %d ÉĂťţĹŔ¤ÇšÔ¤Ę¤ď¤ě¤Ţ¤ˇ¤ż\n"
+
+#. -----------------------------------------------------------------------------
+#. Wait until the falling edge of the Hardware Clock's update flag so
+#. that any time that is read from the clock immediately after we
+#. return will be exact.
+#.
+#. The clock only has 1 second precision, so it gives the exact time only
+#. once per second, right on the falling edge of the update flag.
+#.
+#. We wait (up to one second) either blocked waiting for an rtc device
+#. or in a CPU spin loop. The former is probably not very accurate.
+#.
+#. Return *retcode_p == 0 if it worked, nonzero if it didn't.
+#.
+#. -----------------------------------------------------------------------------
+#: clock/hwclock.c:278
+msgid "Waiting for clock tick...\n"
+msgstr "ĽŻĽíĽĂĽŻĽÁĽĂĽŻ¤ňÂԤäƤ¤¤Ţ¤š...\n"
+
+#: clock/hwclock.c:282
+msgid "...got clock tick\n"
+msgstr "ĽŻĽíĽĂĽŻĽÁĽĂĽŻ¤ňźčĆŔ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: clock/hwclock.c:334
+#, c-format
+msgid "Invalid values in hardware clock: %2d/%.2d/%.2d %.2d:%.2d:%.2d\n"
+msgstr "ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤ËÉÔŔľ¤ĘĂÍ: %2d/%.2d/%.2d %.2d:%.2d:%.2d\n"
+
+#: clock/hwclock.c:343
+#, c-format
+msgid "Hw clock time : %.2d:%.2d:%.2d = %d seconds since 1969\n"
+msgstr "ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻťţšď : %.2d:%.2d:%.2d = 1969 ÇŻ°ĘÍč %d ÉĂ\n"
+
+#: clock/hwclock.c:369
+#, c-format
+msgid "Time read from Hardware Clock: %02d:%02d:%02d\n"
+msgstr "ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤Ť¤éĆÉšţ¤ó¤Ŕťţšď: %02d:%02d:%02d\n"
+
+#: clock/hwclock.c:395
+#, c-format
+msgid "Setting Hardware Clock to %.2d:%.2d:%.2d = %d seconds since 1969\n"
+msgstr "ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤ň %.2d:%.2d:%.2d ¤ËŔßÄę = 1969 ÇŻ°ĘÍč %d ÉĂ\n"
+
+#: clock/hwclock.c:401
+msgid "Clock not changed - testing only.\n"
+msgstr "ĽŻĽíĽĂĽŻ¤ňĘŃšš¤ˇ¤Ţ¤ť¤ó¤Ç¤ˇ¤ż -- ĽĆĽšĽČ¤Ŕ¤ą¤Ç¤šĄŁ\n"
+
+#: clock/hwclock.c:449
+#, c-format
+msgid ""
+"Time elapsed since reference time has been %.6f seconds.\n"
+"Delaying further to reach the next full second.\n"
+msgstr ""
+"ťţšď¤ňť˛žČ¤ˇ¤żťţĹŔ¤Ť¤é %.6f Éáвᥣ\n"
+"źĄ¤Î´°Á´¤ĘÉäޤÇĂ٤餝¤Ţ¤šĄŁ\n"
+
+#: clock/hwclock.c:473
+msgid ""
+"The Hardware Clock registers contain values that are either invalid (e.g. "
+"50th day of month) or beyond the range we can handle (e.g. Year 2095).\n"
+msgstr ""
+"ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻĽěĽ¸ĽšĽż¤Ź¤Ş¤Ť¤ˇ¤ĘĂÍ(Îă ˛żˇî50Ćü)¤Ë¤Ę¤Ă¤Ć¤¤¤ë¤ŤĄ˘\n"
+"ĘáÂŞ¤Ç¤­¤Ę¤¤ČϰϤÎĂÍ(Îă 2095ÇŻ)¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#. Address of static storage containing time string
+#. For some strange reason, ctime() is designed to include a newline
+#. character at the end. We have to remove that.
+#.
+#. Compute display value for time
+#. Cut off trailing newline
+#: clock/hwclock.c:485
+#, c-format
+msgid "%s %.6f seconds\n"
+msgstr "%s %.6f ÉĂ\n"
+
+#: clock/hwclock.c:519
+msgid "No --date option specified.\n"
+msgstr "--date ĽŞĽ×ĽˇĽçĽó¤ŹťŘÄꤾ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#. Quotation marks in date_opt would ruin the date command we construct.
+#.
+#: clock/hwclock.c:524
+msgid ""
+"The value of the --date option is not a valid date.\n"
+"In particular, it contains quotation marks.\n"
+msgstr ""
+"--date ĽŞĽ×ĽˇĽçĽó¤ÎĂͤŹŔľ¤ˇ¤¤ĆüÉդǤϤ˘¤ę¤Ţ¤ť¤óĄŁ\n"
+"Ćä˥˘ĽŻĽŠĄźĽĆĄźĽˇĽçĽóĽŢĄźĽŻ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#: clock/hwclock.c:530
+#, c-format
+msgid "Issuing date command: %s\n"
+msgstr "date ĽłĽŢĽóĽÉ¤ňČŻšÔ¤ˇ¤Ţ¤š: %s\n"
+
+#: clock/hwclock.c:534
+msgid "Unable to run 'date' program in /bin/sh shell. popen() failed"
+msgstr ""
+"/bin/sh ĽˇĽ§ĽëĽ×ĽíĽ°ĽéĽŕ¤Ç 'date' ¤ňźÂšÔ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+"popen() ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤żĄŁ"
+
+#: clock/hwclock.c:540
+#, c-format
+msgid "response from date command = %s\n"
+msgstr "date ĽłĽŢĽóĽÉ¤Ť¤é¤ÎĘÖĹú = %s\n"
+
+#: clock/hwclock.c:542
+#, c-format
+msgid ""
+"The date command issued by %s returned unexpected results.\n"
+"The command was:\n"
+" %s\n"
+"The response was:\n"
+" %s\n"
+msgstr ""
+"%s ¤Ë¤č¤Ă¤ĆČŻšÔ¤ľ¤ě¤ż date ĽłĽŢĽóĽÉ¤ĎÍ˝´ü¤ť¤Ěˇë˛Ě¤ňĘÖ¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+"¤˝¤ÎĽłĽŢĽóĽÉ¤Ď:\n"
+" %s\n"
+"¤˝¤ÎĘÖĹú¤Ď:\n"
+" %s\n"
+
+#: clock/hwclock.c:551
+#, c-format
+msgid ""
+"The date command issued by %s returnedsomething other than an integer where "
+"the convertedtime value was expected.\n"
+"The command was:\n"
+" %s\n"
+"The response was:\n"
+" %s\n"
+msgstr ""
+"%s ¤Ë¤č¤Ă¤ĆČŻšÔ¤ľ¤ě¤ż date ĽłĽŢĽóĽÉ¤ĎĄ˘ĘŃ´šťţšď¤Č¤ˇ¤Ćľá¤á¤Ć¤¤¤ëŔ°żôĂͤÎ\n"
+"¤Ť¤ď¤ę¤Ë˛ż¤ŤĘ̤Τâ¤Î¤ňĘÖ¤ˇ¤Ć¤­¤Ţ¤ˇ¤żĄŁ\n"
+"¤˝¤ÎĽłĽŢĽóĽÉ¤Ď:\n"
+" %s\n"
+"¤˝¤ÎĘÖĹú¤Ď:\n"
+" %s\n"
+
+#: clock/hwclock.c:561
+#, c-format
+msgid "date string %s equates to %d seconds since 1969.\n"
+msgstr "date ʸťúÎó %s ¤ň 1969 ÇŻ°ĘÍč %d ÉäȸŤ¤Ę¤ˇ¤Ţ¤šĄŁ\n"
+
+#: clock/hwclock.c:596
+msgid ""
+"The Hardware Clock does not contain a valid time, so we cannot set the "
+"System Time from it.\n"
+msgstr ""
+"ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤ĎĄ˘Ŕľ¤ˇ¤¤ťţšď¤ň´Ţ¤ó¤Ç¤¤¤Ę¤¤¤Î¤ÇĄ˘¤ł¤ł¤Ť¤éĆŔ¤é¤ě¤żĂͤň\n"
+"ĽˇĽšĽĆĽŕťţšď¤ËŔßÄę¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:612
+msgid "Calling settimeofday:\n"
+msgstr "settimeofday ¤ňĽłĄźĽë¤ˇ¤Ţ¤š:\n"
+
+#: clock/hwclock.c:613
+#, c-format
+msgid "\ttv.tv_sec = %ld, tv.tv_usec = %ld\n"
+msgstr "\ttv.tv_sec = %ld, tv.tv_usec = %ld\n"
+
+#: clock/hwclock.c:615
+#, c-format
+msgid "\ttz.tz_minuteswest = %ld\n"
+msgstr "\ttz.tz_minuteswest = %ld\n"
+
+#: clock/hwclock.c:618
+msgid "Not setting system clock because running in test mode.\n"
+msgstr "ĽĆĽšĽČĽâĄźĽÉ¤ÇĆ°şî¤ˇ¤Ć¤¤¤ë¤ż¤áĄ˘ĽˇĽšĽĆĽŕĽŻĽíĽĂĽŻ¤ňŔßÄꤡ¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:630
+msgid "Must be superuser to set system clock.\n"
+msgstr "ĽˇĽšĽĆĽŕĽŻĽíĽĂĽŻ¤ňŔßÄꤚ¤ë¤Ë¤ĎĄ˘ĽšĄźĽŃĄźĽćĄźĽś¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:632
+msgid "settimeofday() failed"
+msgstr "settimeofday() ĽłĄźĽë¤ËźşÇÔ"
+
+#: clock/hwclock.c:665
+msgid ""
+"Not adjusting drift factor because the Hardware Clock previously contained "
+"garbage.\n"
+msgstr ""
+"ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤Ë°ĘÁ°¤ÎĽ´Ľß¤Ź´Ţ¤Ţ¤ě¤Ć¤Ş¤ęĄ˘¤ş¤ě¤ň˝¤Ŕľ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:669
+msgid ""
+"Not adjusting drift factor because it has been less than a day since the "
+"last calibration.\n"
+msgstr "Á°˛ó¤ÎÄ´Ŕ°°ĘÍ襢žŻ¤Ę¤Ż¤Č¤â°ěĆüˇĐ˛á¤ˇ¤Ę¤¤¤ČĄ˘¤ş¤ě¤ň˝¤Ŕľ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:678
+#, c-format
+msgid ""
+"Clock drifted %d seconds in the past %d seconds in spite of a drift factor "
+"of %f seconds/day.\n"
+"Adjusting drift factor by %f seconds/day\n"
+msgstr ""
+"˛áľî %2$d Éäδ֤˥˘°ěĆü¤˘¤ż¤ę %3$f É交餡¤Ć¤¤¤ë¤Î¤Ç¤š¤ŹĄ˘ĽŻĽíĽĂĽŻ¤Ź %1$d "
+"ÉĂ\n"
+"¤ş¤ě¤Ţ¤ˇ¤żĄŁ°ěĆü¤˘¤ż¤ę %4$f É交ě¤ň˝¤Ŕľ¤ˇ¤Ţ¤š\n"
+
+#: clock/hwclock.c:729
+#, c-format
+msgid "Time since last adjustment is %d seconds\n"
+msgstr "şÇ˝Ş˝¤Ŕľťţšď¤Ť¤é %d ÉäǤš\n"
+
+#: clock/hwclock.c:731
+#, c-format
+msgid "Need to insert %d seconds and refer time back %.6f seconds ago\n"
+msgstr "%d ÉäÎÁŢĆţ¤ČĄ˘%.6f ÉĂÁ°¤Îťţšď¤Îť˛žČ¤ŹÉŹÍפǤš\n"
+
+#: clock/hwclock.c:759
+msgid "Not updating adjtime file because of testing mode.\n"
+msgstr "ĽĆĽšĽČĽâĄźĽÉ¤ÇĆ°şî¤ˇ¤Ć¤¤¤ë¤ż¤á adjtime ĽŐĽĄĽ¤Ľë¤ňššżˇ¤ˇ¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:760
+#, c-format
+msgid ""
+"Would have written the following to %s:\n"
+"%s"
+msgstr ""
+"ËÜÍč¤Ę¤é¤Đ %s ¤Ë°Ę˛ź¤Î¤č¤Ś¤Ë˝ń¤­šţ¤Ţ¤ě¤ë¤Ď¤ş¤Ç¤ˇ¤ż:\n"
+"%s"
+
+#: clock/hwclock.c:784
+msgid "Drift adjustment parameters not updated.\n"
+msgstr "¤ş¤ě¤Î˝¤ŔľĂͤϚšżˇ¤ľ¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤żĄŁ\n"
+
+#: clock/hwclock.c:825
+msgid ""
+"The Hardware Clock does not contain a valid time, so we cannot adjust it.\n"
+msgstr ""
+"ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤ĎĄ˘Ŕľžď¤Ęťţšď¤ň´Ţ¤ó¤Ç¤¤¤Ę¤¤¤Î¤ÇĄ˘¤ł¤ě¤ň˝¤Ŕľ¤Ç¤­¤Ţ¤ť¤óĄŁ"
+"\n"
+
+#: clock/hwclock.c:849
+msgid "Needed adjustment is less than one second, so not setting clock.\n"
+msgstr "ÉŹÍפʽ¤Ŕľ¤Ź°ěÉĂ̤Ëţ¤Ę¤Î¤ÇĄ˘ĽŻĽíĽĂĽŻ¤ňŔßÄꤡ¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:875
+#, c-format
+msgid "Using %s.\n"
+msgstr "%s ¤ňťČ¤¤¤Ţ¤šĄŁ\n"
+
+#: clock/hwclock.c:877
+msgid "No usable clock interface found.\n"
+msgstr "ÍřÍѲÄÇ˝¤ĘĽŻĽíĽĂĽŻĽ¤ĽóĽżĄźĽŐĽ§Ľ¤Ľš¤Ź¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:965
+msgid "Unable to set system clock.\n"
+msgstr "ĽˇĽšĽĆĽŕĽŻĽíĽĂĽŻ¤ňŔßÄę¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:994
+msgid ""
+"The kernel keeps an epoch value for the Hardware Clock only on an Alpha "
+"machine.\n"
+"This copy of hwclock was built for a machine other than Alpha\n"
+"(and thus is presumably not running on an Alpha now). No action taken.\n"
+msgstr ""
+"ĽŤĄźĽÍĽë¤ŹĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤Î¤ż¤á¤ÎĽ¨ĽÝĽĂĽŻĂͤňĘÝťý¤Ç¤­¤ë¤Î¤Ď Alpha "
+"ĽŢĽˇĽó\n"
+"¤Î¤ß¤Ç¤šĄŁ\n"
+"¤ł¤Î hwclock ¤ÎĘŁŔ˝¤Ď Alpha °Ęł°¤ÎĽŢĽˇĽó¤ÇĽÓĽëĽÉ¤ľ¤ě¤Ţ¤ˇ¤ż\n"
+"(¤˝¤ˇ¤ĆĹöÁłĄ˘¸˝şß Alpha žĺ¤ÇźÂšÔ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó)ĄŁźÂšÔ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:1003
+msgid "Unable to get the epoch value from the kernel.\n"
+msgstr "ĽŤĄźĽÍĽë¤Ť¤éĽ¨ĽÝĽĂĽŻĂͤňźčĆŔ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:1005
+#, c-format
+msgid "Kernel is assuming an epoch value of %lu\n"
+msgstr "ĽŤĄźĽÍĽë¤ĎĽ¨ĽÝĽĂĽŻĂͤň %lu ¤ČÁŰÄꤡ¤Ć¤¤¤Ţ¤š\n"
+
+#: clock/hwclock.c:1008
+msgid ""
+"To set the epoch value, you must use the 'epoch' option to tell to what "
+"value to set it.\n"
+msgstr ""
+"Ľ¨ĽÝĽĂĽŻĂͤňŔßÄꤚ¤ë¤ż¤á¤Ë¤ĎĄ˘˛ż¤ÎĂͤňŔßÄꤚ¤ë¤Ť¤ňĂΤ餝¤ë¤ż¤á¤Ë 'epoch'\n"
+"ĽŞĽ×ĽˇĽçĽó¤ňťČ¤ď¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:1011
+#, c-format
+msgid "Not setting the epoch to %d - testing only.\n"
+msgstr "Ľ¨ĽÝĽĂĽŻ¤ň %d ¤ËŔßÄꤡ¤Ţ¤ť¤ó -- ĽĆĽšĽČ¤Ŕ¤ą¤Ç¤šĄŁ\n"
+
+#: clock/hwclock.c:1014
+msgid "Unable to set the epoch value in the kernel.\n"
+msgstr "ĽŤĄźĽÍĽë¤ËĽ¨ĽÝĽĂĽŻĂͤňŔßÄꤚ¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤ť¤ó¤Ç¤ˇ¤żĄŁ\n"
+
+#: clock/hwclock.c:1094
+#, c-format
+msgid "%s takes no non-option arguments. You supplied %d.\n"
+msgstr "%s ¤Ď˛ż¤é¤Ť¤ÎĽŞĽ×ĽˇĽçĽó°úżô¤ňźč¤ę¤Ţ¤šĄŁ¤˘¤Ę¤ż¤Ď %d ¸ÄÍż¤¨¤Ţ¤ˇ¤żĄŁ\n"
+
+#: clock/hwclock.c:1102
+msgid ""
+"You have specified multiple function options.\n"
+"You can only perform one function at a time.\n"
+msgstr ""
+"¤˘¤Ę¤ż¤ĎľĄÇ˝ĽŞĽ×ĽˇĽçĽó¤ňĘŁżô¸ÄťŘÄꤡ¤Ţ¤ˇ¤żĄŁ\n"
+"°ěĹ٤˰ě¤Ä¤ÎľĄÇ˝¤Î¤ßšÔ¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ\n"
+
+#: clock/hwclock.c:1115
+msgid "No usable set-to time. Cannot set clock.\n"
+msgstr "Í­¸ú¤ĘŔßÄęťţšď¤Ź¤˘¤ę¤Ţ¤ť¤óĄŁĽŻĽíĽĂĽŻ¤ňŔßÄę¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:1130
+msgid "Sorry, only the superuser can change the Hardware Clock.\n"
+msgstr ""
+"ťÄÇ°¤Ę¤Ź¤éĄ˘ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤ÎĘŃšš¤ĎĽšĄźĽŃĄźĽćĄźĽś¤Ç¤ˇ¤ŤšÔ¤Ę¤¨¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/hwclock.c:1134
+msgid ""
+"Sorry, only the superuser can change the Hardware Clock epoch in the "
+"kernel.\n"
+msgstr ""
+"ťÄÇ°¤Ę¤Ź¤éĄ˘ĽŤĄźĽÍĽëĆâ¤ÎĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤ÎĽ¨ĽÝĽĂĽŻĂͤňĘŃšš¤Ç¤­¤ë¤Î¤ĎĄ˘\n"
+"ĽšĄźĽŃĄźĽćĄźĽś¤Ŕ¤ą¤Ç¤šĄŁ\n"
+
+#: clock/hwclock.c:1150
+msgid ""
+"Cannot access the Hardware Clock via any known method. Use --debug option "
+"to see the details of our search for an access method.\n"
+msgstr ""
+"Ľ×ĽíĽ°ĽéĽŕ¤ŹĂΤë¸Â¤ę¤ÎĘýËĄ¤Ç¤ĎĄ˘ĽĎĄźĽÉĽŚĽ§Ľ˘ĽŻĽíĽĂĽŻ¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+"--debug ĽŞĽ×ĽˇĽçĽó¤ÇĽ˘ĽŻĽťĽšĘýËĄ¸Ąş÷¤ÎžÜşŮ¤Ë¤Ä¤¤¤Ć¸Ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: clock/hwclock.c:1164
+#, c-format
+msgid "%s: %s, errno=%d: %s.\n"
+msgstr "%s: %s, Ľ¨ĽéĄźČÖšć=%d: %s.\n"
+
+#: clock/kd.c:40
+msgid "Waiting in loop for time from KDGHWCLK to change\n"
+msgstr "KDGHWCLK ¤Ť¤éĘŃšš¤Î¤ż¤á¤Îťţšď¤ňźčĆŔ¤š¤ëĽëĄźĽ×Ăć¤Ç¤š\n"
+
+#: clock/kd.c:43
+msgid "KDGHWCLK ioctl to read time failed"
+msgstr "KDGHWCLK ¤ÎťţšďĆɤߟč¤ę¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/kd.c:50 clock/rtc.c:144
+msgid "Timed out waiting for time change.\n"
+msgstr "ťţšďĘŃššÂÔ¤Á¤ŹĽżĽ¤ĽŕĽ˘ĽŚĽČ¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: clock/kd.c:54
+msgid "KDGHWCLK ioctl to read time failed in loop"
+msgstr "ťţšďĆɤߚţ¤ß¤Î¤ż¤á¤Î KDGHWCLK ioctl ¤ŹĽëĄźĽ×Ćâ¤ÇźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/kd.c:76
+msgid "ioctl() failed to read time from /dev/tty1"
+msgstr "/dev/tty1 ¤Ť¤éťţšď¤ňĆÉšţ¤ŕ¤ż¤á¤Î ioctl() ¤ËźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/kd.c:112
+msgid "ioctl() to open /dev/tty1 failed"
+msgstr "/dev/tty1 ¤ňĽŞĄźĽ×Ľó¤š¤ë¤ż¤á¤Î ioctl ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/kd.c:142
+msgid "KDGHWCLK ioctl failed"
+msgstr "KDGHWCLK ioctl ¤ËźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/kd.c:146
+msgid "Can't open /dev/tty1"
+msgstr "/dev/tty1 ¤ňłŤ¤ą¤Ţ¤ť¤ó"
+
+#: clock/rtc.c:98
+msgid "ioctl() to /dev/rtc to read the time failed.\n"
+msgstr "ťţšďĆɤߚţ¤ß¤Î¤ż¤á¤Î /dev/rtc ¤Ř¤Î ioctl() ¤ËźşÇÔ¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: clock/rtc.c:129
+msgid "Waiting in loop for time from /dev/rtc to change\n"
+msgstr "/dev/rtc ¤Ť¤éťţšď¤ňĘŃšš¤š¤ë¤ż¤á¤ÎĽëĄźĽ×Ăć¤Ç¤š\n"
+
+#: clock/rtc.c:165 clock/rtc.c:222
+msgid "open() of /dev/rtc failed"
+msgstr "/dev/rtc ¤Ř¤Î open() ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#. This rtc device doesn't have interrupt functions. This is typical
+#. on an Alpha, where the Hardware Clock interrupts are used by the
+#. kernel for the system clock, so aren't at the user's disposal.
+#.
+#: clock/rtc.c:182
+msgid "/dev/rtc does not have interrupt functions. "
+msgstr "/dev/rtc ¤Ďłä¤ęšţ¤ßľĄÇ˝¤ňťý¤Ă¤Ć¤¤¤Ţ¤ť¤óĄŁ "
+
+#: clock/rtc.c:191
+msgid "read() to /dev/rtc to wait for clock tick failed"
+msgstr "ĽŻĽíĽĂĽŻĽÁĽĂĽŻ¤ňÂԤĤż¤á¤Î /dev/rtc ¤Ř¤Î read() ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/rtc.c:199
+msgid "ioctl() to /dev/rtc to turn off update interrupts failed"
+msgstr "łä¤ęšţ¤ßššżˇ¤ňĽŞĽŐ¤Ë¤š¤ë¤ż¤á¤Î /dev/rtc ¤Ř¤Î ioctl() ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/rtc.c:202
+msgid "ioctl() to /dev/rtc to turn on update interrupts failed unexpectedly"
+msgstr ""
+"łä¤ęšţ¤ßššżˇ¤ňĽŞĽó¤Ë¤š¤ë¤ż¤á¤Î /dev/rtc ¤Ř¤Î ioctl() "
+"¤ŹÍ˝´ü¤ť¤ĚźşÇÔ¤Ë˝Ş¤ď¤ę¤Ţ¤ˇ¤ż"
+
+#: clock/rtc.c:245 clock/rtc.c:324 clock/rtc.c:369
+msgid "Unable to open /dev/rtc"
+msgstr "/dev/rtc ¤ňĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó"
+
+#: clock/rtc.c:268
+msgid "ioctl() to /dev/rtc to set the time failed.\n"
+msgstr "ťţšďŔßÄę¤Î¤ż¤á¤Î /dev/rtc ¤Ř¤Î ioctl() ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: clock/rtc.c:272
+#, c-format
+msgid "ioctl(%s) was successful.\n"
+msgstr "ioctl(%s) ¤ËŔŽ¸ů¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: clock/rtc.c:302
+msgid "Open of /dev/rtc failed"
+msgstr "/dev/rtc ¤ÎĽŞĄźĽ×Ľó¤ËźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/rtc.c:320 clock/rtc.c:365
+msgid ""
+"To manipulate the epoch value in the kernel, we must access the Linux 'rtc' "
+"device driver via the device special file /dev/rtc. This file does not "
+"exist on this system.\n"
+msgstr ""
+"ĽŤĄźĽÍĽëĆâ¤ÎĽ¨ĽÝĽĂĽŻĂͤňťť˝Đ¤š¤ë¤Ë¤ĎĄ˘ĽšĽÚĽˇĽăĽëĽŐĽĄĽ¤Ľë /dev/rtc ¤ňÄ̤¸¤Ć\n"
+"Linux ¤Î 'rtc' ĽÇĽĐĽ¤ĽšĽÉĽéĽ¤ĽĐ¤ËĽ˘ĽŻĽťĽš¤š¤ëÉŹÍפŹ¤˘¤ę¤Ţ¤šĄŁ¤ˇ¤Ť¤ˇĄ˘¤ł¤Î\n"
+"ĽŐĽĄĽ¤Ľë¤ŹĽˇĽšĽĆĽŕ¤Ë¸şß¤ˇ¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/rtc.c:331
+msgid "ioctl(RTC_EPOCH_READ) to /dev/rtc failed"
+msgstr "/dev/rtc ¤Ř¤Î ioctl(RTC_EPOCH_READ) ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/rtc.c:337
+#, c-format
+msgid "we have read epoch %ld from /dev/rtc with RTC_EPOCH_READ ioctl.\n"
+msgstr ""
+"/dev/rtc ¤Ť¤é RTC_EPOCH_READ ioctl ¤Ë¤č¤Ă¤ĆĽ¨ĽÝĽĂĽŻ %ld ¤ňĆɤߟč¤ę¤Ţ¤ˇ¤żĄŁ\n"
+
+#. kernel would not accept this epoch value
+#. Hmm - bad habit, deciding not to do what the user asks
+#. just because one believes that the kernel might not like it.
+#: clock/rtc.c:357
+#, c-format
+msgid "The epoch value may not be less than 1900. You requested %ld\n"
+msgstr ""
+"Ľ¨ĽÝĽĂĽŻĂÍ¤Ď 1900 ÇŻ°ĘÁ°¤Ç¤Ď¤˘¤ęĆŔ¤Ţ¤ť¤óĄŁ¤˘¤Ę¤ż¤Ď %ld ¤ňÍ׾ᤡ¤Ţ¤ˇ¤ż\n"
+
+#: clock/rtc.c:374
+#, c-format
+msgid "setting epoch to %ld with RTC_EPOCH_SET ioctl to /dev/rtc.\n"
+msgstr ""
+"/dev/rtc ¤Ť¤é RTC_EPOCH_READ ioctl ¤Ë¤č¤Ă¤ĆĽ¨ĽÝĽĂĽŻ %ld ¤ňĆɤߟč¤ę¤Ţ¤ˇ¤żĄŁ\n"
+
+#: clock/rtc.c:379
+msgid ""
+"The kernel device driver for /dev/rtc does not have the RTC_EPOCH_SET "
+"ioctl.\n"
+msgstr "/dev/rtc ¤ÎĽŤĄźĽÍĽëĽÉĽéĽ¤ĽĐ¤Ď RTC_EPOCH_SET ioctl ¤ňťý¤Ă¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: clock/rtc.c:382
+msgid "ioctl(RTC_EPOCH_SET) to /dev/rtc failed"
+msgstr "/dev/rtc ¤Ř¤Î ioctl(RTC_EPOCH_SET) ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: clock/shhopt.c:255 clock/shhopt.c:281
+#, c-format
+msgid "invalid number `%s'\n"
+msgstr "ÉÔŔľ¤ĘĂÍ `%s'\n"
+
+#: clock/shhopt.c:258 clock/shhopt.c:284
+#, c-format
+msgid "number `%s' to `%s' out of range\n"
+msgstr "ĂÍ `%s' ¤Ď `%s' ¤Ë¤Č¤Ă¤ĆČĎ°Ďł°¤Ç¤š\n"
+
+#: clock/shhopt.c:398
+#, c-format
+msgid "unrecognized option `%s'\n"
+msgstr "ǧźą¤Ç¤­¤Ę¤¤ĽŞĽ×ĽˇĽçĽó `%s' ¤Ç¤š\n"
+
+#: clock/shhopt.c:411 clock/shhopt.c:449
+#, c-format
+msgid "option `%s' requires an argument\n"
+msgstr "ĽŞĽ×ĽˇĽçĽó `%s' ¤Ď°úżô¤ňÍ׾ᤡ¤Ţ¤š\n"
+
+#: clock/shhopt.c:417
+#, c-format
+msgid "option `%s' doesn't allow an argument\n"
+msgstr "ĽŞĽ×ĽˇĽçĽó `%s' ¤Ď°úżô¤ňźő¤ąÉŐ¤ą¤Ţ¤ť¤ó\n"
+
+#: clock/shhopt.c:439
+#, c-format
+msgid "unrecognized option `-%c'\n"
+msgstr "ǧźą¤Ç¤­¤Ę¤¤ĽŞĽ×ĽˇĽçĽó `-%c' ¤Ç¤š\n"
+
+#: disk-utils/fdformat.c:33
+msgid "Formatting ... "
+msgstr "ĽŐĽŠĄźĽŢĽĂĽČ¤ˇ¤Ţ¤š ... "
+
+#: disk-utils/fdformat.c:51 disk-utils/fdformat.c:86
+msgid "done\n"
+msgstr "˝ŞÎť\n"
+
+#: disk-utils/fdformat.c:62
+msgid "Verifying ... "
+msgstr "žČšç¤ˇ¤Ţ¤š ... "
+
+#: disk-utils/fdformat.c:73
+msgid "Read: "
+msgstr "ĆÉšţ: "
+
+#: disk-utils/fdformat.c:75
+#, c-format
+msgid "Problem reading cylinder %d, expected %d, read %d\n"
+msgstr "ĆÉšţ¤ßĂć¤ËĚäÂęČŻŔ¸Ą˘ĽˇĽęĽóĽŔ %d, %d ¤ÎČŚ¤Ç¤š¤Ź %d ¤ňĆÉšţ¤ß¤Ţ¤ˇ¤ż\n"
+
+#: disk-utils/fdformat.c:81
+#, c-format
+msgid ""
+"bad data in cyl %d\n"
+"Continuing ... "
+msgstr ""
+"ĽˇĽęĽóĽŔ %d ¤ËÉÔŔľ¤ĘĽÇĄźĽż\n"
+"Âł¤ą¤Ţ¤š ... "
+
+#: disk-utils/fdformat.c:96
+#, c-format
+msgid "usage: %s [ -n ] device\n"
+msgstr "ťČ¤¤Ęý: %s [ -n ] ĽÇĽĐĽ¤Ľš\n"
+
+#: disk-utils/fdformat.c:122
+#, c-format
+msgid "%s: not a floppy device\n"
+msgstr "%s: ĽŐĽíĽĂĽÔĄźĽÇĽĐĽ¤Ľš¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: disk-utils/fdformat.c:128
+msgid "Could not determine current format type"
+msgstr "¸˝şß¤ÎĽŐĽŠĄźĽŢĽĂĽČĽżĽ¤Ľ×¤ňĆĂÄę¤Ç¤­¤Ţ¤ť¤ó"
+
+#: disk-utils/fdformat.c:129
+#, c-format
+msgid "%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"
+msgstr "%sĚĚ, %d ĽČĽéĽĂĽŻ, %d ĽťĽŻĽż/ĽČĽéĽĂĽŻĄŁšçˇ×ÍĆÎĚ %d kBĄŁ\n"
+
+#: disk-utils/fdformat.c:130
+msgid "Double"
+msgstr "Ξ"
+
+#: disk-utils/fdformat.c:130
+msgid "Single"
+msgstr "ĘŇ"
+
+#: disk-utils/fsck.minix.c:288
+#, c-format
+msgid "%s is mounted.\t "
+msgstr "%s ¤ĎĽŢĽŚĽóĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤š\t "
+
+#: disk-utils/fsck.minix.c:290
+msgid "Do you really want to continue"
+msgstr "ËÜĹö¤ËÂł¤ą¤Ţ¤š¤Ť"
+
+#: disk-utils/fsck.minix.c:294
+msgid "check aborted.\n"
+msgstr "ĽÁĽ§ĽĂĽŻ¤ňĂćťß¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: disk-utils/fsck.minix.c:311 disk-utils/fsck.minix.c:331
+msgid "Zone nr < FIRSTZONE in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:313 disk-utils/fsck.minix.c:333
+msgid "Zone nr >= ZONES in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:318 disk-utils/fsck.minix.c:338
+msgid "Remove block"
+msgstr "ĽÖĽíĽĂĽŻ¤Îşď˝ü"
+
+#: disk-utils/fsck.minix.c:356
+msgid "Read error: unable to seek to block in file '"
+msgstr "ĆÉšţĽ¨ĽéĄź: ĽŐĽĄĽ¤ĽëĂć¤ÎĽÖĽíĽĂĽŻ¤Ë°ÜĆ°¤Ç¤­¤Ţ¤ť¤ó '"
+
+#: disk-utils/fsck.minix.c:362
+msgid "Read error: bad block in file '"
+msgstr "ĆÉšţĽ¨ĽéĄź: ĽŐĽĄĽ¤Ľë¤ËÉÔŔľĽÖĽíĽĂĽŻ¤Ź¤˘¤ę¤Ţ¤š '"
+
+#: disk-utils/fsck.minix.c:378
+msgid ""
+"Internal error: trying to write bad block\n"
+"Write request ignored\n"
+msgstr ""
+"ĆâÉôĽ¨ĽéĄź: ÉÔŔľĽÖĽíĽĂĽŻ¤Ř¤Î˝ń¤­šţ¤ß\n"
+"˝ń¤­šţ¤ßÍ׾á¤ĎĚľťë¤ľ¤ě¤Ţ¤š\n"
+
+#: disk-utils/fsck.minix.c:386
+msgid "Write error: bad block in file '"
+msgstr "˝ń¤­šţ¤ßĽ¨ĽéĄź: ĽŐĽĄĽ¤ĽëĂć¤ËÉÔŔľĽÖĽíĽĂĽŻ¤Ź¤˘¤ę¤Ţ¤š '"
+
+#: disk-utils/fsck.minix.c:607
+msgid "Warning: Firstzone != Norm_firstzone\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:612 disk-utils/mkfs.minix.c:528
+#, c-format
+msgid "%ld inodes\n"
+msgstr "inode żô %ld\n"
+
+#: disk-utils/fsck.minix.c:613 disk-utils/mkfs.minix.c:529
+#, c-format
+msgid "%ld blocks\n"
+msgstr "ĽÖĽíĽĂĽŻżô %ld\n"
+
+#: disk-utils/fsck.minix.c:614 disk-utils/mkfs.minix.c:530
+#, c-format
+msgid "Firstdatazone=%ld (%ld)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:615 disk-utils/mkfs.minix.c:531
+#, c-format
+msgid "Zonesize=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:616
+#, c-format
+msgid "Maxsize=%ld\n"
+msgstr "şÇÂ缾Ľ¤Ľş=%ld\n"
+
+#: disk-utils/fsck.minix.c:617
+#, c-format
+msgid "Filesystem state=%d\n"
+msgstr "ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕžőÂÖ=%d\n"
+
+#: disk-utils/fsck.minix.c:618
+#, c-format
+msgid ""
+"namelen=%d\n"
+"\n"
+msgstr ""
+"ĚžÁ°¤ÎÄš¤ľ=%d\n"
+"\n"
+
+#: disk-utils/fsck.minix.c:632 disk-utils/fsck.minix.c:684
+#, c-format
+msgid "Inode %d marked not used, but used for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:637 disk-utils/fsck.minix.c:688
+msgid "Mark in use"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:659 disk-utils/fsck.minix.c:708
+#, c-format
+msgid " has mode %05o\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:665 disk-utils/fsck.minix.c:713
+msgid "Warning: inode count too big.\n"
+msgstr "ˇŮšđ: inode żô¤ŹÂ礭¤š¤Ž¤Ţ¤šĄŁ\n"
+
+#: disk-utils/fsck.minix.c:749 disk-utils/fsck.minix.c:783
+msgid "Block has been used before. Now in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:752 disk-utils/fsck.minix.c:786
+#: disk-utils/fsck.minix.c:1114 disk-utils/fsck.minix.c:1123
+#: disk-utils/fsck.minix.c:1167 disk-utils/fsck.minix.c:1176
+msgid "Clear"
+msgstr "ĽŻĽęĽ˘"
+
+#: disk-utils/fsck.minix.c:761 disk-utils/fsck.minix.c:795
+#, c-format
+msgid "Block %d in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:763 disk-utils/fsck.minix.c:797
+msgid "' is marked not in use."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:764 disk-utils/fsck.minix.c:798
+msgid "Correct"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:948 disk-utils/fsck.minix.c:1012
+msgid " contains a bad inode number for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:950 disk-utils/fsck.minix.c:1014
+msgid " Remove"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:964 disk-utils/fsck.minix.c:1028
+msgid ": bad directory: '.' isn't first\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:971 disk-utils/fsck.minix.c:1036
+msgid ": bad directory: '..' isn't second\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1071
+msgid ": bad directory: size<32"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1090
+msgid ": bad directory: size < 32"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1113 disk-utils/fsck.minix.c:1166
+#, c-format
+msgid "Inode %d mode not cleared."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1122 disk-utils/fsck.minix.c:1175
+#, c-format
+msgid "Inode %d not used, marked used in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1128 disk-utils/fsck.minix.c:1181
+#, c-format
+msgid "Inode %d used, marked unused in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1134 disk-utils/fsck.minix.c:1186
+#, c-format
+msgid "Inode %d (mode = %07o), i_nlinks=%d, counted=%d."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1136 disk-utils/fsck.minix.c:1188
+msgid "Set i_nlinks to count"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1148 disk-utils/fsck.minix.c:1200
+#, c-format
+msgid "Zone %d: marked in use, no file uses it."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1149 disk-utils/fsck.minix.c:1201
+msgid "Unmark"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1153 disk-utils/fsck.minix.c:1205
+#, c-format
+msgid "Zone %d: %sin use, counted=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1154 disk-utils/fsck.minix.c:1206
+msgid "not "
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1182
+msgid "Set"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1296
+#, c-format
+msgid "%s is clean, no check.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1300
+#, c-format
+msgid "Forcing filesystem check on %s.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1302
+#, c-format
+msgid "Filesystem on %s is dirty, needs checking.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1331
+msgid ""
+"\n"
+"%6ld inodes used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1336
+msgid "%6ld zones used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1338
+#, c-format
+msgid ""
+"\n"
+"%6d regular files\n"
+"%6d directories\n"
+"%6d character device files\n"
+"%6d block device files\n"
+"%6d links\n"
+"%6d symbolic links\n"
+"------\n"
+"%6d files\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1351
+msgid ""
+"----------------------------\n"
+"FILE SYSTEM HAS BEEN CHANGED\n"
+"----------------------------\n"
+msgstr ""
+
+#: disk-utils/mkfs.c:66
+msgid "Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n"
+msgstr ""
+"ťČ¤¤Ęý: mkfs [-V] [-t ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕˇż] [fs ĽŞĽ×ĽˇĽçĽó] ĽÇĽĐĽ¤Ľš [ĽľĽ¤Ľş]\n"
+
+#: disk-utils/mkfs.c:80 fdisk/cfdisk.c:328 getopt-1.0.3b/getopt.c:85
+#: getopt-1.0.3b/getopt.c:95 login-utils/wall.c:221 mount/sundries.c:195
+#, c-format
+msgid "%s: Out of memory!\n"
+msgstr "%s: ĽáĽâĽę¤ŹÂ­¤ę¤Ţ¤ť¤óĄŞ\n"
+
+#: disk-utils/mkfs.c:89
+msgid "mkfs version "
+msgstr "mkfs ĽĐĄźĽ¸ĽçĽó "
+
+#: disk-utils/mkfs.minix.c:186
+#, c-format
+msgid "Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
+msgstr "ťČ¤¤Ęý: %s [-c | -l ĽŐĽĄĽ¤ĽëĚž] [-nXX] [-iXX] /dev/name [ĽÖĽíĽĂĽŻżô]\n"
+
+#: disk-utils/mkfs.minix.c:210
+#, c-format
+msgid "%s is mounted; will not make a filesystem here!"
+msgstr "%s ¤ĎĽŢĽŚĽóĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤š -- ¤ł¤ł¤Ë¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ň¤Ä¤Ż¤ě¤Ţ¤ť¤óĄŞ"
+
+#: disk-utils/mkfs.minix.c:271
+msgid "seek to boot block failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:273
+msgid "unable to clear boot sector"
+msgstr "ĽÖĄźĽČĽťĽŻĽż¤ňĽŻĽęĽ˘¤Ç¤­¤Ţ¤ť¤ó"
+
+#: disk-utils/mkfs.minix.c:275
+msgid "seek failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:277
+msgid "unable to write super-block"
+msgstr "ĽšĄźĽŃĄźĽÖĽíĽĂĽŻ¤Î˝ń¤­šţ¤ß¤Ź¤Ç¤­¤Ţ¤ť¤ó"
+
+#: disk-utils/mkfs.minix.c:279
+msgid "unable to write inode map"
+msgstr "inode ĽŢĽĂĽ×¤Î˝ń¤­šţ¤ß¤Ź¤Ç¤­¤Ţ¤ť¤ó"
+
+#: disk-utils/mkfs.minix.c:281
+msgid "unable to write zone map"
+msgstr "ĽžĄźĽóĽŢĽĂĽ×¤Î˝ń¤­šţ¤ß¤Ź¤Ç¤­¤Ţ¤ť¤ó"
+
+#: disk-utils/mkfs.minix.c:283
+msgid "unable to write inodes"
+msgstr "inode ¤Î˝ń¤­šţ¤ß¤Ź¤Ç¤­¤Ţ¤ť¤ó"
+
+#: disk-utils/mkfs.minix.c:290
+msgid "seek failed in write_block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:292
+msgid "write failed in write_block"
+msgstr ""
+
+#. Could make triple indirect block here
+#: disk-utils/mkfs.minix.c:300 disk-utils/mkfs.minix.c:374
+#: disk-utils/mkfs.minix.c:425
+msgid "too many bad blocks"
+msgstr "ÉÔŔľĽÖĽíĽĂĽŻ¤ŹÂż¤š¤Ž¤Ţ¤š"
+
+#: disk-utils/mkfs.minix.c:308
+msgid "not enough good blocks"
+msgstr "Ŕľžď¤ĘĽÖĽíĽĂĽŻ¤ŹÉÔ˝˝ĘŹ¤Ç¤š"
+
+#: disk-utils/mkfs.minix.c:517
+msgid "unable to allocate buffers for maps"
+msgstr "ĽŢĽĂĽ×ĽĐĽĂĽŐĽĄ¤ňłÎĘݤǤ­¤Ţ¤ť¤ó"
+
+#: disk-utils/mkfs.minix.c:526
+msgid "unable to allocate buffer for inodes"
+msgstr "inode ĽĐĽĂĽŐĽĄ¤ÎłÎĘݤŹ¤Ç¤­¤Ţ¤ť¤óĄŁ"
+
+#: disk-utils/mkfs.minix.c:532
+#, c-format
+msgid ""
+"Maxsize=%ld\n"
+"\n"
+msgstr ""
+"şÇÂ缾Ľ¤Ľş=%ld\n"
+"\n"
+
+#: disk-utils/mkfs.minix.c:546
+msgid "seek failed during testing of blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:554
+msgid "Weird values in do_check: probably bugs\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:585
+msgid "seek failed in check_blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:594
+msgid "bad blocks before data-area: cannot make fs"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:600 disk-utils/mkfs.minix.c:622
+#, c-format
+msgid "%d bad blocks\n"
+msgstr "ÉÔŔľĽÖĽíĽĂĽŻżô %d\n"
+
+#: disk-utils/mkfs.minix.c:602 disk-utils/mkfs.minix.c:624
+msgid "one bad block\n"
+msgstr "ÉÔŔľĽÖĽíĽĂĽŻżô 1\n"
+
+#: disk-utils/mkfs.minix.c:614
+msgid "can't open file of bad blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:637 disk-utils/mkfs.minix.c:640
+msgid "bad inode size"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:669
+#, c-format
+msgid "%s: not compiled with minix v2 support\n"
+msgstr "%s: minix v2 ¤ÎĽľĽÝĄźĽČ¤Ä¤­¤ÇĽłĽóĽŃĽ¤Ľë¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: disk-utils/mkfs.minix.c:685
+msgid "strtol error: number of blocks not specified"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:717
+#, c-format
+msgid "unable to open %s"
+msgstr "%s ¤ňłŤ¤ą¤Ţ¤ť¤ó"
+
+#: disk-utils/mkfs.minix.c:719
+#, c-format
+msgid "unable to stat %s"
+msgstr "%s ¤ÎžőÂÖ¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó"
+
+#: disk-utils/mkfs.minix.c:723
+#, c-format
+msgid "will not try to make filesystem on '%s'"
+msgstr ""
+
+#: disk-utils/mkswap.c:101
+#, c-format
+msgid "Assuming pages of size %d\n"
+msgstr "ĽľĽ¤Ľş %s ĽÚĄźĽ¸¤ňťî¤ˇ¤Ţ¤š\n"
+
+#: disk-utils/mkswap.c:234
+msgid "one bad page\n"
+msgstr "ÉÔŔľ¤ĘĽÚĄźĽ¸żô 1\n"
+
+#: disk-utils/mkswap.c:236
+#, c-format
+msgid "%d bad pages\n"
+msgstr "ÉÔŔľ¤ĘĽÚĄźĽ¸żô %d\n"
+
+#: disk-utils/mkswap.c:340
+#, c-format
+msgid "%s: error: Nowhere to set up swap on?\n"
+msgstr "%s: Ľ¨ĽéĄź: ĽšĽďĽĂĽ×¤ňÍ­¸ú¤ËŔßÄꤚ¤ë¤ż¤á¤Îžě˝ę¤Ź¤Ę¤¤ĄŠ\n"
+
+#: disk-utils/mkswap.c:349
+#, c-format
+msgid "%s: error: size %ld is larger than device size %d\n"
+msgstr "%s: Ľ¨ĽéĄź: ĽľĽ¤Ľş %ld ¤ŹĽÇĽĐĽ¤Ľš¤ÎĽľĽ¤Ľş %d ¤č¤ę¤âÂ礭¤¤¤Ç¤š\n"
+
+#: disk-utils/mkswap.c:367
+#, c-format
+msgid "%s: error: unknown version %d\n"
+msgstr "%s: Ľ¨ĽéĄź: ̤ĂΤμХźĽ¸ĽçĽó %d\n"
+
+#: disk-utils/mkswap.c:373
+#, c-format
+msgid "%s: error: swap area needs to be at least %ldkB\n"
+msgstr "%s: Ľ¨ĽéĄź: ĽšĽďĽĂĽ×Îΰč¤ĎžŻ¤Ę¤Ż¤Č¤â %ldkB ÉŹÍפǤš\n"
+
+#: disk-utils/mkswap.c:392
+#, c-format
+msgid "%s: warning: truncating swap area to %ldkB\n"
+msgstr "%s: ˇŮšđ: ĽšĽďĽĂĽ×Îΰč¤ň %ldkB ¤ËŔÚ¤ęľÍ¤á¤Ţ¤ˇ¤ż\n"
+
+#: disk-utils/mkswap.c:419
+#, c-format
+msgid ""
+"%s: Device '%s' contains a valid Sun disklabel.\n"
+"This probably means creating v0 swap would destroy your partition table\n"
+"No swap created. If you really want to create swap v0 on that device, use\n"
+"the -f option to force it.\n"
+msgstr ""
+"%s: ĽÇĽĐĽ¤Ľš '%s' ¤ĎŔľžď¤Ę Sun ĽÇĽŁĽšĽŻĽéĽŮĽë¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤šĄŁ\n"
+"¤ł¤ě¤Ď¤Ş¤˝¤é¤Ż v0 ĽšĽďĽĂĽ×¤ňşî¤ë¤ł¤Č¤Ź¤˘¤Ę¤ż¤ÎĽŃĄźĽĆĽŁĽˇĽçĽóĽĆĄźĽÖĽë¤ň\n"
+"Ç˲ő¤ˇ¤Ć¤ˇ¤Ţ¤Ś¤ł¤Č¤ň°ŐĚŁ¤ˇ¤Ţ¤šĄŁ¤â¤ˇ¤˘¤Ę¤ż¤ŹËÜĹö¤Ë¤˝¤ÎĽÇĽĐĽ¤Ľš¤Ë v0 "
+"ĽšĽďĽĂĽ×\n"
+"¤ň¤ňşîŔŽ¤ˇ¤ż¤ą¤ě¤ĐĄ˘-f ĽŞĽ×ĽˇĽçĽó¤ÇśŻÍפˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: disk-utils/mkswap.c:444
+#, c-format
+msgid "Setting up swapspace version %d, size = %ld bytes\n"
+msgstr "ĽšĽďĽĂĽ×śő´ÖĽĐĄźĽ¸ĽçĽó %d ¤ňŔßÄꤡ¤Ţ¤šĄ˘ĽľĽ¤Ľş = %ld ĽĐĽ¤ĽČ\n"
+
+#: disk-utils/setfdprm.c:30
+#, c-format
+msgid "Invalid number: %s\n"
+msgstr "ÉÔŔľ¤Ężô: %s\n"
+
+#: disk-utils/setfdprm.c:80
+#, c-format
+msgid "Syntax error: '%s'\n"
+msgstr "ʸ˥Ľ¨ĽéĄź: '%s'\n"
+
+#: disk-utils/setfdprm.c:90
+#, c-format
+msgid "No such parameter set: '%s'\n"
+msgstr "¤˝¤Î¤č¤Ś¤ĘŔßÄęĽŃĽéĽáĽż¤Ď¤˘¤ę¤Ţ¤ť¤ó: '%s'\n"
+
+#: disk-utils/setfdprm.c:100
+#, c-format
+msgid "usage: %s [ -p ] dev name\n"
+msgstr "ťČ¤¤Ęý: %s [ -p ] ĽÇĽĐĽ¤Ľš ĚžÁ°\n"
+
+#: disk-utils/setfdprm.c:101
+#, c-format
+msgid ""
+" %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:104
+#, c-format
+msgid " %s [ -c | -y | -n | -d ] dev\n"
+msgstr " %s [ -c | -y | -n | -d ] ĽÇĽĐĽ¤Ľš\n"
+
+#: disk-utils/setfdprm.c:106
+#, c-format
+msgid " %s [ -c | -y | -n ] dev\n"
+msgstr " %s [ -c | -y | -n ] ĽÇĽĐĽ¤Ľš\n"
+
+#: fdisk/cfdisk.c:353 fdisk/cfdisk.c:1853
+msgid "Unusable"
+msgstr "ťČÍŃÉÔ˛Ä"
+
+#: fdisk/cfdisk.c:355 fdisk/cfdisk.c:1855
+msgid "Free Space"
+msgstr "śő¤­Îΰč"
+
+#: fdisk/cfdisk.c:358
+msgid "Linux ext2"
+msgstr "Linux ext2"
+
+#. also Solaris
+#: fdisk/cfdisk.c:360 fdisk/i386_sys_types.c:56
+msgid "Linux"
+msgstr "Linux"
+
+#: fdisk/cfdisk.c:363
+msgid "OS/2 HPFS"
+msgstr "OS/2 HPFS"
+
+#: fdisk/cfdisk.c:365
+msgid "OS/2 IFS"
+msgstr "OS/2 IFS"
+
+#: fdisk/cfdisk.c:369
+msgid "NTFS"
+msgstr "NTFS"
+
+#: fdisk/cfdisk.c:380
+msgid "Disk has been changed.\n"
+msgstr "ĽÇĽŁĽšĽŻ¤ŹĘŃšš¤ľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: fdisk/cfdisk.c:381
+msgid "Reboot the system to ensure the partition table is correctly updated.\n"
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ňŔľ¤ˇ¤Żššżˇ¤ľ¤ť¤ë¤Ë¤ĎĽˇĽšĽĆĽŕ¤ňşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: fdisk/cfdisk.c:384
+msgid ""
+"\n"
+"WARNING: If you have created or modified any\n"
+"DOS 6.x partitions, please see the cfdisk manual\n"
+"page for additional information.\n"
+msgstr ""
+"\n"
+"ˇŮšđ: DOS 6.x ĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşîŔŽĄ˘¤Ţ¤ż¤ĎĘŃšš¤ˇ¤Ć¤ˇ\n"
+"¤Ţ¤Ă¤żžěšç¤ĎĄ˘cfdisk ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤Ë¤˘¤ëÄɲÞđĘó\n"
+"¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: fdisk/cfdisk.c:479
+msgid "FATAL ERROR"
+msgstr "*Ă×̿Ū¤ĘĽ¨ĽéĄź*"
+
+#: fdisk/cfdisk.c:488
+msgid "Press any key to exit cfdisk"
+msgstr "ĂćĂǤš¤ë¤Ë¤Ď˛ż¤ŤĽ­Ąź¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤"
+
+#: fdisk/cfdisk.c:524 fdisk/cfdisk.c:532
+msgid "Cannot seek on disk drive"
+msgstr "ĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖžĺ¤Ç seek ¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:526
+msgid "Cannot read disk drive"
+msgstr "ĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖ¤ňĆɤߚţ¤á¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:534
+msgid "Cannot write disk drive"
+msgstr "ĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖ¤Ë˝ń¤­šţ¤á¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:771
+msgid "Too many partitions"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹÂż¤š¤Ž¤Ţ¤š"
+
+#: fdisk/cfdisk.c:776
+msgid "Partition begins before sector 0"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹĽťĽŻĽż 0 ¤č¤ę¤Ţ¤¨¤Ť¤éťĎ¤Ţ¤Ă¤Ć¤¤¤Ţ¤š"
+
+#: fdisk/cfdisk.c:781
+msgid "Partition ends before sector 0"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹĽťĽŻĽż 0 ¤č¤ęÁ°¤Ç˝Ş¤ď¤Ă¤Ć¤¤¤Ţ¤š"
+
+#: fdisk/cfdisk.c:786
+msgid "Partition begins after end-of-disk"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹĽÇĽŁĽšĽŻ¤Î˝ŞĹŔ¤č¤ę¤â¸ĺ¤í¤Ť¤éťĎ¤Ţ¤Ă¤Ć¤¤¤Ţ¤š"
+
+#: fdisk/cfdisk.c:791
+msgid "Partition ends after end-of-disk"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹĽÇĽŁĽšĽŻ¤Î˝ŞĹŔ¤č¤ę¤â¸ĺ¤í¤Ç˝Ş¤ď¤Ă¤Ć¤¤¤Ţ¤š"
+
+#: fdisk/cfdisk.c:839
+msgid ""
+"!!!! Internal error creating logical drive with no extended partition !!!!"
+msgstr ""
+"!!!! ĆâÉôĽ¨ĽéĄźĄŁłČÄĽÎΰč°Ęł°¤ËĎŔÍýĽÉĽéĽ¤ĽÖ¤ňşîŔŽ¤ˇ¤č¤Ś¤Č¤ˇ¤Ć¤¤¤Ţ¤š !!!!"
+
+#: fdisk/cfdisk.c:850 fdisk/cfdisk.c:862
+msgid ""
+"Cannot create logical drive here -- would create two extended partitions"
+msgstr ""
+"¤ł¤ł¤Ë¤ĎĎŔÍýĽÉĽéĽ¤ĽÖ¤ňşîŔŽ¤Ç¤­¤Ţ¤ť¤ó -- 2 ¤Ä¤ÎłČÄĽÎΰč¤Ç¤˘¤ě¤ĐşîŔŽ¤ˇ¤Ţ¤š"
+
+#: fdisk/cfdisk.c:1012
+msgid "Menu item too long. Menu may look odd."
+msgstr "ĽáĽËĽĺĄźšŕĚÜĚž¤ŹÄš¤š¤Ž¤Ţ¤šĄŁĽáĽËĽĺĄźÉ˝ź¨¤ŹÍđ¤ě¤Ć¤¤¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ"
+
+#: fdisk/cfdisk.c:1068
+msgid "Menu without direction. Defaulting horizontal."
+msgstr "ĽáĽËĽĺĄź¤ËĘý¸ţ¤Ź¤˘¤ę¤Ţ¤ť¤óĄŁżĺĘżĘý¸ţ¤ň˝é´üĂͤȤˇ¤Ţ¤šĄŁ"
+
+#: fdisk/cfdisk.c:1203
+msgid "Illegal key"
+msgstr "ÉÔŔľ¤ĘĽ­Ąź"
+
+#: fdisk/cfdisk.c:1226
+msgid "Press a key to continue"
+msgstr "Âł¤ą¤ë¤Ë¤Ď˛ż¤ŤĽ­Ąź¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤"
+
+#: fdisk/cfdisk.c:1273 fdisk/cfdisk.c:1824 fdisk/cfdisk.c:2347
+#: fdisk/cfdisk.c:2349
+msgid "Primary"
+msgstr "´đËÜÎΰč"
+
+#: fdisk/cfdisk.c:1273
+msgid "Create a new primary partition"
+msgstr "żˇľŹ¤Ë´đËÜÎΰč¤ňşîŔŽ¤ˇ¤Ţ¤š"
+
+#: fdisk/cfdisk.c:1274 fdisk/cfdisk.c:1824 fdisk/cfdisk.c:2346
+#: fdisk/cfdisk.c:2349
+msgid "Logical"
+msgstr "ĎŔÍýÎΰč"
+
+#: fdisk/cfdisk.c:1274
+msgid "Create a new logical partition"
+msgstr "żˇľŹ¤ËĎŔÍýÎΰč¤ňşîŔŽ¤ˇ¤Ţ¤š"
+
+#: fdisk/cfdisk.c:1275 fdisk/cfdisk.c:1328 fdisk/cfdisk.c:2036
+msgid "Cancel"
+msgstr "Ăćťß"
+
+#: fdisk/cfdisk.c:1275 fdisk/cfdisk.c:1328
+msgid "Don't create a partition"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşîŔŽ¤ˇ¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:1291
+msgid "!!! Internal error !!!"
+msgstr "!!! ĆâÉôĽ¨ĽéĄź !!!"
+
+#: fdisk/cfdisk.c:1294
+msgid "Size (in MB): "
+msgstr "ĽľĽ¤Ľş (MB Ăą°Ě): "
+
+#: fdisk/cfdisk.c:1326
+msgid "Beginning"
+msgstr "şÇ˝é¤Ť¤é"
+
+#: fdisk/cfdisk.c:1326
+msgid "Add partition at beginning of free space"
+msgstr "śő¤­Îΰč¤ÎşÇ˝é¤ËĽŃĄźĽĆĽŁĽˇĽçĽó¤ňÄɲĂ"
+
+#: fdisk/cfdisk.c:1327
+msgid "End"
+msgstr "şÇ¸ĺ¤Ť¤é"
+
+#: fdisk/cfdisk.c:1327
+msgid "Add partition at end of free space"
+msgstr "śő¤­Îΰč¤ÎşÇ¸ĺ¤ËĽŃĄźĽĆĽŁĽˇĽçĽó¤ňÄɲĂ"
+
+#: fdisk/cfdisk.c:1345
+msgid "No room to create the extended partition"
+msgstr "łČÄĽÎΰč¤ňşîŔŽ¤š¤ë¤ż¤á¤Îžě˝ę¤Ź¤˘¤ę¤Ţ¤ť¤ó"
+
+#. probably a file or cdrom
+#: fdisk/cfdisk.c:1377
+msgid "Cannot read disk drive geometry"
+msgstr "ĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖ¤ÎĽ¸ĽŞĽáĽČĽę¤ňĆɤߚţ¤á¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:1392
+msgid "Bad signature on partition table"
+msgstr "ÎΰčĽĆĄźĽÖĽë¤Î˝đĚž¤ŹÉÔŔľ¤Ç¤š"
+
+#: fdisk/cfdisk.c:1395
+msgid "Cannot get disk size"
+msgstr "ĽÇĽŁĽšĽŻĽľĽ¤Ľş¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:1413
+msgid "Cannot derive a geometry from an empty partition table"
+msgstr "śő¤ÎÎΰčĽĆĄźĽÖĽë¤Ť¤é¤ĎĽ¸ĽŞĽáĽČĽę¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:1421
+msgid "Cannot derive a geometry from the partition table"
+msgstr "¤˝¤ÎÎΰčĽĆĄźĽÖĽë¤Ť¤éĽ¸ĽŞĽáĽČĽę¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:1454
+msgid "Cannot open disk drive"
+msgstr "ĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖ¤ňłŤ¤ą¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:1456 fdisk/cfdisk.c:1640
+msgid "Opened disk read-only - you have no permission to write"
+msgstr "ĽÇĽŁĽšĽŻ¤ňĆÉšţ¤ßŔěÍѤdzŤ¤­¤Ţ¤ˇ¤ż -- ¤˘¤Ę¤ż¤Ë¤Ď˝ńšţ¤ß¸˘¸Â¤Ź¤˘¤ę¤Ţ¤ť¤ó"
+
+#. avoid snprintf - it does not exist on ancient systems
+#: fdisk/cfdisk.c:1499
+msgid "Bad primary partition"
+msgstr "ÉÔŔľ¤Ę´đËÜÎΰč"
+
+#. avoid snprintf
+#: fdisk/cfdisk.c:1530
+msgid "Bad logical partition"
+msgstr "ÉÔŔľ¤ĘĎŔÍýÎΰč"
+
+#: fdisk/cfdisk.c:1652
+msgid "Warning!! This may destroy data on your disk!"
+msgstr "ˇŮšđĄŞ ¤ł¤ě¤Ď¤˘¤Ę¤ż¤ÎĽÇĽŁĽšĽŻ¤Ë¤˘¤ëĽÇĄźĽż¤ňÇ˲ő¤š¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:1656
+msgid "Are you sure you want write the partition table to disk? (yes or no): "
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ňĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤ó¤Ç¤â¤č¤í¤ˇ¤¤¤Ç¤š¤ŤĄŠ(yes ¤Ţ¤ż¤Ď no): "
+
+#: fdisk/cfdisk.c:1662
+msgid "no"
+msgstr ""
+
+#: fdisk/cfdisk.c:1663
+msgid "Did not write partition table to disk"
+msgstr "ÎΰčĽĆĄźĽÖĽë¤ňĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤ß¤Ţ¤ť¤ó¤Ç¤ˇ¤ż"
+
+#: fdisk/cfdisk.c:1665
+msgid "yes"
+msgstr "yes"
+
+#: fdisk/cfdisk.c:1668
+msgid "Please enter `yes' or `no'"
+msgstr "`yes' ¤Ť `no' ¤Î¤¤¤ş¤ě¤Ť¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤"
+
+#: fdisk/cfdisk.c:1672
+msgid "Writing partition table to disk..."
+msgstr "ÎΰčĽĆĄźĽÖĽë¤ň˝ń¤­šţ¤ßĂć..."
+
+#: fdisk/cfdisk.c:1697 fdisk/cfdisk.c:1701
+msgid "Wrote partition table to disk"
+msgstr "ÎΰčĽĆĄźĽÖĽë¤ňĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤ß¤Ţ¤ˇ¤ż"
+
+#: fdisk/cfdisk.c:1699
+msgid ""
+"Wrote partition table, but re-read table failed. Reboot to update table."
+msgstr ""
+"ÎΰčĽĆĄźĽÖĽë¤ň˝ń¤­šţ¤ß¤Ţ¤ˇ¤ż¤ŹĄ˘şĆĆÉšţ¤ß¤ËźşÇÔĄŁşĆľŻĆ°¤ˇ¤Ćššżˇ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤"
+
+#: fdisk/cfdisk.c:1709
+msgid ""
+"Not precisely one primary partition is bootable. DOS MBR cannot boot this."
+msgstr ""
+"ĽÖĄźĽČ˛ÄÇ˝´đËÜÎΰ褏°ě¤Ä¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁDOS MBR ¤Ď¤ł¤ě¤ňĽÖĄźĽČ¤Ç¤­¤Ţ¤ť¤óĄŁ"
+
+#: fdisk/cfdisk.c:1767 fdisk/cfdisk.c:1885 fdisk/cfdisk.c:1977
+msgid "Enter filename or press RETURN to display on screen: "
+msgstr "ĽŐĽĄĽ¤ĽëĚž¤ňĆţÎĎĄ˘˛čĚ̤ËÉ˝ź¨¤š¤ëžěšç¤ĎĽęĽżĄźĽóĽ­Ąź: "
+
+#: fdisk/cfdisk.c:1775 fdisk/cfdisk.c:1893 fdisk/cfdisk.c:1985
+#, c-format
+msgid "Cannot open file '%s'"
+msgstr "ĽŐĽĄĽ¤Ľë '%s' ¤ňłŤ¤ą¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:1786
+#, c-format
+msgid "Disk Drive: %s\n"
+msgstr "ĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖ: %s\n"
+
+#: fdisk/cfdisk.c:1788
+msgid "Sector 0:\n"
+msgstr "ĽťĽŻĽż 0:\n"
+
+#: fdisk/cfdisk.c:1795
+#, c-format
+msgid "Sector %d:\n"
+msgstr "ĽťĽŻĽż %d:\n"
+
+#: fdisk/cfdisk.c:1815
+msgid " None "
+msgstr " Ěľ¤ˇ "
+
+#: fdisk/cfdisk.c:1817
+msgid " Pri/Log"
+msgstr " ´đËÜ/ĎŔÍý"
+
+#: fdisk/cfdisk.c:1819
+msgid " Primary"
+msgstr " ´đËÜÎΰč"
+
+#: fdisk/cfdisk.c:1821
+msgid " Logical"
+msgstr " ĎŔÍýÎΰč"
+
+#. odd flag on end
+#. type id
+#. type name
+#: fdisk/cfdisk.c:1859 fdisk/fdisk.c:1059 fdisk/fdisk.c:1208
+#: fdisk/fdisksgilabel.c:224 fdisk/fdisksunlabel.c:646 fdisk/sfdisk.c:560
+msgid "Unknown"
+msgstr "ÉÔĚŔ"
+
+#: fdisk/cfdisk.c:1865
+#, c-format
+msgid "Boot (%02X)"
+msgstr "ĽÖĄźĽČ (%02X)"
+
+#: fdisk/cfdisk.c:1867 fdisk/cfdisk.c:2355
+#, c-format
+msgid "Unknown (%02X)"
+msgstr "̤ĂÎ (%02X)"
+
+#: fdisk/cfdisk.c:1869
+#, c-format
+msgid "None (%02X)"
+msgstr "¤Ę¤ˇ (%02X)"
+
+#: fdisk/cfdisk.c:1904 fdisk/cfdisk.c:1996
+#, c-format
+msgid "Partition Table for %s\n"
+msgstr "%s ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó\n"
+
+#: fdisk/cfdisk.c:1906
+msgid " First Last\n"
+msgstr " şÇ˝é¤Î şÇ¸ĺ¤Î\n"
+
+#: fdisk/cfdisk.c:1907
+msgid ""
+" # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n"
+msgstr ""
+" # ÎÎ°č ĽťĽŻĽż ĽťĽŻĽż ĽŞĽŐĽťĽĂĽČ Â礭¤ľ FilesystemĽżĽ¤Ľ×(ID) "
+"ĽŐĽéĽ°\n"
+
+#: fdisk/cfdisk.c:1908
+msgid ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1998
+msgid " ---Starting--- ----Ending---- Start Number of\n"
+msgstr " ---şÇ˝é¤Î----- ----şÇ¸ĺ¤Î---- ˝é¤á¤ÎĽť \n"
+
+#: fdisk/cfdisk.c:1999
+msgid " # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n"
+msgstr " # Flags Head Sect Cyl ID Head Sect Cyl ĽŻĽżČÖšć ĽťĽŻĽżżô\n"
+
+#: fdisk/cfdisk.c:2000
+msgid "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:2033
+msgid "Raw"
+msgstr "Ŕ¸ĽÇĄźĽż"
+
+#: fdisk/cfdisk.c:2033
+msgid "Print the table using raw data format"
+msgstr "Ŕ¸ĽÇĄźĽż¤ÎˇÁź°¤ÇĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ň˝ĐÎĎ"
+
+#: fdisk/cfdisk.c:2034 fdisk/cfdisk.c:2136
+msgid "Sectors"
+msgstr "ĽťĽŻĽż"
+
+#: fdisk/cfdisk.c:2034
+msgid "Print the table ordered by sectors"
+msgstr "ĽťĽŻĽż˝ç¤ËĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ň˝ĐÎĎ"
+
+#: fdisk/cfdisk.c:2035
+msgid "Table"
+msgstr "ĽĆĄźĽÖĽë"
+
+#: fdisk/cfdisk.c:2035
+msgid "Just print the partition table"
+msgstr "Ăą¤ËĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ň˝ĐÎĎ"
+
+#: fdisk/cfdisk.c:2036
+msgid "Don't print the table"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ň˝ĐÎϤˇ¤Ę¤¤"
+
+#: fdisk/cfdisk.c:2064
+msgid "Help Screen for cfdisk "
+msgstr "cfdisk ¤ÎĽŘĽëĽ×˛čĚĚ "
+
+#: fdisk/cfdisk.c:2066
+msgid "This is cfdisk, a curses based disk partitioning program, which"
+msgstr "cfdisk ¤ĎĂźËöˇżĽÇĽŁĽšĽŻĽŃĄźĽĆĽŁĽˇĽçĽóşîŔŽĽ×ĽíĽ°ĽéĽŕ¤Ç¤šĄŁ"
+
+#: fdisk/cfdisk.c:2067
+msgid "allows you to create, delete and modify partitions on your hard"
+msgstr "ĽĎĄźĽÉĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşîŔŽĄ˘şď˝üĄ˘ĘŃšš"
+
+#: fdisk/cfdisk.c:2068
+msgid "disk drive."
+msgstr "¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ"
+
+#: fdisk/cfdisk.c:2070
+msgid "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+msgstr "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+
+#: fdisk/cfdisk.c:2072
+msgid "Command Meaning"
+msgstr "ĽłĽŢĽóĽÉ ŔâĚŔ"
+
+#: fdisk/cfdisk.c:2073
+msgid "------- -------"
+msgstr ""
+
+#: fdisk/cfdisk.c:2074
+msgid " b Toggle bootable flag of the current partition"
+msgstr " b ĽŤĄźĽ˝Ľëžĺ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ÎĽÖĄźĽČĽŐĽéĽ°¤ÎŔÚÂŘ"
+
+#: fdisk/cfdisk.c:2075
+msgid " d Delete the current partition"
+msgstr " d ĽŤĄźĽ˝Ľëžĺ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşď˝ü"
+
+#: fdisk/cfdisk.c:2076
+msgid " g Change cylinders, heads, sectors-per-track parameters"
+msgstr " g ĽˇĽęĽóĽŔ, ĽŘĽĂĽŔ, ĽČĽéĽĂĽŻĹö¤ż¤ę¤ÎĽťĽŻĽżżô¤ňĘŃšš"
+
+#: fdisk/cfdisk.c:2077
+msgid " WARNING: This option should only be used by people who"
+msgstr " ˇŮšđ: ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤Ź˛ż¤ň¤š¤ë¤â¤Î¤ŤÍý˛ň¤ˇ¤Ć¤¤¤Ę¤¤żÍ"
+
+#: fdisk/cfdisk.c:2078
+msgid " know what they are doing."
+msgstr " ¤ĎťČÍѤˇ¤Ć¤Ď¤¤¤ą¤Ę¤¤ĄŁ"
+
+#: fdisk/cfdisk.c:2079
+msgid " h Print this screen"
+msgstr " h ¤ł¤Î˛čĚ̤ňÉ˝ź¨"
+
+#: fdisk/cfdisk.c:2080
+msgid " m Maximize disk usage of the current partition"
+msgstr " m ĽŤĄźĽ˝Ľëžĺ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ÎĽÇĽŁĽšĽŻťČÍŃÎ̤ňşÇÂç¤Ë¤š¤ëĄŁ"
+
+#: fdisk/cfdisk.c:2081
+msgid " Note: This may make the partition incompatible with"
+msgstr " Ăí°Ő: ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĄ˘DOS, OS/2 Ĺů¤Č¸ß´šŔ­¤Î¤Ę¤¤"
+
+#: fdisk/cfdisk.c:2082
+msgid " DOS, OS/2, ..."
+msgstr " ĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşîŔŽ¤š¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ę¤Ţ¤šĄŁ"
+
+#: fdisk/cfdisk.c:2083
+msgid " n Create new partition from free space"
+msgstr " n śő¤­Îΰ褍¤éżˇľŹ¤ËĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşîŔŽ"
+
+#: fdisk/cfdisk.c:2084
+msgid " p Print partition table to the screen or to a file"
+msgstr " p ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ň˛čĚ̤ޤż¤ĎĽÇĽŁĽšĽŻ¤Ë˝ĐÎϤš¤ë"
+
+#: fdisk/cfdisk.c:2085
+msgid " There are several different formats for the partition"
+msgstr " ĽŃĄźĽĆĽŁĽˇĽçĽó¤Î˝ĐÎϤˤϟĄ¤Î¤č¤Ś¤ĘĘŁżô¤ÎˇÁź°¤Ť¤éÁŞÂň"
+
+#: fdisk/cfdisk.c:2086
+msgid " that you can choose from:"
+msgstr " ¤Ç¤­¤ë:"
+
+#: fdisk/cfdisk.c:2087
+msgid " r - Raw data (exactly what would be written to disk)"
+msgstr " r - Ŕ¸ĽÇĄźĽż(ĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤Ţ¤ě¤ëžđĘ󤽤Τâ¤Î)"
+
+#: fdisk/cfdisk.c:2088
+msgid " s - Table ordered by sectors"
+msgstr " s - ĽťĽŻĽż˝ç¤ÎĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó"
+
+#: fdisk/cfdisk.c:2089
+msgid " t - Table in raw format"
+msgstr " t - Ŕ¸¤ÎˇÁź°¤ÎĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó"
+
+#: fdisk/cfdisk.c:2090
+msgid " q Quit program without writing partition table"
+msgstr " q ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ň˝ń¤­šţ¤Ţ¤ş¤ËĽ×ĽíĽ°ĽéĽŕ¤ň˝ŞÎť"
+
+#: fdisk/cfdisk.c:2091
+msgid " t Change the filesystem type"
+msgstr " t ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ňĘŃšš"
+
+#: fdisk/cfdisk.c:2092
+msgid " u Change units of the partition size display"
+msgstr " u É˝ź¨¤š¤ëĽŃĄźĽĆĽŁĽˇĽçĽóĽľĽ¤Ľş¤ÎĂą°Ě¤ňĘŃšš¤š¤ë"
+
+#: fdisk/cfdisk.c:2093
+msgid " Rotates through Mb, sectors and cylinders"
+msgstr " MB, ĽťĽŻĽż, ĽˇĽęĽóĽŔ¤Î˝ç¤ËĘѤď¤ë"
+
+#: fdisk/cfdisk.c:2094
+msgid " W Write partition table to disk (must enter upper case W)"
+msgstr " W ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ňĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤ŕ(Âçʸťú W ¤ň"
+
+#: fdisk/cfdisk.c:2095
+msgid " Since this might destroy data on the disk, you must"
+msgstr " ĆţÎϤˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤)ĄŁ¤ł¤ÎĽŞĽ×ĽˇĽçĽó¤ĎĽÇĽŁĽšĽŻžĺ¤Î"
+
+#: fdisk/cfdisk.c:2096
+msgid " either confirm or deny the write by entering `yes' or"
+msgstr " ĽÇĄźĽż¤ňÇ˲ő¤š¤ë˛ÄÇ˝Ŕ­¤Ź¤˘¤ë¤ż¤áĄ˘'yes'¤Ţ¤ż¤Ď'no'¤ÎĆţ"
+
+#: fdisk/cfdisk.c:2097
+msgid " `no'"
+msgstr " ÎϤˤč¤ęĄ˘˝ń¤­šţ¤ß¤ňšÔ¤Ś¤Ť¤É¤Ś¤Ť¤ňłÎǧ¤š¤ëĄŁ"
+
+#: fdisk/cfdisk.c:2098
+msgid "Up Arrow Move cursor to the previous partition"
+msgstr "žĺĚđ°őĽ­Ąź žĺ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ËĽŤĄźĽ˝Ľë¤ň°ÜĆ°"
+
+#: fdisk/cfdisk.c:2099
+msgid "Down Arrow Move cursor to the next partition"
+msgstr "˛źĚđ°őĽ­Ąź ˛ź¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ËĽŤĄźĽ˝Ľë¤ň°ÜĆ°"
+
+#: fdisk/cfdisk.c:2100
+msgid "CTRL-L Redraws the screen"
+msgstr "CTRL-L ˛čĚ̤ňşĆÉÁ˛č"
+
+#: fdisk/cfdisk.c:2101
+msgid " ? Print this screen"
+msgstr " ? ¤ł¤Î˛čĚ̤ňÉ˝ź¨"
+
+#: fdisk/cfdisk.c:2103
+msgid "Note: All of the commands can be entered with either upper or lower"
+msgstr "Ăí°Ő: ĽłĽŢĽóĽÉ¤Ď¤š¤Ů¤ĆÂçʸťúĄ˘žŽĘ¸ťú¤É¤Á¤é¤Ç¤âťČÍѤǤ­¤Ţ¤š"
+
+#: fdisk/cfdisk.c:2104
+msgid "case letters (except for Writes)."
+msgstr "(˝ń¤­šţ¤ß¤ň˝ü¤Ż)ĄŁ"
+
+#: fdisk/cfdisk.c:2134 fdisk/cfdisk.c:2436 fdisk/fdisksunlabel.c:305
+#: fdisk/fdisksunlabel.c:307
+msgid "Cylinders"
+msgstr "ĽˇĽęĽóĽŔ"
+
+#: fdisk/cfdisk.c:2134
+msgid "Change cylinder geometry"
+msgstr "ĽˇĽęĽóĽŔ¤ÎĽ¸ĽŞĽáĽČĽę¤ňĘŃšš"
+
+#: fdisk/cfdisk.c:2135 fdisk/fdisksunlabel.c:302
+msgid "Heads"
+msgstr "ĽŘĽĂĽÉżô"
+
+#: fdisk/cfdisk.c:2135
+msgid "Change head geometry"
+msgstr "ĽŘĽĂĽÉ¤ÎĽ¸ĽŞĽáĽČĽę¤ňĘŃšš"
+
+#: fdisk/cfdisk.c:2136
+msgid "Change sector geometry"
+msgstr "ĽťĽŻĽż¤ÎĽ¸ĽŞĽáĽČĽę¤ňĘŃšš"
+
+#: fdisk/cfdisk.c:2137
+msgid "Done"
+msgstr "˝ŞÎť"
+
+#: fdisk/cfdisk.c:2137
+msgid "Done with changing geometry"
+msgstr "Ľ¸ĽŞĽáĽČĽę¤ňĘŃšš¤ˇ¤Ć˝ŞÎť"
+
+#: fdisk/cfdisk.c:2150
+msgid "Enter the number of cylinders: "
+msgstr "ĽˇĽęĽóĽŔżô¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤: "
+
+#: fdisk/cfdisk.c:2157 fdisk/cfdisk.c:2700
+msgid "Illegal cylinders value"
+msgstr "ÉÔŔľ¤ĘĽˇĽęĽóĽŔżô"
+
+#: fdisk/cfdisk.c:2163
+msgid "Enter the number of heads: "
+msgstr "ĽŘĽĂĽŔżô¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤: "
+
+#: fdisk/cfdisk.c:2170 fdisk/cfdisk.c:2710
+msgid "Illegal heads value"
+msgstr "ÉÔŔľ¤ĘĽŘĽĂĽÉżô"
+
+#: fdisk/cfdisk.c:2176
+msgid "Enter the number of sectors per track: "
+msgstr "ĽČĽéĽĂĽŻĹö¤ż¤ę¤ÎĽťĽŻĽżżô¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤: "
+
+#: fdisk/cfdisk.c:2183 fdisk/cfdisk.c:2717
+msgid "Illegal sectors value"
+msgstr "ÉÔŔľ¤ĘĽťĽŻĽżżô"
+
+#: fdisk/cfdisk.c:2282
+msgid "Enter filesystem type: "
+msgstr "ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤: "
+
+#: fdisk/cfdisk.c:2300
+msgid "Cannot change FS Type to empty"
+msgstr "ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ňśő¤ËĘŃšš¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:2302
+msgid "Cannot change FS Type to extended"
+msgstr "ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ňłČÄĽ¤ËĘŃšš¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:2324 fdisk/fdisksunlabel.c:44
+msgid "Boot"
+msgstr "ĽÖĄźĽČ"
+
+#: fdisk/cfdisk.c:2326
+#, c-format
+msgid "Unk(%02X)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2329 fdisk/cfdisk.c:2332
+msgid ", NC"
+msgstr ""
+
+#: fdisk/cfdisk.c:2337 fdisk/cfdisk.c:2340
+msgid "NC"
+msgstr ""
+
+#: fdisk/cfdisk.c:2348
+msgid "Pri/Log"
+msgstr "´đËÜ/ĎŔÍý"
+
+#: fdisk/cfdisk.c:2422
+#, c-format
+msgid "Disk Drive: %s"
+msgstr "ĽÇĽŁĽšĽŻĽÉĽéĽ¤ĽÖ: %s"
+
+#: fdisk/cfdisk.c:2424
+#, c-format
+msgid "Heads: %d Sectors per Track: %d Cylinders: %d"
+msgstr "ĽŘĽĂĽÉ: %d ĽČĽéĽĂĽŻĹö¤ż¤ę¤ÎĽťĽŻĽż: %d ĽˇĽęĽóĽŔ: %d"
+
+#: fdisk/cfdisk.c:2428
+msgid "Name"
+msgstr "ĚžÁ°"
+
+#: fdisk/cfdisk.c:2429
+msgid "Flags"
+msgstr "ĽŐĽéĽ°"
+
+#: fdisk/cfdisk.c:2430
+msgid "Part Type"
+msgstr "Îΰ輿Ľ¤Ľ×"
+
+#: fdisk/cfdisk.c:2431
+msgid "FS Type"
+msgstr "FSĽżĽ¤Ľ×"
+
+#: fdisk/cfdisk.c:2432
+msgid "[Label]"
+msgstr "[ĽéĽŮĽë]"
+
+#: fdisk/cfdisk.c:2434
+msgid " Sectors"
+msgstr " ĽťĽŻĽż"
+
+#: fdisk/cfdisk.c:2438
+msgid "Size (MB)"
+msgstr "ĽľĽ¤Ľş (MB)"
+
+#: fdisk/cfdisk.c:2493
+msgid "Bootable"
+msgstr "ĽÖĄźĽČ˛Ä"
+
+#: fdisk/cfdisk.c:2493
+msgid "Toggle bootable flag of the current partition"
+msgstr "ĽŤĄźĽ˝Ľëžĺ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ÎĽÖĄźĽČĽŐĽéĽ°¤ňŔÚ¤ęÂؤ¨¤ë"
+
+#: fdisk/cfdisk.c:2494
+msgid "Delete"
+msgstr "şď˝ü"
+
+#: fdisk/cfdisk.c:2494
+msgid "Delete the current partition"
+msgstr "ĽŤĄźĽ˝Ľëžĺ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşď˝ü"
+
+#: fdisk/cfdisk.c:2495
+msgid "Geometry"
+msgstr "Ľ¸ĽŞĽáĽČĽę"
+
+#: fdisk/cfdisk.c:2495
+msgid "Change disk geometry (experts only)"
+msgstr "ĽÇĽŁĽšĽŻĽ¸ĽŞĽáĽČĽę¤ňĘŃšš¤š¤ë(Ľ¨Ľ­ĽšĽŃĄźĽČÍŃ)"
+
+#: fdisk/cfdisk.c:2496
+msgid "Help"
+msgstr "ĽŘĽëĽ×"
+
+#: fdisk/cfdisk.c:2496
+msgid "Print help screen"
+msgstr "ĽŘĽëĽ×˛čĚ̤ňÉ˝ź¨"
+
+#: fdisk/cfdisk.c:2497
+msgid "Maximize"
+msgstr "şÇÂ粽"
+
+#: fdisk/cfdisk.c:2497
+msgid "Maximize disk usage of the current partition (experts only)"
+msgstr "ĽŤĄźĽ˝Ľëžĺ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ÎĽÇĽŁĽšĽŻťČÍŃÎ̤ňşÇÂ粽(Ľ¨Ľ­ĽšĽŃĄźĽČÍŃ)"
+
+#: fdisk/cfdisk.c:2498
+msgid "New"
+msgstr "żˇľŹşîŔŽ"
+
+#: fdisk/cfdisk.c:2498
+msgid "Create new partition from free space"
+msgstr "śő¤­Îΰ褍¤éżˇ¤ˇ¤ŻĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşîŔŽ"
+
+#: fdisk/cfdisk.c:2499
+msgid "Print"
+msgstr "É˝ź¨"
+
+#: fdisk/cfdisk.c:2499
+msgid "Print partition table to the screen or to a file"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ň˛čĚ̤ޤż¤ĎĽŐĽĄĽ¤Ľë¤Ë˝ĐÎĎ"
+
+#: fdisk/cfdisk.c:2500
+msgid "Quit"
+msgstr "˝ŞÎť"
+
+#: fdisk/cfdisk.c:2500
+msgid "Quit program without writing partition table"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ň˝ń¤­šţ¤Ţ¤ş¤ËĽ×ĽíĽ°ĽéĽŕ¤ň˝ŞÎť"
+
+#: fdisk/cfdisk.c:2501
+msgid "Type"
+msgstr "FSĽżĽ¤Ľ×"
+
+#: fdisk/cfdisk.c:2501
+msgid "Change the filesystem type (DOS, Linux, OS/2 and so on)"
+msgstr "ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎĽżĽ¤Ľ×¤ňĘŃšš¤š¤ë(DOS, Linux, OS/2 ¤Ę¤É)"
+
+#: fdisk/cfdisk.c:2502
+msgid "Units"
+msgstr "Ăą°Ě"
+
+#: fdisk/cfdisk.c:2502
+msgid "Change units of the partition size display (MB, sect, cyl)"
+msgstr "É˝ź¨¤š¤ëĽŃĄźĽĆĽŁĽˇĽçĽóĽľĽ¤Ľş¤ÎĂą°Ě(MB, ĽťĽŻĽż, ĽˇĽęĽóĽŔ)¤ňĘŃšš¤š¤ë"
+
+#: fdisk/cfdisk.c:2503
+msgid "Write"
+msgstr "˝ń¤­šţ¤ß"
+
+#: fdisk/cfdisk.c:2503
+msgid "Write partition table to disk (this might destroy data)"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤ňĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤ŕ(ĽÇĄźĽż¤ňÇ˲ő¤š¤ë˛ÄÇ˝Ŕ­¤˘¤ę)"
+
+#: fdisk/cfdisk.c:2549
+msgid "Cannot make this partition bootable"
+msgstr "¤ł¤ÎÎΰč¤ňĽÖĄźĽČ˛ÄÇ˝¤Ë¤Ď¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:2559
+msgid "Cannot delete an empty partition"
+msgstr "śő¤ÎÎΰč¤ňşď˝ü¤š¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:2579 fdisk/cfdisk.c:2581
+msgid "Cannot maximize this partition"
+msgstr "¤ł¤ÎÎΰč¤ňşÇÂ粽¤š¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:2589
+msgid "This partition is unusable"
+msgstr "¤ł¤ÎÎΰč¤ĎťČÍѤǤ­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:2591
+msgid "This partition is already in use"
+msgstr "¤ł¤ÎĽÇĽŁĽšĽŻ¤Ď¸˝şßťČÍŃĂć¤Ç¤šĄŁ"
+
+#: fdisk/cfdisk.c:2608
+msgid "Cannot change the type of an empty partition"
+msgstr "śő¤ÎÎΰč¤ÎĽżĽ¤Ľ×¤ňĘŃšš¤š¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:2633 fdisk/cfdisk.c:2639
+msgid "No more partitions"
+msgstr "¤ł¤ě°Ęžĺ¤ÎÎΰč¤Ď¤˘¤ę¤Ţ¤ť¤ó"
+
+#: fdisk/cfdisk.c:2646
+msgid "Illegal command"
+msgstr "ÉÔŔľ¤ĘĽłĽŢĽóĽÉ"
+
+#: fdisk/cfdisk.c:2656
+msgid "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+msgstr ""
+
+#. Unfortunately, xgettext does not handle multi-line strings
+#. so, let's use explicit \n's instead
+#: fdisk/cfdisk.c:2663
+#, c-format
+msgid ""
+"\n"
+"Usage:\n"
+"Print version:\n"
+" %s -v\n"
+"Print partition table:\n"
+" %s -P {r|s|t} [options] device\n"
+"Interactive use:\n"
+" %s [options] device\n"
+"\n"
+"Options:\n"
+"-a: Use arrow instead of highlighting;\n"
+"-z: Start with a zero partition table, instead of reading the pt from disk;\n"
+"-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n"
+" the number of heads and the number of sectors/track.\n"
+"\n"
+msgstr ""
+"\n"
+"ťČ¤¤Ęý:\n"
+"ĽĐĄźĽ¸ĽçĽó¤ňÉ˝ź¨:\n"
+" %s -v\n"
+"ÎΰčĽĆĄźĽÖĽë¤ňÉ˝ź¨:\n"
+" %s -P {r|s|t} [ĽŞĽ×ĽˇĽçĽó] ĽÇĽĐĽ¤Ľš\n"
+"ÂĐĎĂĹŞ¤ËťČÍŃ:\n"
+" %s [ĽŞĽ×ĽˇĽçĽó] ĽÇĽĐĽ¤Ľš\n"
+"\n"
+"ĽŞĽ×ĽˇĽçĽó:\n"
+"-a: ȿŞɽź¨¤ÎÂĺ¤ď¤ę¤ËĚđ°ő¤ňťČÍŃ\n"
+"-z: ĽÇĽŁĽšĽŻ¤Ť¤éÎΰč¤ňĆÉšţ¤Ţ¤şĄ˘ĽźĽí¤ÎÎΰčĽĆĄźĽÖĽë¤Č¤ˇ¤ĆłŤťĎ¤š¤ë\n"
+"-c C -h H -s S: ĽŤĄźĽÍĽë¤Ź´üÂÔ¤š¤ëĽˇĽęĽóĽŔżôĄ˘ĽŘĽĂĽÉżôĄ˘ĽťĽŻĽż/ĽČĽéĽĂĽŻżô\n"
+" ¤ňʤ¤š\n"
+"\n"
+
+#: fdisk/fdisk.c:241
+msgid ""
+"Usage: fdisk [-b SSZ] [-u] [DISK] Change partition table\n"
+" fdisk -l [-b SSZ] [-u] [DISK] List partition table(s)\n"
+" fdisk -s PARTITION Give partition size(s) in blocks\n"
+" fdisk -v Give fdisk version\n"
+"Here DISK is something like /dev/hdb or /dev/sda\n"
+"and PARTITION is something like /dev/hda7\n"
+"-u: give Start and End in sector (instead of cylinder) units\n"
+"-b 2048: (for certain MO drives) use 2048-byte sectors\n"
+msgstr ""
+"ťČ¤¤Ęý: fdisk [-b SSZ] [-u] [ĽÇĽŁĽšĽŻ] ĽŃĄźĽĆĽŁĽˇĽçĽóĽĆĄźĽÖĽë¤ÎĘŃšš\n"
+" fdisk -l [-b SSZ] [-u] [ĽÇĽŁĽšĽŻ] "
+"ĽŃĄźĽĆĽŁĽˇĽçĽóĽĆĄźĽÖĽëĽęĽšĽČ¤ÎÉ˝ź¨\n"
+" fdisk -s ĽŃĄźĽĆĽŁĽˇĽçĽó "
+"ĽÖĽíĽĂĽŻ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽóĽľĽ¤ĽşÉ˝ź¨\n"
+" fdisk -v fdisk ¤ÎĽĐĄźĽ¸ĽçĽóÉ˝ź¨\n"
+"`ĽÇĽŁĽšĽŻ' ¤Ë¤Ď /dev/hdb ¤ä /dev/sda ¤ÎÍͤʲż¤Ť¤ňÍż¤¨¤Ţ¤š\n"
+"¤˝¤ˇ¤Ć `ĽŃĄźĽĆĽŁĽˇĽçĽó' ¤Ë¤Ď /dev/hda7 ¤ÎÍͤʲż¤Ť¤ňÍż¤¨¤Ţ¤š\n"
+"-u: (ĽˇĽęĽóĽŔ¤ÎÂĺ¤ď¤ę¤Ë)ĽťĽŻĽżĽćĽËĽĂĽČ¤Î¤ÎłŤťĎĄ˘˝ŞÎť¤ňÍż¤¨¤Ţ¤š\n"
+"-b 2048: (¤˘¤ëźď¤Î MO ĽÉĽéĽ¤ĽÖÍŃ) 2048 ĽĐĽ¤ĽČ¤ÎĽťĽŻĽżĽľĽ¤Ľş¤ňťČ¤¤¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:251
+msgid "A disk block device is needed.\n"
+msgstr "ĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Ç¤˘¤ë¤ł¤Č¤ŹÉŹÍפǤšĄŁ\n"
+
+#: fdisk/fdisk.c:254
+msgid ""
+"Given name does not refer to a partition,\n"
+"or maybe not even to a block device.\n"
+msgstr ""
+"Íż¤¨¤é¤ě¤żĚžÁ°¤ĎĽŃĄźĽĆĽŁĽˇĽçĽó¤ňť˛žČ¤ˇ¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+"¤˘¤ë¤¤¤ĎĄ˘ĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Ç¤ľ¤¨¤Ę¤¤¤Î¤Ť¤âĂΤě¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisk.c:258
+#, c-format
+msgid "Unable to open %s\n"
+msgstr "%s ¤ňłŤ¤ą¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:261
+#, c-format
+msgid "Unable to read %s\n"
+msgstr "%s ¤ňĆɤá¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:264
+#, c-format
+msgid "Unable to seek on %s\n"
+msgstr "%s ¤ňĽˇĄźĽŻ¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:267
+#, c-format
+msgid "Unable to write %s\n"
+msgstr "%s ¤Ř¤Î˝ń¤­šţ¤ß¤Ź¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:270
+msgid "Unable to allocate any more memory\n"
+msgstr "¤ł¤ě°Ęžĺ¤ÎĽáĽâĽę¤ŹłÎĘݤǤ­¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:272
+msgid "Fatal error\n"
+msgstr "Ă×̿Ū¤ĘĽ¨ĽéĄź\n"
+
+#: fdisk/fdisk.c:283 fdisk/fdisk.c:302 fdisk/fdisk.c:320 fdisk/fdisk.c:327
+#: fdisk/fdisk.c:350 fdisk/fdisk.c:368 fdisk/fdiskbsdlabel.c:105
+msgid "Command action"
+msgstr "ĽłĽŢĽóĽÉ¤ÎĆ°şî"
+
+#: fdisk/fdisk.c:284
+msgid " a toggle a read only flag"
+msgstr " a ĆÉšţ¤ßŔěÍѼռ鼰¤ň¤Ä¤ą¤ë"
+
+#. sun
+#: fdisk/fdisk.c:285 fdisk/fdisk.c:329
+msgid " b edit bsd disklabel"
+msgstr " b bsd ĽÇĽŁĽšĽŻĽéĽŮĽë¤ňĘÔ˝¸¤š¤ë"
+
+#: fdisk/fdisk.c:286
+msgid " c toggle the mountable flag"
+msgstr " c ĽŢĽŚĽóĽČ˛ÄÇ˝ĽŐĽéĽ°¤ň¤Ä¤ą¤ë"
+
+#. sun
+#: fdisk/fdisk.c:287 fdisk/fdisk.c:306 fdisk/fdisk.c:331
+msgid " d delete a partition"
+msgstr " d Îΰč¤ňşď˝ü¤š¤ë"
+
+#: fdisk/fdisk.c:288 fdisk/fdisk.c:307 fdisk/fdisk.c:332
+msgid " l list known partition types"
+msgstr " l ´űĂΤÎÎΰ輿Ľ¤Ľ×¤ňĽęĽšĽČÉ˝ź¨¤š¤ë"
+
+#. sun
+#: fdisk/fdisk.c:289 fdisk/fdisk.c:308 fdisk/fdisk.c:321 fdisk/fdisk.c:333
+#: fdisk/fdisk.c:358 fdisk/fdisk.c:375 fdisk/fdiskbsdlabel.c:110
+msgid " m print this menu"
+msgstr " m ¤ł¤ÎĽáĽËĽĺĄź¤ňÉ˝ź¨¤š¤ë"
+
+#: fdisk/fdisk.c:290 fdisk/fdisk.c:309 fdisk/fdisk.c:334
+msgid " n add a new partition"
+msgstr " n żˇ¤ż¤ËÎΰč¤ňşîŔŽ¤š¤ë"
+
+#: fdisk/fdisk.c:291 fdisk/fdisk.c:310 fdisk/fdisk.c:322 fdisk/fdisk.c:335
+msgid " o create a new empty DOS partition table"
+msgstr " o żˇ¤ż¤Ëśő¤Î DOS ÎΰčĽĆĄźĽÖĽë¤ňşîŔŽ¤š¤ë"
+
+#: fdisk/fdisk.c:292 fdisk/fdisk.c:311 fdisk/fdisk.c:336 fdisk/fdisk.c:359
+#: fdisk/fdisk.c:376
+msgid " p print the partition table"
+msgstr " p ÎΰčĽĆĄźĽÖĽë¤ňÉ˝ź¨¤š¤ë"
+
+#: fdisk/fdisk.c:293 fdisk/fdisk.c:312 fdisk/fdisk.c:323 fdisk/fdisk.c:337
+#: fdisk/fdisk.c:360 fdisk/fdisk.c:377 fdisk/fdiskbsdlabel.c:113
+msgid " q quit without saving changes"
+msgstr " q ĘŃšš¤ňĘݸ¤ť¤ş¤Ë˝ŞÎť¤š¤ë"
+
+#: fdisk/fdisk.c:294 fdisk/fdisk.c:313 fdisk/fdisk.c:324 fdisk/fdisk.c:338
+msgid " s create a new empty Sun disklabel"
+msgstr " s śő¤Î Sun ĽÇĽŁĽšĽŻĽéĽŮĽë¤ňşîŔŽ¤š¤ë"
+
+#. sun
+#: fdisk/fdisk.c:295 fdisk/fdisk.c:314 fdisk/fdisk.c:339
+msgid " t change a partition's system id"
+msgstr " t Îΰč¤ÎĽˇĽšĽĆĽŕ ID ¤ňĘŃšš¤š¤ë"
+
+#: fdisk/fdisk.c:296 fdisk/fdisk.c:315 fdisk/fdisk.c:340
+msgid " u change display/entry units"
+msgstr " u É˝ź¨/šŕĚÜĽćĽËĽĂĽČ¤ňĘŃšš¤š¤ë"
+
+#: fdisk/fdisk.c:297 fdisk/fdisk.c:316 fdisk/fdisk.c:341 fdisk/fdisk.c:363
+#: fdisk/fdisk.c:380
+msgid " v verify the partition table"
+msgstr " v ÎΰčĽĆĄźĽÖĽë¤ňžČšç¤š¤ë"
+
+#: fdisk/fdisk.c:298 fdisk/fdisk.c:317 fdisk/fdisk.c:342 fdisk/fdisk.c:364
+#: fdisk/fdisk.c:381
+msgid " w write table to disk and exit"
+msgstr " w ĽĆĄźĽÖĽë¤ňĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤ßĄ˘˝ŞÎť¤š¤ë"
+
+#: fdisk/fdisk.c:299 fdisk/fdisk.c:343
+msgid " x extra functionality (experts only)"
+msgstr " x ĆĂĘ̤ʾĄÇ˝ (Ľ¨Ľ­ĽšĽŃĄźĽČŔěÍŃ)"
+
+#: fdisk/fdisk.c:303
+msgid " a select bootable partition"
+msgstr " a ĽÖĄźĽČ˛ÄÇ˝Îΰč¤ňÁŞÂň¤š¤ë"
+
+#. sgi flavour
+#: fdisk/fdisk.c:304
+msgid " b edit bootfile entry"
+msgstr " b ĽÖĄźĽČĽŐĽĄĽ¤ĽëĽ¨ĽóĽČĽę¤ňĘÔ˝¸¤š¤ë"
+
+#. sgi
+#: fdisk/fdisk.c:305
+msgid " c select sgi swap partition"
+msgstr " c sgi ĽšĽďĽĂĽ×Îΰč¤ňÁŞÂň¤š¤ë"
+
+#: fdisk/fdisk.c:328
+msgid " a toggle a bootable flag"
+msgstr " a ĽÖĄźĽČ˛ÄÇ˝ĽŐĽéĽ°¤ň¤Ä¤ą¤ë"
+
+#: fdisk/fdisk.c:330
+msgid " c toggle the dos compatibility flag"
+msgstr " c dos ¸ß´šĽŐĽéĽ°¤ň¤Ä¤ą¤ë"
+
+#: fdisk/fdisk.c:351
+msgid " a change number of alternate cylinders"
+msgstr " a ÂĺÂŘĽˇĽęĽóĽŔżô¤ňĘŃšš¤š¤ë"
+
+#. sun
+#: fdisk/fdisk.c:352 fdisk/fdisk.c:370
+msgid " c change number of cylinders"
+msgstr " c ĽˇĽęĽóĽŔżô¤ňĘŃšš¤š¤ë"
+
+#: fdisk/fdisk.c:353 fdisk/fdisk.c:371
+msgid " d print the raw data in the partition table"
+msgstr " d ÎΰčĽĆĄźĽÖĽëĆâ¤ÎŔ¸ĽÇĄźĽż¤ňÉ˝ź¨¤š¤ë"
+
+#: fdisk/fdisk.c:354
+msgid " e change number of extra sectors per cylinder"
+msgstr " e ĽˇĽęĽóĽŔËč¤ÎÍžžęĽťĽŻĽżżô¤ňĘŃšš¤š¤ë"
+
+#. sun
+#: fdisk/fdisk.c:355 fdisk/fdisk.c:374
+msgid " h change number of heads"
+msgstr " h ĽŘĽĂĽÉżô¤ňĘŃšš¤š¤ë"
+
+#: fdisk/fdisk.c:356
+msgid " i change interleave factor"
+msgstr " i Ľ¤ĽóĽżĄźĽęĄźĽÖĽŐĽĄĽŻĽż¤ňĘŃšš¤š¤ë"
+
+#. sun
+#: fdisk/fdisk.c:357
+msgid " o change rotation speed (rpm)"
+msgstr " o ˛óĹžżô¤ňĘŃšš¤š¤ë (rpm)"
+
+#: fdisk/fdisk.c:361 fdisk/fdisk.c:378 fdisk/fdiskbsdlabel.c:115
+msgid " r return to main menu"
+msgstr " r ĽáĽ¤ĽóĽáĽËĽĺĄź¤ËĚá¤ë"
+
+#: fdisk/fdisk.c:362 fdisk/fdisk.c:379
+msgid " s change number of sectors"
+msgstr " s ĽťĽŻĽżżô¤ňĘŃšš¤š¤ë"
+
+#: fdisk/fdisk.c:365
+msgid " y change number of physical cylinders"
+msgstr " y ĘŞÍýĽˇĽęĽóĽŔżô¤ňĘŃšš¤š¤ë"
+
+#: fdisk/fdisk.c:369
+msgid " b move beginning of data in a partition"
+msgstr " b ÎΰčĆâ¤ÎĽÇĄźĽż¤ÎŔčĆŹ¤Ë°ÜĆ°¤š¤ë"
+
+#: fdisk/fdisk.c:372
+msgid " e list extended partitions"
+msgstr " e łČÄĽÎΰč¤ňĽęĽšĽČÉ˝ź¨¤š¤ë"
+
+#. !sun
+#: fdisk/fdisk.c:373
+msgid " g create an IRIX partition table"
+msgstr " g IRIX ÎΰčĽĆĄźĽÖĽë¤ňşîŔŽ¤š¤ë"
+
+#: fdisk/fdisk.c:469
+msgid "You must set"
+msgstr "ŔßÄꤚ¤ëÉŹÍפŹ¤˘¤ę¤Ţ¤š"
+
+#: fdisk/fdisk.c:483
+msgid "heads"
+msgstr "ĽŘĽĂĽÉżô"
+
+#: fdisk/fdisk.c:485 fdisk/fdisk.c:893 fdisk/sfdisk.c:843
+msgid "sectors"
+msgstr "ĽťĽŻĽżżô"
+
+#: fdisk/fdisk.c:487 fdisk/fdisk.c:893 fdisk/fdiskbsdlabel.c:441
+#: fdisk/sfdisk.c:843
+msgid "cylinders"
+msgstr "ĽˇĽęĽóĽŔżô"
+
+#: fdisk/fdisk.c:491
+#, c-format
+msgid ""
+"%s%s.\n"
+"You can do this from the extra functions menu.\n"
+msgstr ""
+"%s%s.\n"
+"¤˘¤Ę¤ż¤ĎĆĂĘĚľĄÇ˝ĽáĽËĽĺĄź¤Ť¤é¤ł¤ě¤ňšÔ¤Ę¤Ś¤ł¤Č¤Ź¤Ç¤­¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:492
+msgid " and "
+msgstr " ľÚ¤Ó "
+
+#: fdisk/fdisk.c:526
+msgid "Bad offset in primary extended partition\n"
+msgstr "´đËÜłČÄĽÎΰč¤ËÉÔŔľ¤ĘĽŞĽŐĽťĽĂĽČ¤Ź¤˘¤ę¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:533
+#, c-format
+msgid "Warning: deleting partitions after %d\n"
+msgstr "ˇŮšđ: %d °Ęšß¤ÎÎΰč¤ňşď˝ü¤ˇ¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:554
+#, c-format
+msgid "Warning: extra link pointer in partition table %d\n"
+msgstr "ˇŮšđ: ÎΰčĽĆĄźĽÖĽë %d Ćâ¤ÎĆĂĘ̤ʼęĽóĽŻĽÝĽ¤ĽóĽż¤Ç¤š\n"
+
+#: fdisk/fdisk.c:562
+#, c-format
+msgid "Warning: ignoring extra data in partition table %d\n"
+msgstr "ˇŮšđ: ÎΰčĽĆĄźĽÖĽë %d Ćâ¤ÎĆĂĘ̤ʼǥźĽż¤ňĚľťë¤ˇ¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:588
+msgid ""
+"Building a new DOS disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+"żˇ¤ż¤Ë DOS "
+"ĽÇĽŁĽšĽŻĽéĽŮĽë¤ňşîŔŽ¤ˇ¤Ţ¤šĄŁ¤˘¤Ę¤ż¤Ź˝ń¤­šţ¤ß¤ňˇčÄꤚ¤ë¤Ţ¤ÇĄ˘ĘŃšš¤Ď\n"
+"ĽáĽâĽęĆâ¤Ŕ¤ą¤ËťÄ¤ˇ¤Ţ¤šĄŁ¤˝¤Î¸ĺ¤Ď¤â¤Á¤í¤ó°ĘÁ°¤ÎĆâÍƤϽ¤ÉüÉÔ˛ÄÇ˝¤Ë¤Ę¤ę¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisk.c:624
+msgid "You will not be able to write the partition table.\n"
+msgstr "ÎΰčĽĆĄźĽÖĽë¤Î˝ń¤­šţ¤ß¤ňšÔ¤¨¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisk.c:633
+#, c-format
+msgid "Note: sector size is %d (not %d)\n"
+msgstr "Ăí°Ő: ĽťĽŻĽżĽľĽ¤Ľş¤Ź %d ¤Ç¤š (%d ¤Ç¤Ď¤Ę¤Ż)\n"
+
+#: fdisk/fdisk.c:681
+msgid ""
+"Device contains neither a valid DOS partition table, nor Sun or SGI "
+"disklabel\n"
+msgstr ""
+"ĽÇĽĐĽ¤Ľš¤ĎŔľžď¤Ę DOS ÎΰčĽĆĄźĽÖĽë¤âĄ˘Sun ¤ä SGI ĽÇĽŁĽšĽŻĽéĽŮĽë¤â\n"
+"´Ţ¤ó¤Ç¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:697
+msgid "Internal error\n"
+msgstr "ĆâÉôĽ¨ĽéĄź\n"
+
+#: fdisk/fdisk.c:707
+#, c-format
+msgid "Ignoring extra extended partition %d\n"
+msgstr "ĆĂĘ̤ʳČÄĽÎΰč %d ¤ňĚľťë¤ˇ¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:714
+#, c-format
+msgid ""
+"Warning: invalid flag 0x%04x of partition table %d will be corrected by "
+"w(rite)\n"
+msgstr ""
+"ˇŮšđ: ÎΰčĽĆĄźĽÖĽë %2$d ¤ÎÉÔŔľ¤ĘĽŐĽéĽ° 0x%1$04x ¤Ď w(˝ń¤­šţ¤ß)¤Ë¤č¤Ă¤Ć\n"
+"Ŕľžď¤Ë¤Ę¤ę¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:735
+msgid ""
+"\n"
+"got EOF thrice - exiting..\n"
+msgstr ""
+"\n"
+"EOF ¤ň 3 ˛óĆɤߤޤˇ¤ż -- ˝ŞÎť¤ˇ¤Ţ¤š..\n"
+
+#: fdisk/fdisk.c:772
+msgid "Hex code (type L to list codes): "
+msgstr "16żĘżôĽłĄźĽÉ (L ĽłĽŢĽóĽÉ¤ÇĽłĄźĽÉĽęĽšĽČÉ˝ź¨): "
+
+#: fdisk/fdisk.c:811
+#, c-format
+msgid "%s (%d-%d, default %d): "
+msgstr "%s (%d-%d, ˝é´üĂÍ %d): "
+
+#: fdisk/fdisk.c:865
+#, c-format
+msgid "Using default value %d\n"
+msgstr "˝é´üĂÍ %d ¤ňťČ¤¤¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:869
+msgid "Value out of range.\n"
+msgstr "ČĎ°Ďł°¤ÎĂͤǤšĄŁ\n"
+
+#: fdisk/fdisk.c:876
+msgid "Partition number"
+msgstr "ÎΰčČÖšć"
+
+#: fdisk/fdisk.c:884
+#, c-format
+msgid "Warning: partition %d has empty type\n"
+msgstr "ˇŮšđ: Îΰč %d ¤Ďśő¤ÎĽżĽ¤Ľ×¤Ç¤šĄŁ\n"
+
+#: fdisk/fdisk.c:891
+msgid "cylinder"
+msgstr "ĽˇĽęĽóĽŔ"
+
+#: fdisk/fdisk.c:891
+msgid "sector"
+msgstr "ĽťĽŻĽż"
+
+#: fdisk/fdisk.c:900
+#, c-format
+msgid "Changing display/entry units to %s\n"
+msgstr "%s ¤ÎÉ˝ź¨/šŕĚÜĽćĽËĽĂĽČ¤ňĘŃšš¤ˇ¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:910
+#, c-format
+msgid "WARNING: Partition %d is an extended partition\n"
+msgstr "ˇŮšđ: Îΰč %d ¤ĎłČÄĽÎΰč¤Ç¤š\n"
+
+#: fdisk/fdisk.c:923
+msgid "DOS Compatibility flag is set\n"
+msgstr "DOS ¸ß´šĽŐĽéĽ°¤ŹŔßÄꤾ¤ě¤Ţ¤ˇ¤ż\n"
+
+#: fdisk/fdisk.c:927
+msgid "DOS Compatibility flag is not set\n"
+msgstr "DOS ¸ß´šĽŐĽéĽ°¤ĎŔßÄꤾ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:1013
+#, c-format
+msgid "Partition %d does not exist yet!\n"
+msgstr "Îΰč %d ¤Ď¤Ţ¤Ŕ¸şß¤ˇ¤Ţ¤ť¤óĄŞ\n"
+
+#: fdisk/fdisk.c:1018
+msgid ""
+"Type 0 means free space to many systems\n"
+"(but not to Linux). Having partitions of\n"
+"type 0 is probably unwise. You can delete\n"
+"a partition using the `d' command.\n"
+msgstr ""
+"ĽżĽ¤Ľ× 0 ¤ĎÂż¤Ż¤ÎĽˇĽšĽĆĽŕ¤ÇĽŐĽęĄźĽšĽÚĄźĽš¤ň°ŐĚŁ¤ˇ¤Ţ¤š\n"
+"(Linux ¤Ç¤Ď°ă¤¤¤Ţ¤š¤Ź)ĄŁĽżĽ¤Ľ× 0 ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ňťý¤Ä¤ł¤Č¤Ď\n"
+"¿ʏŔő¤Ď¤Ť¤Ę¤ł¤Č¤Ç¤šĄŁ¤˘¤Ę¤ż¤Ď `d' ĽłĽŢĽóĽÉ¤ňťČ¤Ă¤Ć¤ł¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ň\n"
+"şď˝ü¤Ç¤­¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisk.c:1027
+msgid ""
+"You cannot change a partition into an extended one or vice versa\n"
+"Delete it first.\n"
+msgstr ""
+"¤˘¤Ę¤ż¤ĎĽŃĄźĽĆĽŁĽˇĽçĽó¤ňłČÄĽĽŃĄźĽĆĽŁĽˇĽçĽó¤ËĘŃšš¤Ç¤­¤Ţ¤ť¤ó¤ˇĄ˘\n"
+"¤˝¤ÎľŐ¤â¤Ţ¤ż¤Ç¤­¤Ţ¤ť¤óĄŁ¤Ţ¤şşď˝ü¤ňšÔ¤Ę¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: fdisk/fdisk.c:1036
+msgid ""
+"Consider leaving partition 3 as Whole disk (5),\n"
+"as SunOS/Solaris expects it and even Linux likes it.\n"
+"\n"
+msgstr ""
+"Îΰč 3 ¤ň Whole disk (5) ¤Č¤ˇ¤ĆťÄ¤ˇ¤Ć¤Ş¤Ż¤ł¤Č¤ňšÍθ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤Ą˘\n"
+"SunOS/Solaris ¤Ď¤ł¤ě¤ň´üÂÔ¤ˇ¤Ţ¤š¤ˇĄ˘Linux ¤Ç¤ľ¤¨¤˝¤ě¤ŹËž¤Ţ¤ˇ¤¤¤Ç¤šĄŁ\n"
+
+#: fdisk/fdisk.c:1042
+msgid ""
+"Consider leaving partition 9 as volume header (0),\n"
+"and partition 11 as entire volume (6)as IRIX expects it.\n"
+"\n"
+msgstr ""
+"Îΰč 9 ¤ň volume header (0) ¤Č¤ˇ¤ĆĄ˘ľÚ¤ÓĽŃĄźĽĆĽŁĽˇĽçĽó 11 ¤ň entire\n"
+"volume (6) ¤Č¤ˇ¤ĆťÄ¤ˇ¤Ć¤Ş¤Ż¤ł¤Č¤ňšÍθ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁIRIX "
+"¤Ď¤ł¤ě¤ň´üÂÔ¤ˇ¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisk.c:1056
+#, c-format
+msgid "Changed system type of partition %d to %x (%s)\n"
+msgstr "Îΰč¤ÎĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ň %d ¤Ť¤é %x (%s) ¤ËĘŃšš¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: fdisk/fdisk.c:1109
+#, c-format
+msgid "Partition %d has different physical/logical beginnings (non-Linux?):\n"
+msgstr "Îΰč %d ¤Ď°Ű¤Ę¤Ă¤żĘŞÍý/ĎŔÍýłŤťĎ°ĚĂ֤ˤʤäƤ¤¤Ţ¤š(Linux ¤Ç¤ĎĚľ¤¤?):\n"
+
+#: fdisk/fdisk.c:1111 fdisk/fdisk.c:1119 fdisk/fdisk.c:1128 fdisk/fdisk.c:1137
+#, c-format
+msgid " phys=(%d, %d, %d) "
+msgstr " ĘŞÍý=(%d, %d, %d) "
+
+#: fdisk/fdisk.c:1112 fdisk/fdisk.c:1120
+#, c-format
+msgid "logical=(%d, %d, %d)\n"
+msgstr "ĎŔÍý=(%d, %d, %d)\n"
+
+#: fdisk/fdisk.c:1117
+#, c-format
+msgid "Partition %d has different physical/logical endings:\n"
+msgstr "Îΰč %d ¤Ď°Ű¤Ę¤Ă¤żĘŞÍý/ĎŔÍý˝ŞĹŔ¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤š:\n"
+
+#: fdisk/fdisk.c:1126
+#, c-format
+msgid "Partition %i does not start on cylinder boundary:\n"
+msgstr "Îΰč %i ¤ĎĽˇĽęĽóĽŔś­łŚ¤ÇťĎ¤Ţ¤Ă¤Ć¤¤¤Ţ¤ť¤ó:\n"
+
+#: fdisk/fdisk.c:1129
+#, c-format
+msgid "should be (%d, %d, 1)\n"
+msgstr "(%d, %d, 1) ¤Ç¤˘¤ë¤Ů¤­¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1135
+#, c-format
+msgid "Partition %i does not end on cylinder boundary:\n"
+msgstr "Îΰč %i ¤ĎĽˇĽęĽóĽŔś­łŚ¤Ç˝Ş¤ď¤Ă¤Ć¤¤¤Ţ¤ť¤ó:\n"
+
+#: fdisk/fdisk.c:1138
+#, c-format
+msgid "should be (%d, %d, %d)\n"
+msgstr "(%d, %d, %d) ¤Ç¤˘¤ë¤Ů¤­¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1145
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * %d bytes\n"
+"\n"
+msgstr ""
+"\n"
+"ĽÇĽŁĽšĽŻ %s: ĽŘĽĂĽÉ %d, ĽťĽŻĽż %d, ĽˇĽęĽóĽŔ %d\n"
+"ĽćĽËĽĂĽČ = %s of %d * %d ĽĐĽ¤ĽČ\n"
+"\n"
+
+#. FIXME! let's see how this shows up with other languagues
+#. acme@conectiva.com.br
+#: fdisk/fdisk.c:1182
+#, c-format
+msgid "%*s Boot Start End Blocks Id System\n"
+msgstr "%*s ĽÖĄźĽČ ťĎĹŔ ˝ŞĹŔ ĽÖĽíĽĂĽŻ ID ĽˇĽšĽĆĽŕ\n"
+
+#: fdisk/fdisk.c:1183 fdisk/fdisksgilabel.c:207 fdisk/fdisksunlabel.c:631
+msgid "Device"
+msgstr "ĽÇĽĐĽ¤Ľš"
+
+#: fdisk/fdisk.c:1223
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"\n"
+msgstr ""
+"\n"
+"ĽÇĽŁĽšĽŻ %s: ĽŘĽĂĽÉ %d, ĽťĽŻĽż %d, ĽˇĽęĽóĽŔ %d\n"
+"\n"
+
+#: fdisk/fdisk.c:1225
+msgid "Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n"
+msgstr "Nr AF Hd Sec Cyl Hd Sec Cyl łŤťĎ ĽľĽ¤Ľş ID\n"
+
+#: fdisk/fdisk.c:1264
+#, c-format
+msgid "Warning: partition %d contains sector 0\n"
+msgstr "ˇŮšđ: Îΰč %d ¤ĎĽťĽŻĽż 0 ¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:1267
+#, c-format
+msgid "Partition %d: head %d greater than maximum %d\n"
+msgstr "Îΰč %d: ĽŘĽĂĽÉ %d ¤ĎşÇÂçĂÍ %d ¤č¤ę¤âÂ礭¤¤¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1270
+#, c-format
+msgid "Partition %d: sector %d greater than maximum %d\n"
+msgstr "Îΰč %d: ĽťĽŻĽż %d ¤ĎşÇÂçĂÍ %d ¤č¤ę¤âÂ礭¤¤¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1273
+#, c-format
+msgid "Partitions %d: cylinder %d greater than maximum %d\n"
+msgstr "Îΰč %d: ĽˇĽęĽóĽŔ %d ¤ĎşÇÂçĂÍ %d ¤č¤ę¤âÂ礭¤¤¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1277
+#, c-format
+msgid "Partition %d: previous sectors %d disagrees with total %d\n"
+msgstr "Îΰč %d: Á°¤ÎĽťĽŻĽż %d ¤Ďšçˇ× %d ¤Č°ěĂפˇ¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:1307
+#, c-format
+msgid "Warning: bad start-of-data in partition %d\n"
+msgstr "ˇŮšđ: Îΰč %d ¤ËÉÔŔľ¤ĘĽÇĄźĽżłŤťĎ°ĚĂÖ¤Ź¤˘¤ę¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:1315
+#, c-format
+msgid "Warning: partition %d overlaps partition %d.\n"
+msgstr "ˇŮšđ: Îΰč %d ¤ĎĄ˘Îΰč %d ¤Č˝Ĺ¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisk.c:1333
+#, c-format
+msgid "Warning: partition %d is empty\n"
+msgstr "ˇŮšđ: Îΰč %d ¤Ďśő¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1338
+#, c-format
+msgid "Logical partition %d not entirely in partition %d\n"
+msgstr "ĎŔÍýÎΰč %d ¤ĎÎΰč %d Á´ÂΤˤʤäƤ¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:1344
+#, c-format
+msgid "Total allocated sectors %d greater than the maximum %d\n"
+msgstr "šçˇ×łÎĘÝĽťĽŻĽż %d ¤ĎşÇÂçĂÍ %d ¤č¤ę¤âÂ礭¤¤¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1347
+#, c-format
+msgid "%d unallocated sectors\n"
+msgstr "łÎĘݤľ¤ě¤Ć¤¤¤Ę¤¤ĽťĽŻĽż¤Ź %d ¤˘¤ę¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:1359 fdisk/fdisksgilabel.c:684 fdisk/fdisksunlabel.c:479
+#, c-format
+msgid "Partition %d is already defined. Delete it before re-adding it.\n"
+msgstr "Îΰč %d ¤ĎÄęľÁşŃ¤Ç¤šĄŁ¤Ţ¤ş¤Ďşď˝ü¤ňšÔ¤Ę¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: fdisk/fdisk.c:1380 fdisk/fdiskbsdlabel.c:252 fdisk/fdisksgilabel.c:706
+#: fdisk/fdisksunlabel.c:494
+#, c-format
+msgid "First %s"
+msgstr "şÇ˝é %s"
+
+#: fdisk/fdisk.c:1395 fdisk/fdisksunlabel.c:519
+#, c-format
+msgid "Sector %d is already allocated\n"
+msgstr "ĽťĽŻĽż %d ¤Ď´ű¤ËłÎĘݺѤߤǤš\n"
+
+#: fdisk/fdisk.c:1421
+msgid "No free sectors available\n"
+msgstr "ÍřÍѲÄÇ˝ĽŐĽęĄźĽťĽŻĽż¤Ź¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:1431 fdisk/fdiskbsdlabel.c:256 fdisk/fdisksunlabel.c:529
+#, c-format
+msgid "Last %s or +size or +sizeM or +sizeK"
+msgstr "˝ŞĹŔ %s ¤Ţ¤ż¤Ď +ĽľĽ¤Ľş ¤Ţ¤ż¤Ď +ĽľĽ¤ĽşM ¤Ţ¤ż¤Ď +ĽľĽ¤ĽşK"
+
+#: fdisk/fdisk.c:1461
+#, c-format
+msgid "Warning: partition %d has an odd number of sectors.\n"
+msgstr "ˇŮšđ: Îΰč %d ¤Ď´ńżôĽťĽŻĽżżô¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisk.c:1498 fdisk/fdiskbsdlabel.c:590
+msgid "The maximum number of partitions has been created\n"
+msgstr "şÇÂçÎΰčżô¤ĎşîŔŽşŃ¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1508
+msgid "You must delete some partition and add an extended partition first\n"
+msgstr "łČÄĽÎΰč¤ňÄɲ䚤ëÁ°¤ËĄ˘¤Ţ¤şÎΰč¤ňşď˝ü¤š¤ëÉŹÍפŹ¤˘¤ę¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:1512
+#, c-format
+msgid ""
+"Command action\n"
+" %s\n"
+" p primary partition (1-4)\n"
+msgstr ""
+"ĽłĽŢĽóĽÉĽ˘ĽŻĽˇĽçĽó\n"
+" %s\n"
+" p ´đËÜÎΰč (1-4)\n"
+
+#: fdisk/fdisk.c:1514
+msgid "l logical (5 or over)"
+msgstr "l ĎŔÍý (5 °Ęžĺ)"
+
+#: fdisk/fdisk.c:1514
+msgid "e extended"
+msgstr "e łČÄĽ"
+
+#: fdisk/fdisk.c:1531
+#, c-format
+msgid "Invalid partition number for type `%c'\n"
+msgstr "ĽżĽ¤Ľ× `%c' ¤Ë¤Č¤Ă¤Ć¤ĎÉÔŔľ¤ĘÎΰčČÖšć¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1563
+msgid ""
+"The partition table has been altered!\n"
+"\n"
+msgstr ""
+"ÎΰčĽĆĄźĽÖĽë¤Ď¸ň´š¤ľ¤ě¤Ţ¤ˇ¤żĄŞ\n"
+"\n"
+
+#: fdisk/fdisk.c:1565
+msgid "Calling ioctl() to re-read partition table.\n"
+msgstr "ioctl() ¤ň¸Ć¤Ó˝Đ¤ˇ¤ĆÎΰčĽĆĄźĽÖĽë¤ňşĆĆÉšţ¤ß¤ˇ¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisk.c:1582
+msgid "Syncing disks.\n"
+msgstr "ĽÇĽŁĽšĽŻ¤ňĆą´ü¤ľ¤ť¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisk.c:1587
+#, c-format
+msgid ""
+"Re-read table failed with error %d: %s.\n"
+"Reboot your system to ensure the partition table is updated.\n"
+msgstr ""
+"ĽĆĄźĽÖĽë¤ÎşĆĆɤߚţ¤ß¤ŹĽ¨ĽéĄźĽšĽĆĄźĽżĽš %d ¤ÇźşÇÔ: %s.\n"
+"ÎΰčžđĘó¤ňŔľ¤ˇ¤Żššżˇ¤ľ¤ť¤ë¤Ë¤ĎĽˇĽšĽĆĽŕ¤ňşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: fdisk/fdisk.c:1593
+msgid ""
+"\n"
+"WARNING: If you have created or modified any DOS 6.x\n"
+"partitions, please see the fdisk manual page for additional\n"
+"information.\n"
+msgstr ""
+"\n"
+"ˇŮšđ: DOS 6.x Îΰč¤ňşîŔŽĄ˘¤Ţ¤ż¤ĎĘŃšš¤ˇ¤Ć¤ˇ¤Ţ¤Ă¤żžěšç¤ĎĄ˘\n"
+"fdisk ĽŢĽËĽĺĽ˘ĽëĽÚĄźĽ¸¤Ë¤˘¤ëÄɲÞđĘó¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: fdisk/fdisk.c:1624
+#, c-format
+msgid "Device: %s\n"
+msgstr "ĽÇĽĐĽ¤Ľš: %s\n"
+
+#: fdisk/fdisk.c:1639
+#, c-format
+msgid "Partition %d has no data area\n"
+msgstr "Îΰč %d ¤ËĽÇĄźĽżÎΰ褏¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:1645
+msgid "New beginning of data"
+msgstr "żˇľŹĽÇĄźĽżłŤťĎ°ĚĂÖ"
+
+#: fdisk/fdisk.c:1659
+msgid "Expert command (m for help): "
+msgstr "Ľ¨Ľ­ĽšĽŃĄźĽČĽłĽŢĽóĽÉ (m ¤ÇĽŘĽëĽ×): "
+
+#: fdisk/fdisk.c:1670
+msgid "Number of cylinders"
+msgstr "ĽˇĽęĽóĽŔżô"
+
+#: fdisk/fdisk.c:1691
+msgid "Number of heads"
+msgstr "ĽŘĽĂĽÉżô"
+
+#: fdisk/fdisk.c:1716
+msgid "Number of sectors"
+msgstr "ĽťĽŻĽżżô"
+
+#: fdisk/fdisk.c:1719
+msgid "Warning: setting sector offset for DOS compatiblity\n"
+msgstr "ˇŮšđ: DOS ¸ß´š¤Î¤ż¤á¤ÎĽťĽŻĽżĽŞĽŐĽťĽĂĽČ¤ňŔßÄꤡ¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:1781
+#, c-format
+msgid "Disk %s doesn't contain a valid partition table\n"
+msgstr "ĽÇĽŁĽšĽŻ %s ¤ĎŔľžď¤ĘÎΰčĽĆĄźĽÖĽë¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:1795
+#, c-format
+msgid "Cannot open %s\n"
+msgstr "%s ¤ňłŤ¤ą¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisk.c:1861
+msgid "This kernel finds the sector size itself - -b option ignored\n"
+msgstr ""
+"¤ł¤ÎĽŤĄźĽÍĽë¤ĎĽťĽŻĽżĽľĽ¤Ľş¤ňźŤĘŹÇ§źą¤ˇ¤Ţ¤š -- -b ĽŞĽ×ĽˇĽçĽó¤ĎĚľťë¤ˇ¤Ţ¤š\n"
+
+#: fdisk/fdisk.c:1864
+msgid ""
+"Warning: the -b (set sector size) option should be used with one specified "
+"device\n"
+msgstr ""
+"ˇŮšđ: -b (ĽťĽŻĽżĽľĽ¤ĽşŔßÄę) ĽŞĽ×ĽˇĽçĽó¤Ď 1 ¤Ä¤ÎĽÇĽĐĽ¤ĽšťŘÄę¤ČśŚ¤Ë\n"
+"ťČÍѤľ¤ě¤ë¤Ů¤­¤Ç¤š\n"
+
+#: fdisk/fdisk.c:1985
+#, c-format
+msgid "Using %s as default device!\n"
+msgstr "ĽÇĽŐĽŠĽëĽČĽÇĽĐĽ¤Ľš¤Č¤ˇ¤Ć %s ¤ňťČ¤¤¤Ţ¤šĄŞ\n"
+
+#: fdisk/fdisk.c:1991
+msgid "Command (m for help): "
+msgstr "ĽłĽŢĽóĽÉ (m ¤ÇĽŘĽëĽ×): "
+
+#: fdisk/fdisk.c:2005
+#, c-format
+msgid ""
+"\n"
+"The current boot file is: %s\n"
+msgstr ""
+"\n"
+"¸˝şß¤ÎĽÖĄźĽČĽŐĽĄĽ¤Ľë¤Ď: %s\n"
+
+#: fdisk/fdisk.c:2007
+msgid "Please enter the name of the new boot file: "
+msgstr "żˇ¤ż¤ĘĽÖĄźĽČĽŐĽĄĽ¤ĽëĚž¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤: "
+
+#: fdisk/fdisk.c:2009
+msgid "Boot file unchanged\n"
+msgstr "ĽÖĄźĽČĽŐĽĄĽ¤Ľë¤ňĘŃšš¤ˇ¤Ţ¤ť¤ó¤Ç¤ˇ¤ż\n"
+
+#: fdisk/fdisk.c:2069
+msgid ""
+"\n"
+"\tSorry, no experts menu for SGI partition tables available.\n"
+"\n"
+msgstr ""
+"\n"
+"\tťÄÇ°¤Ę¤Ź¤é SGI ÎΰčĽĆĄźĽÖĽëÍѤμ¨Ľ­ĽšĽŃĄźĽČĽáĽËĽĺĄź¤Ď\n"
+"\tÍŃ°Ő¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdiskaixlabel.c:29
+msgid ""
+"\n"
+"\tThere is a valid AIX label on this disk.\n"
+"\tUnfortunately Linux cannot handle these\n"
+"\tdisks at the moment. Nevertheless some\n"
+"\tadvice:\n"
+"\t1. fdisk will destroy its contents on write.\n"
+"\t2. Be sure that this disk is NOT a still vital\n"
+"\t part of a volume group. (Otherwise you may\n"
+"\t erase the other disks as well, if unmirrored.)\n"
+"\t3. Before deleting this physical volume be sure\n"
+"\t to remove the disk logically from your AIX\n"
+"\t machine. (Otherwise you become an AIXpert)."
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:97
+#, c-format
+msgid ""
+"\n"
+"BSD label for device: %s\n"
+msgstr ""
+"\n"
+"BSD ĽéĽŮĽëÍŃĽÇĽĐĽ¤Ľš: %s\n"
+
+#: fdisk/fdiskbsdlabel.c:106
+msgid " d delete a BSD partition"
+msgstr " d BSD Îΰč¤ňşď˝ü¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:107
+msgid " e edit drive data"
+msgstr " e ĽÉĽéĽ¤ĽÖĽÇĄźĽż¤ňĘÔ˝¸¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:108
+msgid " i install bootstrap"
+msgstr " i ĽÖĄźĽČĽšĽČĽéĽĂĽ×¤ňĽ¤ĽóĽšĽČĄźĽë¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:109
+msgid " l list known filesystem types"
+msgstr " l ´űĂΤμռĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ňĽęĽšĽČÉ˝ź¨¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:111
+msgid " n add a new BSD partition"
+msgstr " n żˇ¤ż¤Ë BSD Îΰč¤ňşîŔŽ¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:112
+msgid " p print BSD partition table"
+msgstr " p BSD ÎΰčĽĆĄźĽÖĽë¤ňÉ˝ź¨¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:117
+msgid " s show complete disklabel"
+msgstr " s ´°Á´¤ĘĽÇĽŁĽšĽŻĽéĽŮĽë¤ňÉ˝ź¨¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:118
+msgid " t change a partition's filesystem id"
+msgstr " t Îΰč¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ ID ¤ňĘŃšš¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:119
+msgid " w write disklabel to disk"
+msgstr " w ĽÇĽŁĽšĽŻĽéĽŮĽë¤ňĽÇĽŁĽšĽŻ¤Ë˝ń¤­šţ¤ŕ"
+
+#: fdisk/fdiskbsdlabel.c:121
+msgid " x link BSD partition to non-BSD partition"
+msgstr " x BSD Îΰč¤ňČó BSD Îΰč¤ČĽęĽóĽŻ¤š¤ë"
+
+#: fdisk/fdiskbsdlabel.c:146
+#, c-format
+msgid "Partition %s%d has invalid starting sector 0.\n"
+msgstr "Îΰč %s%d ¤ĎÉÔŔľ¤ĘťĎĹŔĽťĽŻĽż 0 ¤ÇťĎ¤Ţ¤Ă¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:150
+#, c-format
+msgid "Reading disklabel of %s%d at sector %d.\n"
+msgstr "%s%d ¤ÎĽÇĽŁĽšĽŻĽéĽŮĽë¤ÎĽťĽŻĽż %d ¤ňĆÉšţ¤ß¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:159
+#, c-format
+msgid "There is no *BSD partition on %s.\n"
+msgstr "%s ¤Ë¤Ď *BSD Îΰč¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:174
+msgid "BSD disklabel command (m for help): "
+msgstr "BSD ĽÇĽŁĽšĽŻĽéĽŮĽëĽłĽŢĽóĽÉ (m ¤ÇĽŘĽëĽ×): "
+
+#: fdisk/fdiskbsdlabel.c:286
+#, c-format
+msgid "type: %s\n"
+msgstr "ĽżĽ¤Ľ×: %s\n"
+
+#: fdisk/fdiskbsdlabel.c:288
+#, c-format
+msgid "type: %d\n"
+msgstr "ĽżĽ¤Ľ×: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:289
+#, c-format
+msgid "disk: %.*s\n"
+msgstr "ĽÇĽŁĽšĽŻ: %.*s\n"
+
+#: fdisk/fdiskbsdlabel.c:290
+#, c-format
+msgid "label: %.*s\n"
+msgstr "ĽéĽŮĽë: %.*s\n"
+
+#: fdisk/fdiskbsdlabel.c:291
+msgid "flags:"
+msgstr "ĽŐĽéĽ°:"
+
+#: fdisk/fdiskbsdlabel.c:293
+msgid " removable"
+msgstr " źč˝Đ¤ˇ˛ÄÇ˝"
+
+#: fdisk/fdiskbsdlabel.c:295
+msgid " ecc"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:297
+msgid " badsect"
+msgstr ""
+
+#. On various machines the fields of *lp are short/int/long
+#. In order to avoid problems, we cast them all to long.
+#: fdisk/fdiskbsdlabel.c:301
+#, c-format
+msgid "bytes/sector: %ld\n"
+msgstr "ĽĐĽ¤ĽČ/ĽťĽŻĽż: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:302
+#, c-format
+msgid "sectors/track: %ld\n"
+msgstr "ĽťĽŻĽż/ĽČĽéĽĂĽŻ: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:303
+#, c-format
+msgid "tracks/cylinder: %ld\n"
+msgstr "ĽČĽéĽĂĽŻ/ĽˇĽęĽóĽŔ: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:304
+#, c-format
+msgid "sectors/cylinder: %ld\n"
+msgstr "ĽťĽŻĽż/ĽˇĽęĽóĽŔ: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:305
+#, c-format
+msgid "cylinders: %ld\n"
+msgstr "ĽˇĽęĽóĽŔ: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:306
+#, c-format
+msgid "rpm: %d\n"
+msgstr "˛óĹžżô: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:307
+#, c-format
+msgid "interleave: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:308
+#, c-format
+msgid "trackskew: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:309
+#, c-format
+msgid "cylinderskew: %d\n"
+msgstr "cylinderskew: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:310
+#, c-format
+msgid "headswitch: %ld\t\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:311
+#, c-format
+msgid "track-to-track seek: %ld\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:312
+msgid "drivedata: "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:321
+#, c-format
+msgid ""
+"\n"
+"%d partitions:\n"
+msgstr ""
+"\n"
+"%d ¸Ä¤ÎÎΰč:\n"
+
+#: fdisk/fdiskbsdlabel.c:322
+msgid "# size offset fstype [fsize bsize cpg]\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:378
+#, c-format
+msgid "Writing disklabel to %s%d.\n"
+msgstr "%s%d ¤ËĽÇĽŁĽšĽŻĽéĽŮĽë¤ň˝ń¤­šţ¤ß¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:381
+#, c-format
+msgid "Writing disklabel to %s.\n"
+msgstr "%s ¤ËĽÇĽŁĽšĽŻĽéĽŮĽë¤ň˝ń¤­šţ¤ß¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:392
+#, c-format
+msgid "%s%d contains no disklabel.\n"
+msgstr "%s%d ¤ĎĽÇĽŁĽšĽŻĽéĽŮĽë¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:395
+#, c-format
+msgid "%s contains no disklabel.\n"
+msgstr "%s ¤ĎĽÇĽŁĽšĽŻĽéĽŮĽë¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:399
+msgid "Do you want to create a disklabel? (y/n) "
+msgstr "ĽÇĽŁĽšĽŻĽéĽŮĽë¤ňşîŔŽ¤ˇ¤Ţ¤š¤Ť? (y/n) "
+
+#: fdisk/fdiskbsdlabel.c:438
+msgid "bytes/sector"
+msgstr "ĽĐĽ¤ĽČ/ĽťĽŻĽż"
+
+#: fdisk/fdiskbsdlabel.c:439
+msgid "sectors/track"
+msgstr "ĽťĽŻĽż/ĽČĽéĽĂĽŻ"
+
+#: fdisk/fdiskbsdlabel.c:440
+msgid "tracks/cylinder"
+msgstr "ĽČĽéĽĂĽŻ/ĽˇĽęĽóĽŔ"
+
+#: fdisk/fdiskbsdlabel.c:448
+msgid "sectors/cylinder"
+msgstr "ĽťĽŻĽż/ĽˇĽęĽóĽŔ"
+
+#: fdisk/fdiskbsdlabel.c:452
+msgid "Must be <= sectors/track * tracks/cylinder (default).\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:454
+msgid "rpm"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:455
+msgid "interleave"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:456
+msgid "trackskew"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:457
+msgid "cylinderskew"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:458
+msgid "headswitch"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:459
+msgid "track-to-track seek"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:500
+#, c-format
+msgid "Bootstrap: %sboot -> boot%s (%s): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:526
+msgid "Bootstrap overlaps with disk label!\n"
+msgstr "ĽÖĄźĽČĽšĽČĽéĽĂĽ×¤ŹĽÇĽŁĽšĽŻĽéĽŮĽë¤Č˝Ĺ¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŞ\n"
+
+#: fdisk/fdiskbsdlabel.c:547
+#, c-format
+msgid "Bootstrap installed on %s%d.\n"
+msgstr "ĽÖĄźĽČĽšĽČĽéĽĂĽ×¤Ď %s%d ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:549
+#, c-format
+msgid "Bootstrap installed on %s.\n"
+msgstr "ĽÖĄźĽČĽšĽČĽéĽĂĽ×¤Ď %s ¤ËĽ¤ĽóĽšĽČĄźĽë¤ľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:570
+#, c-format
+msgid "Partition (a-%c): "
+msgstr "Îΰč (a-%c): "
+
+#: fdisk/fdiskbsdlabel.c:601
+msgid "This partition already exists.\n"
+msgstr "¤ł¤ÎÎΰč¤Ď¤š¤Ç¤Ë¸şß¤ˇ¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:723
+#, c-format
+msgid "Warning: too many partitions (%d, maximum is %d).\n"
+msgstr "ˇŮšđ: Îΰ褏¿¤š¤Ž¤Ţ¤š (%d, şÇÂç¤Ď %d)ĄŁ\n"
+
+#: fdisk/fdiskbsdlabel.c:769
+msgid ""
+"\n"
+"Syncing disks.\n"
+msgstr ""
+"\n"
+"ĽÇĽŁĽšĽŻ¤ČĆą´ü¤ľ¤ť¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:56
+msgid "SGI volhdr"
+msgstr "SGI volhdr"
+
+#: fdisk/fdisksgilabel.c:57
+msgid "SGI trkrepl"
+msgstr "SGI trkrepl"
+
+#: fdisk/fdisksgilabel.c:58
+msgid "SGI secrepl"
+msgstr "SGI secrepl"
+
+#: fdisk/fdisksgilabel.c:59
+msgid "SGI raw"
+msgstr "SGI raw"
+
+#: fdisk/fdisksgilabel.c:60
+msgid "SGI bsd"
+msgstr "SGI bsd"
+
+#: fdisk/fdisksgilabel.c:61
+msgid "SGI sysv"
+msgstr "SGI sysv"
+
+#: fdisk/fdisksgilabel.c:62
+msgid "SGI volume"
+msgstr "SGI volume"
+
+#: fdisk/fdisksgilabel.c:63
+msgid "SGI efs"
+msgstr "SGI efs"
+
+#: fdisk/fdisksgilabel.c:64
+msgid "SGI lvol"
+msgstr "SGI lvol"
+
+#: fdisk/fdisksgilabel.c:65
+msgid "SGI rlvol"
+msgstr "SGI rlvol"
+
+#: fdisk/fdisksgilabel.c:66
+msgid "SGI xfs"
+msgstr "SGI xfs"
+
+#: fdisk/fdisksgilabel.c:67
+msgid "SGI xlvol"
+msgstr "SGI xlvol"
+
+#: fdisk/fdisksgilabel.c:68
+msgid "SGI rxlvol"
+msgstr "SGI rxlvol"
+
+#. Minix 1.4b and later
+#: fdisk/fdisksgilabel.c:69 fdisk/fdisksunlabel.c:52 fdisk/i386_sys_types.c:55
+msgid "Linux swap"
+msgstr "Linux ĽšĽďĽĂĽ×"
+
+#: fdisk/fdisksgilabel.c:70 fdisk/fdisksunlabel.c:53
+msgid "Linux native"
+msgstr "Linux native"
+
+#: fdisk/fdisksgilabel.c:143
+msgid ""
+"According to MIPS Computer Systems, Inc the Label must not contain more than "
+"512 bytes\n"
+msgstr ""
+"MIPS Computer Systems, Inc ¤Ë¤č¤ë¤ČĄ˘¤˝¤ÎĽéĽŮĽë¤Ď 512 ĽĐĽ¤ĽČ°Ęžĺ¤Ç¤Ę¤ą¤ě¤Đ\n"
+"¤Ę¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisksgilabel.c:162
+msgid "Detected sgi disklabel with wrong checksum.\n"
+msgstr "´Ö°ă¤Ă¤żĽÁĽ§ĽĂĽŻĽľĽŕĂͤΠsgi ĽÇĽŁĽšĽŻĽéĽŮĽë¤ň¸Ą˝Đ¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:186
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors\n"
+"%d cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"ĽÇĽŁĽšĽŻ %s (SGI ĽÇĽŁĽšĽŻĽéĽŮĽë): ĽŘĽĂĽÉ %d, ĽťĽŻĽż %d\n"
+"ĽˇĽęĽóĽŔ %d , ĘŞÍýĽˇĽęĽóĽŔ %d\n"
+"%d Ľ¨ĽŻĽšĽČĽéĽťĽŻĽż/ĽˇĽęĽóĽŔ, Ľ¤ĽóĽżĄźĽęĄźĽÖ %d:1\n"
+"%s\n"
+"ĽćĽËĽĂĽČ = %s of %d * 512 ĽĐĽ¤ĽČ\n"
+"\n"
+
+#: fdisk/fdisksgilabel.c:199
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"ĽÇĽŁĽšĽŻ %s (SGI ĽÇĽŁĽšĽŻĽéĽŮĽë): ĽŘĽĂĽÉ %d, ĽťĽŻĽż %d, ĽˇĽęĽóĽŔ %d\n"
+"ĽćĽËĽĂĽČ = %s of %d * 512 ĽĐĽ¤ĽČ\n"
+"\n"
+
+#: fdisk/fdisksgilabel.c:205
+#, c-format
+msgid ""
+"----- partitions -----\n"
+"%*s Info Start End Sectors Id System\n"
+msgstr ""
+"----- Îΰč -----\n"
+"%*s žđĘó ťĎĹŔ ˝ŞĹŔ ĽťĽŻĽż ID ĽˇĽšĽĆĽŕ\n"
+
+#: fdisk/fdisksgilabel.c:227
+#, c-format
+msgid ""
+"----- bootinfo -----\n"
+"Bootfile: %s\n"
+"----- directory entries -----\n"
+msgstr ""
+"----- ĽÖĄźĽČžđĘó -----\n"
+"ĽÖĄźĽČĽŐĽĄĽ¤Ľë: %s\n"
+"----- ĽÇĽŁĽěĽŻĽČĽęšŕĚÜ -----\n"
+
+#: fdisk/fdisksgilabel.c:237
+#, c-format
+msgid "%2d: %-10s sector%5u size%8u\n"
+msgstr "%2d: %-10s ĽťĽŻĽż%5u ĽľĽ¤Ľş%8u\n"
+
+#: fdisk/fdisksgilabel.c:298
+msgid ""
+"\n"
+"Invalid Bootfile!\n"
+"\tThe bootfile must be an absolute non-zero pathname,\n"
+"\te.g. \"/unix\" or \"/unix.save\".\n"
+msgstr ""
+"\n"
+"ÉÔŔľ¤ĘĽÖĄźĽČĽŐĽĄĽ¤Ľë¤Ç¤šĄŞ\n"
+"\t¤˝¤ÎĽÖĄźĽČĽŐĽĄĽ¤Ľë¤ĎŔäÂĐČ󼟼íĽŃĽšĚž¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤ó\n"
+"\tÎă. \"/unix\" ¤Ţ¤ż¤Ď \"/unix.save\"\n"
+
+#: fdisk/fdisksgilabel.c:305
+msgid ""
+"\n"
+"\tName of Bootfile too long: 16 bytes maximum.\n"
+msgstr ""
+"\n"
+"\tĽÖĄźĽČĽŐĽĄĽ¤ĽëĚž¤ŹÄš¤š¤Ž¤Ţ¤š -- şÇÂç 16 ĽĐĽ¤ĽČĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:310
+msgid ""
+"\n"
+"\tBootfile must have a fully qualified pathname.\n"
+msgstr ""
+"\n"
+"\tĽÖĄźĽČĽŐĽĄĽ¤Ľë¤ĎĽŐĽëĽŃĽš¤ÇťŘÄꤾ¤ě¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:315
+msgid ""
+"\n"
+"\tBe aware, that the bootfile is not checked for existence.\n"
+"\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n"
+msgstr ""
+"\n"
+"\tĽÖĄźĽČĽŐĽĄĽ¤Ľë¤Ď¤˝¤Î¸şß¤ňĽÁĽ§ĽĂĽŻ¤ľ¤ě¤Ę¤¤¤ł¤Č¤Ëľ¤¤Ĺ¤¤¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+"\tSGI ¤Î˝é´üĂÍ¤Ď \"/unix\" ¤ÇĄ˘ĽĐĽĂĽŻĽ˘ĽĂĽ×ÍŃ¤Ë¤Ď \"/unix.save\" ¤Ç¤šĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:343
+#, c-format
+msgid ""
+"\n"
+"\tBootfile is changed to \"%s\".\n"
+msgstr ""
+"\n"
+"\tĽÖĄźĽČĽŐĽĄĽ¤Ľë¤Ď \"%s\" ¤ËĘŃšš¤ľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:448
+msgid "More than one entire disk entry present.\n"
+msgstr "ĘŁżô¤ÎĽÇĽŁĽšĽŻÁ´ÂΤΚŕĚܤŹ¤˘¤ę¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:456 fdisk/fdisksunlabel.c:455
+msgid "No partitions defined\n"
+msgstr "Îΰ褏ÄęľÁ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisksgilabel.c:463
+msgid "IRIX likes when Partition 11 covers the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:465
+#, c-format
+msgid ""
+"The entire disk partition should start at block 0,\n"
+"not at diskblock %d.\n"
+msgstr ""
+"Á´ÂÎĽÇĽŁĽšĽŻĽŃĄźĽĆĽŁĽˇĽçĽó¤ĎĄ˘ĽÖĽíĽĂĽŻ 0 ¤Ť¤éťĎ¤Ţ¤ë¤Ů¤­¤Ç¤š¤ŹĄ˘\n"
+"ĽÇĽŁĽšĽŻĽÖĽíĽĂĽŻ %d ¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:469
+#, c-format
+msgid ""
+"The entire disk partition is only %d diskblock large,\n"
+"but the disk is %d diskblocks long.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:476
+msgid "One Partition (#11) should cover the entire disk.\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó (#11) ¤ĎĽÇĽŁĽšĽŻÁ´ÂΤňʤ¤Ś¤č¤Ś¤Ë¤š¤Ů¤­¤Ç¤šĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:488
+#, c-format
+msgid "Partition %d does not start on cylinder boundary.\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %d ¤ĎĄ˘ĽˇĽęĽóĽŔś­łŚ¤Ť¤éťĎ¤Ţ¤Ă¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:495
+#, c-format
+msgid "Partition %d does not end on cylinder boundary.\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %d ¤ĎĄ˘ĽˇĽęĽóĽŔś­łŚ¤Ç˝Ş¤ď¤Ă¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:503
+#, c-format
+msgid "The Partition %d and %d overlap by %d sectors.\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %d ¤Č %d ¤Ď %d ĽťĽŻĽż˝Ĺ¤Ę¤Ă¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:512 fdisk/fdisksgilabel.c:532
+#, c-format
+msgid "Unused gap of %8d sectors - sectors %8d-%d\n"
+msgstr "%8d ĽťĽŻĽż¤Î̤ťČÍŃĽŽĽăĽĂĽ× -- ĽťĽŻĽż %8d-%d\n"
+
+#: fdisk/fdisksgilabel.c:545
+msgid ""
+"\n"
+"The boot partition does not exist.\n"
+msgstr ""
+"\n"
+"ĽÖĄźĽČĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹÂ¸şß¤ˇ¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:549
+msgid ""
+"\n"
+"The swap partition does not exist.\n"
+msgstr ""
+"\n"
+"ĽšĽďĽĂĽ×ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹÂ¸şß¤ˇ¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:554
+msgid ""
+"\n"
+"The swap partition has no swap type.\n"
+msgstr ""
+"\n"
+"ĽšĽďĽĂĽ×ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹĽšĽďĽĂĽ×ĽżĽ¤Ľ×¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:558
+msgid "\tYou have chosen an unusual boot file name.\n"
+msgstr "\t¤˘¤Ę¤ż¤ĎĄ˘ĽÖĄźĽČĽŐĽĄĽ¤ĽëĚž¤Č¤ˇ¤ĆÄĚžď¤Č°Ű¤Ę¤ëĚžÁ°¤ňÁŞ¤Ó¤Ţ¤ˇ¤żĄŁ\n"
+
+#: fdisk/fdisksgilabel.c:569
+msgid "Sorry You may change the Tag of non-empty partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:576
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is of type \"SGI volhdr\", the IRIX system will rely on it to\n"
+"retrieve from its directory standalone tools like sash and fx.\n"
+"Only the \"SGI volume\" entire disk section may violate this.\n"
+"Type YES if you are sure about tagging this partition differently.\n"
+msgstr ""
+
+#. rebuild freelist
+#: fdisk/fdisksgilabel.c:621
+msgid "Do You know, You got a partition overlap on the disk?\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:691
+msgid "Attempting to generate entire disk entry automatically.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:698
+msgid "The entire disk is already covered with partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:703
+msgid "You got a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:712 fdisk/fdisksgilabel.c:741
+msgid ""
+"It is highly recommended that eleventh partition\n"
+"covers the entire disk and is of type `SGI volume'\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:728
+msgid "You will get a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:733
+#, c-format
+msgid " Last %s"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:756
+msgid ""
+"Building a new SGI disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content will be unrecoverable lost.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:784
+#, c-format
+msgid "Trying to keep parameters of partition %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:786
+#, c-format
+msgid "ID=%02x\tSTART=%d\tLENGTH=%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:43 fdisk/i386_sys_types.c:6
+msgid "Empty"
+msgstr "śő"
+
+#: fdisk/fdisksunlabel.c:45
+msgid "SunOS root"
+msgstr "SunOS ĽëĄźĽČ"
+
+#: fdisk/fdisksunlabel.c:46
+msgid "SunOS swap"
+msgstr "SunOS ĽšĽďĽĂĽ×"
+
+#: fdisk/fdisksunlabel.c:47
+msgid "SunOS usr"
+msgstr "SunOS usr"
+
+#: fdisk/fdisksunlabel.c:48
+msgid "Whole disk"
+msgstr "Whole disk"
+
+#: fdisk/fdisksunlabel.c:49
+msgid "SunOS stand"
+msgstr "SunOS stand"
+
+#: fdisk/fdisksunlabel.c:50
+msgid "SunOS var"
+msgstr "SunOS var"
+
+#: fdisk/fdisksunlabel.c:51
+msgid "SunOS home"
+msgstr "SunOS home"
+
+#: fdisk/fdisksunlabel.c:122
+msgid ""
+"Detected sun disklabel with wrong checksum.\n"
+"Probably you'll have to set all the values,\n"
+"e.g. heads, sectors, cylinders and partitions\n"
+"or force a fresh label (s command in main menu)\n"
+msgstr ""
+"´Ö°ă¤Ă¤żĽÁĽ§ĽĂĽŻĽľĽŕĂͤňťý¤Ä sun disklabel ¤ň¸Ą˝Đ¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+"¿ʏĄ˘¤˘¤Ę¤ż¤ĎÁ´¤Ć¤ÎĂͤňŔßÄꤡ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤¤Ç¤ˇ¤ç¤Ś\n"
+"Îă. ĽŘĽĂĽÉżôĄ˘ĽťĽŻĽżżôĄ˘ĽˇĽęĽóĽŔżôľÚ¤ÓĽŃĄźĽĆĽŁĽˇĽçĽóżô\n"
+"¤˘¤ë¤¤¤Ď fresh label ¤ňśŻŔŠ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ (ĽáĽ¤ĽóĽáĽËĽĺĄź¤Î s ĽłĽŢĽóĽÉ)\n"
+
+#: fdisk/fdisksunlabel.c:215
+#, c-format
+msgid "Autoconfigure found a %s%s%s\n"
+msgstr "źŤĆ°ŔßÄę¤Ç %s%s%s ¤ň¸Ť¤Ä¤ą¤Ţ¤ˇ¤ż\n"
+
+#: fdisk/fdisksunlabel.c:242
+msgid ""
+"Building a new sun disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+"żˇ¤ż¤Ę sun disklabel ¤ňš˝Ăۤˇ¤Ţ¤šĄŁĘŃšš¤Ď¤˘¤Ę¤ż¤Ź˝ń¤­šţ¤ß¤ňˇčÄꤚ¤ë¤Ţ¤ÇĄ˘\n"
+"ĽáĽâĽę¤Ë¤Î¤ßťÄ¤ˇ¤Ţ¤šĄŁ¤˝¤Î¸ĺ¤Ď¤â¤Á¤í¤óĄ˘°ĘÁ°¤ÎĆâÍƤĎÉü¸ľ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/fdisksunlabel.c:253
+msgid ""
+"Drive type\n"
+" ? auto configure\n"
+" 0 custom (with hardware detected defaults)"
+msgstr ""
+"ĽÉĽéĽ¤ĽÖĽżĽ¤Ľ×\n"
+" ? źŤĆ°ŔßÄę\n"
+" 0 ĽŤĽšĽżĽŕ (ĽĎĄźĽÉĽŚĽ§Ľ˘¤Ź¸Ą˝Đ¤ˇ¤żĂͤň˝é´üĂͤȤˇ¤Ć)"
+
+#: fdisk/fdisksunlabel.c:263
+msgid "Select type (? for auto, 0 for custom): "
+msgstr "ĽżĽ¤Ľ×¤ňÁޤó¤Ç¤Ż¤Ŕ¤ľ¤¤ (? ¤ÇźŤĆ°Ą˘0 ¤ÇĽŤĽšĽżĽŕ): "
+
+#: fdisk/fdisksunlabel.c:275
+msgid "Autoconfigure failed.\n"
+msgstr "źŤĆ°ŔßÄꤏźşÇÔ¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: fdisk/fdisksunlabel.c:303
+msgid "Sectors/track"
+msgstr "ĽťĽŻĽż/ĽČĽéĽĂĽŻ"
+
+#: fdisk/fdisksunlabel.c:310
+msgid "Alternate cylinders"
+msgstr "ÂĺÂŘĽˇĽęĽóĽŔżô"
+
+#: fdisk/fdisksunlabel.c:313
+msgid "Physical cylinders"
+msgstr "ĘŞÍýĽˇĽęĽóĽŔżô"
+
+#: fdisk/fdisksunlabel.c:316 fdisk/fdisksunlabel.c:681
+msgid "Rotation speed (rpm)"
+msgstr "˛óĹžżô (rpm)"
+
+#: fdisk/fdisksunlabel.c:318 fdisk/fdisksunlabel.c:674
+msgid "Interleave factor"
+msgstr "Ľ¤ĽóĽżĄźĽęĄźĽÖ"
+
+#: fdisk/fdisksunlabel.c:321 fdisk/fdisksunlabel.c:667
+msgid "Extra sectors per cylinder"
+msgstr "ĽˇĽęĽóĽŔËč¤ÎĆĂĘ̤ʼťĽŻĽż"
+
+#: fdisk/fdisksunlabel.c:334
+msgid "You may change all the disk params from the x menu"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+msgid "3,5\" floppy"
+msgstr "3,5\" ĽŐĽíĽĂĽÔĄź"
+
+#: fdisk/fdisksunlabel.c:337
+msgid "Linux custom"
+msgstr "Linux custom"
+
+#: fdisk/fdisksunlabel.c:418
+#, c-format
+msgid "Partition %d doesn't end on cylinder boundary\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %d ¤ĎĽˇĽęĽóĽŔś­łŚ¤Ç˝Ş¤ď¤Ă¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/fdisksunlabel.c:438
+#, c-format
+msgid "Partition %d overlaps with others in sectors %d-%d\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %d ¤Ďž¤ÎĽťĽŻĽż %d-%d ¤Č˝Ĺ¤Ę¤Ă¤Ć¤¤¤Ţ¤š\n"
+
+#: fdisk/fdisksunlabel.c:460
+#, c-format
+msgid "Unused gap - sectors 0-%d\n"
+msgstr "̤ťČÍŃĽŽĽăĽĂĽ× -- 0-%d ĽťĽŻĽż\n"
+
+#: fdisk/fdisksunlabel.c:462 fdisk/fdisksunlabel.c:466
+#, c-format
+msgid "Unused gap - sectors %d-%d\n"
+msgstr "̤ťČÍŃĽŽĽăĽĂĽ× -- %d-%d ĽťĽŻĽż\n"
+
+#: fdisk/fdisksunlabel.c:489
+msgid ""
+"Other partitions already cover the whole disk.\n"
+"Delete some/shrink them before retry.\n"
+msgstr ""
+"ž¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤Ź´ű¤ËĽÇĽŁĽšĽŻÁ´ÂΤňʤ¤Ă¤Ć¤¤¤Ţ¤šĄŁ\n"
+"¤Ţ¤ş¤˝¤ě¤ňşď˝ü¤ˇ¤Ć¤Ť¤é¤â¤Ś°ěĹٝ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: fdisk/fdisksunlabel.c:547
+#, c-format
+msgid ""
+"You haven't covered the whole disk with the 3rd partition, but your value\n"
+"%d %s covers some other partition. Your entry has been changed\n"
+"to %d %s\n"
+msgstr ""
+"3 ČÖĚܤμѥźĽĆĽŁĽˇĽçĽó¤ŹĽÇĽŁĽšĽŻÁ´ÂΤňʤ¤Ă¤Ć¤¤¤Ţ¤ť¤ó¤ŹĄ˘ťŘÄęĂÍ %d %s ¤Ď\n"
+"ž¤Î¤¤¤Ż¤Ä¤Ť¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ňʤ¤Ă¤Ć¤¤¤Ţ¤šĄŁ¤˘¤Ę¤ż¤ÎšŕĚÜ¤Ď %d %s ¤Ë\n"
+"ĘŃšš¤ľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: fdisk/fdisksunlabel.c:567
+#, c-format
+msgid ""
+"If you want to maintain SunOS/Solaris compatibility, consider leaving this\n"
+"partition as Whole disk (5), starting at 0, with %u sectors\n"
+msgstr ""
+"¤â¤ˇ¤â SunOS/Solaris ¸ß´š¤ň°Ýťý¤ˇ¤ż¤¤¤Î¤Ç¤˘¤ě¤ĐĄ˘¤ł¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ň\n"
+"Whole disk (5) ¤Î¤Ţ¤Ţ¤Ë¤ˇ¤Ć¤Ş¤Ż¤ł¤Č¤ňšÍθ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+"0 ¤Ť¤éťĎ¤Ţ¤ë %u ĽťĽŻĽżĘŹ¤Ç¤š\n"
+
+#: fdisk/fdisksunlabel.c:580
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n"
+"there may destroy your partition table and bootblock.\n"
+"Type YES if you're very sure you would like that partition\n"
+"tagged with 82 (Linux swap): "
+msgstr ""
+"¤˝¤ÎĽŞĽŐĽťĽĂĽČ 0 ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤Ď UFS, EXT2FS ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ŤĄ˘\n"
+"SunOS swap ¤Č¤š¤ë¤ł¤Č¤ňśŻ¤ŻżäžŠ¤ˇ¤Ţ¤šĄŁ¤˝¤ł¤Ë Linux swap ¤ňĂÖ¤Ż¤ł¤Č¤ĎĄ˘\n"
+"ĽŃĄźĽĆĽŁĽˇĽçĽóĽĆĄźĽÖĽë¤äĽÖĄźĽČĽÖĽíĽĂĽŻ¤ňÇ˲ő¤š¤ë¤ł¤Č¤Ë¤Ę¤ę¤Ť¤Í¤Ţ¤ť¤óĄŁ\n"
+"¤â¤ˇĄ˘¤˘¤Ę¤ż¤ŹËÜĹö¤ËĽŃĄźĽĆĽŁĽˇĽçĽó¤ËÉäšç 82 (Linux swap) ¤ň¤Ä¤ą¤ż¤ą¤ě¤Đ\n"
+"YES ¤ČĹú¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤: "
+
+#: fdisk/fdisksunlabel.c:611
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n"
+"%d cylinders, %d alternate cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"ĽÇĽŁĽšĽŻ %s (Sun ĽÇĽŁĽšĽŻĽéĽŮĽë): ĽŘĽĂĽÉ %d, ĽťĽŻĽż %d, ˛óĹžżô %d rpm\n"
+"ĽˇĽęĽóĽŔ %d, ÂĺÂŘĽˇĽęĽóĽŔ %d, ĘŞÍýĽˇĽęĽóĽŔ %d\n"
+"%d Ľ¨ĽŻĽšĽČĽéĽťĽŻĽż/ĽˇĽęĽóĽŔ, Ľ¤ĽóĽżĄźĽęĄźĽÖ %d:1\n"
+"%s\n"
+"ĽćĽËĽĂĽČ = %s of %d * 512 ĽĐĽ¤ĽČ\n"
+"\n"
+
+#: fdisk/fdisksunlabel.c:625
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %s of %d * 512 bytes\n"
+"\n"
+msgstr ""
+"\n"
+"ĽÇĽŁĽšĽŻ %s (Sun ĽÇĽŁĽšĽŻĽéĽŮĽë): ĽŘĽĂĽÉ %d, ĽťĽŻĽż %d, ĽˇĽęĽóĽŔ %d\n"
+"ĽćĽËĽĂĽČ = %s of %d * 512 ĽĐĽ¤ĽČ\n"
+"\n"
+
+#: fdisk/fdisksunlabel.c:630
+#, c-format
+msgid "%*s Flag Start End Blocks Id System\n"
+msgstr "%*s ĽŐĽéĽ° ťĎĹŔ ˝ŞĹŔ ĽÖĽíĽĂĽŻ ID ĽˇĽšĽĆĽŕ\n"
+
+#: fdisk/fdisksunlabel.c:655
+msgid "Number of alternate cylinders"
+msgstr "ÂĺÂŘĽˇĽęĽóĽŔżô"
+
+#: fdisk/fdisksunlabel.c:688
+msgid "Number of physical cylinders"
+msgstr "ĘŞÍýĽˇĽęĽóĽŔżô"
+
+#: fdisk/i386_sys_types.c:7
+msgid "FAT12"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:8
+msgid "XENIX root"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:9
+msgid "XENIX usr"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:10
+msgid "FAT16 <32M"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:11
+msgid "Extended"
+msgstr "łČÄĽÎΰč"
+
+#. DOS 3.3+ extended partition
+#: fdisk/i386_sys_types.c:12
+msgid "FAT16"
+msgstr ""
+
+#. DOS 16-bit >=32M
+#: fdisk/i386_sys_types.c:13
+msgid "HPFS/NTFS"
+msgstr "HPFS/NTFS"
+
+#. OS/2 IFS, eg, HPFS or NTFS or QNX
+#: fdisk/i386_sys_types.c:14
+msgid "AIX"
+msgstr ""
+
+#. AIX boot (AIX -- PS/2 port) or SplitDrive
+#: fdisk/i386_sys_types.c:15
+msgid "AIX bootable"
+msgstr "AIX ĽÖĄźĽČ˛ÄÇ˝"
+
+#. AIX data or Coherent
+#: fdisk/i386_sys_types.c:16
+msgid "OS/2 Boot Manager"
+msgstr "OS/2 ĽÖĄźĽČĽŢĽÍĄźĽ¸Ľă"
+
+#. OS/2 Boot Manager
+#: fdisk/i386_sys_types.c:17
+msgid "Win95 FAT32"
+msgstr "Win95 FAT32"
+
+#: fdisk/i386_sys_types.c:18
+msgid "Win95 FAT32 (LBA)"
+msgstr "Win95 FAT32 (LBA)"
+
+#. LBA really is `Extended Int 13h'
+#: fdisk/i386_sys_types.c:19
+msgid "Win95 FAT16 (LBA)"
+msgstr "Win95 FAT16 (LBA)"
+
+#: fdisk/i386_sys_types.c:20
+msgid "Win95 Ext'd (LBA)"
+msgstr "Win95 łČÄĽÎΰč (LBA)"
+
+#: fdisk/i386_sys_types.c:21
+msgid "OPUS"
+msgstr "OPUS"
+
+#: fdisk/i386_sys_types.c:22
+msgid "Hidden FAT12"
+msgstr "ąŁ¤ˇ FAT12"
+
+#: fdisk/i386_sys_types.c:23
+msgid "Compaq diagnostics"
+msgstr "Compaq żÇĂÇ"
+
+#: fdisk/i386_sys_types.c:24
+msgid "Hidden FAT16 <32M"
+msgstr "ąŁ¤ˇ FAT16 <32M"
+
+#: fdisk/i386_sys_types.c:25
+msgid "Hidden FAT16"
+msgstr "ąŁ¤ˇ FAT16"
+
+#: fdisk/i386_sys_types.c:26
+msgid "Hidden HPFS/NTFS"
+msgstr "ąŁ¤ˇ HPFS/NTFS"
+
+#: fdisk/i386_sys_types.c:27
+msgid "AST Windows swapfile"
+msgstr "AST Windows ĽšĽďĽĂĽ×"
+
+#: fdisk/i386_sys_types.c:28
+msgid "Hidden Win95 FAT32"
+msgstr "Hidden Win95 FAT32"
+
+#: fdisk/i386_sys_types.c:29
+msgid "Hidden Win95 FAT32 (LBA)"
+msgstr "Hidden Win95 FAT32 (LBA)"
+
+#: fdisk/i386_sys_types.c:30
+msgid "Hidden Win95 FAT16 (LBA)"
+msgstr "Hidden Win95 FAT16 (LBA)"
+
+#: fdisk/i386_sys_types.c:31
+msgid "NEC DOS"
+msgstr "NEC DOS"
+
+#: fdisk/i386_sys_types.c:32
+msgid "PartitionMagic recovery"
+msgstr "PartitionMagic ˝¤Éü"
+
+#: fdisk/i386_sys_types.c:33
+msgid "Venix 80286"
+msgstr "Venix 80286"
+
+#: fdisk/i386_sys_types.c:34
+msgid "PPC PReP Boot"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:35
+msgid "SFS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:36
+msgid "QNX4.x"
+msgstr "QNX4.x"
+
+#: fdisk/i386_sys_types.c:37
+msgid "QNX4.x 2nd part"
+msgstr "QNX4.x 2nd part"
+
+#: fdisk/i386_sys_types.c:38
+msgid "QNX4.x 3rd part"
+msgstr "QNX4.x 3rd part"
+
+#: fdisk/i386_sys_types.c:39
+msgid "OnTrack DM"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:40
+msgid "OnTrack DM6 Aux1"
+msgstr ""
+
+#. (or Novell)
+#: fdisk/i386_sys_types.c:41
+msgid "CP/M"
+msgstr ""
+
+#. CP/M or Microport SysV/AT
+#: fdisk/i386_sys_types.c:42
+msgid "OnTrack DM6 Aux3"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:43
+msgid "OnTrackDM6"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:44
+msgid "EZ-Drive"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:45
+msgid "Golden Bow"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:46
+msgid "Priam Edisk"
+msgstr ""
+
+#. DOS R/O or SpeedStor
+#: fdisk/i386_sys_types.c:47 fdisk/i386_sys_types.c:76
+#: fdisk/i386_sys_types.c:78 fdisk/i386_sys_types.c:79
+msgid "SpeedStor"
+msgstr "SpeedStor"
+
+#: fdisk/i386_sys_types.c:48
+msgid "GNU HURD or SysV"
+msgstr "GNU HURD ¤Ţ¤ż¤Ď SysV"
+
+#. GNU HURD or Mach or Sys V/386 (such as ISC UNIX)
+#: fdisk/i386_sys_types.c:49
+msgid "Novell Netware 286"
+msgstr "Novell Netware 286"
+
+#: fdisk/i386_sys_types.c:50
+msgid "Novell Netware 386"
+msgstr "Novell Netware 386"
+
+#: fdisk/i386_sys_types.c:51
+msgid "DiskSecure Multi-Boot"
+msgstr "DiskSecure Multi-Boot"
+
+#: fdisk/i386_sys_types.c:52
+msgid "PC/IX"
+msgstr "PC/IX"
+
+#: fdisk/i386_sys_types.c:53
+msgid "Old Minix"
+msgstr "¸Ĺ¤¤ Minix"
+
+#. Minix 1.4a and earlier
+#: fdisk/i386_sys_types.c:54
+msgid "Minix / old Linux"
+msgstr "Minix / ¸Ĺ¤¤ Linux"
+
+#: fdisk/i386_sys_types.c:57
+msgid "OS/2 hidden C: drive"
+msgstr "OS/2 ąŁ¤ˇ C: ĽÉĽéĽ¤Ľô"
+
+#: fdisk/i386_sys_types.c:58
+msgid "Linux extended"
+msgstr "Linux łČÄĽÎΰč"
+
+#: fdisk/i386_sys_types.c:59 fdisk/i386_sys_types.c:60
+msgid "NTFS volume set"
+msgstr "NTFS ĽÜĽęĽĺĄźĽŕĽťĽĂĽČ"
+
+#: fdisk/i386_sys_types.c:61
+msgid "Amoeba"
+msgstr "Amoeba"
+
+#: fdisk/i386_sys_types.c:62
+msgid "Amoeba BBT"
+msgstr "Amoeba BBT"
+
+#. (bad block table)
+#: fdisk/i386_sys_types.c:63
+msgid "IBM Thinkpad hibernation"
+msgstr "IBM Thinkpad ĽĎĽ¤ĽĐĽÍĄźĽˇĽçĽó"
+
+#: fdisk/i386_sys_types.c:64
+msgid "BSD/386"
+msgstr "BSD/386"
+
+#: fdisk/i386_sys_types.c:65
+msgid "OpenBSD"
+msgstr "OpenBSD"
+
+#: fdisk/i386_sys_types.c:66
+msgid "NeXTSTEP"
+msgstr "NeXTSTEP"
+
+#: fdisk/i386_sys_types.c:67
+msgid "BSDI fs"
+msgstr "BSDI fs"
+
+#: fdisk/i386_sys_types.c:68
+msgid "BSDI swap"
+msgstr "BSDI ĽšĽďĽĂĽ×"
+
+#: fdisk/i386_sys_types.c:69
+msgid "DRDOS/sec (FAT-12)"
+msgstr "DRDOS/sec (FAT-12)"
+
+#: fdisk/i386_sys_types.c:70
+msgid "DRDOS/sec (FAT-16 < 32M)"
+msgstr "DRDOS/sec (FAT-16 < 32M)"
+
+#: fdisk/i386_sys_types.c:71
+msgid "DRDOS/sec (FAT-16)"
+msgstr "DRDOS/sec (FAT-16)"
+
+#: fdisk/i386_sys_types.c:72
+msgid "Syrinx"
+msgstr "Syrinx"
+
+#: fdisk/i386_sys_types.c:73
+msgid "CP/M / CTOS / ..."
+msgstr ""
+
+#. CP/M or Concurrent CP/M or Concurrent DOS or CTOS
+#: fdisk/i386_sys_types.c:74
+msgid "DOS access"
+msgstr ""
+
+#. DOS access or SpeedStor 12-bit FAT extended partition
+#: fdisk/i386_sys_types.c:75
+msgid "DOS R/O"
+msgstr ""
+
+#. SpeedStor 16-bit FAT extended partition < 1024 cyl.
+#: fdisk/i386_sys_types.c:77
+msgid "BeOS fs"
+msgstr "BeOS fs"
+
+#. SpeedStor large partition
+#: fdisk/i386_sys_types.c:80
+msgid "DOS secondary"
+msgstr "DOS ĽťĽŤĽóĽŔĽę"
+
+#. DOS 3.3+ secondary
+#: fdisk/i386_sys_types.c:81
+msgid "Linux raid autodetect"
+msgstr ""
+
+#. New (2.2.x) raid partition with autodetect
+#. using persistent superblock
+#: fdisk/i386_sys_types.c:83
+msgid "LANstep"
+msgstr ""
+
+#. SpeedStor >1024 cyl. or LANstep
+#: fdisk/i386_sys_types.c:84
+msgid "BBT"
+msgstr ""
+
+#: fdisk/sfdisk.c:148
+#, c-format
+msgid "seek error on %s - cannot seek to %lu\n"
+msgstr "%s ¤ÎĽˇĄźĽŻĽ¨ĽéĄź -- %lu ¤ňĽˇĄźĽŻ¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:153
+#, c-format
+msgid "seek error: wanted 0x%08x%08x, got 0x%08x%08x\n"
+msgstr "ĽˇĄźĽŻĽ¨ĽéĄź: 0x%08x%08x ¤Î¤Ď¤ş¤Ç¤ˇ¤ż¤Ź 0x%08x%08x ¤ňźő¤ąźč¤ę¤Ţ¤ˇ¤ż\n"
+
+#: fdisk/sfdisk.c:199
+msgid "out of memory - giving up\n"
+msgstr "ĽáĽâĽę¤ŹÂ­¤ę¤Ţ¤ť¤ó -- Äü¤á¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:203 fdisk/sfdisk.c:286
+#, c-format
+msgid "read error on %s - cannot read sector %lu\n"
+msgstr "%s ¤ÎĆɤߟč¤ęĽ¨ĽéĄź -- ĽťĽŻĽż %lu ¤ňĆɤá¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:219
+#, c-format
+msgid "ERROR: sector %lu does not have an msdos signature\n"
+msgstr "Ľ¨ĽéĄź: ĽťĽŻĽż %lu ¤Ë¤Ď msdos ĽľĽ¤Ľó¤Ź¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:236
+#, c-format
+msgid "write error on %s - cannot write sector %lu\n"
+msgstr "%s ¤Ř¤Î˝ń¤­šţ¤ßĽ¨ĽéĄź -- ĽťĽŻĽż %lu ¤Ë˝ń¤­šţ¤á¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:274
+#, c-format
+msgid "cannot open partition sector save file (%s)\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóĽťĽŻĽżĘݸĽŐĽĄĽ¤Ľë (%s) ¤ňĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:292
+#, c-format
+msgid "write error on %s\n"
+msgstr "%s ¤Ř¤Î˝ń¤­šţ¤ßĽ¨ĽéĄź\n"
+
+#: fdisk/sfdisk.c:310
+#, c-format
+msgid "cannot stat partition restore file (%s)\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóÉü¸ľĽŐĽĄĽ¤Ľë (%s) ¤ÎžđĘó¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:315
+msgid "partition restore file has wrong size - not restoring\n"
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽóÉü¸ľĽŐĽĄĽ¤Ľë¤ÎĽľĽ¤Ľş¤Ź´Ö°ă¤Ă¤Ć¤¤¤Ţ¤š -- Éü¸ľ¤ňšÔ¤Ę¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:319
+msgid "out of memory?\n"
+msgstr "ĽáĽâĽę¤ŹÂ­¤ę¤Ę¤¤ĄŠ\n"
+
+#: fdisk/sfdisk.c:325
+#, c-format
+msgid "cannot open partition restore file (%s)\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóÉü¸ľĽŐĽĄĽ¤Ľë (%s) ¤ňłŤ¤ą¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:331
+#, c-format
+msgid "error reading %s\n"
+msgstr "%s ¤ÎĆɤߟč¤ęĽ¨ĽéĄź\n"
+
+#: fdisk/sfdisk.c:338
+#, c-format
+msgid "cannot open device %s for writing\n"
+msgstr "ĽÇĽĐĽ¤Ľš %s ¤ň˝ń¤­šţ¤ß¤č¤Ś¤ËĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:350
+#, c-format
+msgid "error writing sector %lu on %s\n"
+msgstr "%s ¤ÎĽťĽŻĽż %lu ¤Ř¤Î˝ń¤­šţ¤ßĽ¨ĽéĄź\n"
+
+#: fdisk/sfdisk.c:416
+#, c-format
+msgid ""
+"Warning: start=%d - this looks like a partition rather than\n"
+"the entire disk. Using fdisk on it is probably meaningless.\n"
+"[Use the --force option if you really want this]\n"
+msgstr ""
+"ˇŮšđ: start=%d -- "
+"¤ł¤ÎĂͤϼѥźĽĆĽŁĽˇĽçĽó¤Ç¤Ď¤Ę¤ŻĽÇĽŁĽšĽŻ¤˝¤Î¤â¤Î¤Î¤č¤Ś¤Ç¤šĄŁ\n"
+"¤ł¤ł¤Ë fdisk ¤ňÍřÍѤš¤ë¤Î¤Ď¿ʏ°ŐĚŁ¤Ź¤Ę¤¤¤ł¤Č¤Ç¤šĄŁ\n"
+"[ËÜĹö¤Ë¤ł¤ě¤ňšÔ¤Ę¤¤¤ż¤ą¤ě¤ĐĄ˘--force ĽŞĽ×ĽˇĽçĽó¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤]\n"
+
+#: fdisk/sfdisk.c:422
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d heads\n"
+msgstr "ˇŮšđ: HDIO_GETGEO ¤ĎĽŘĽĂĽÉżô¤ň %d ¤ČĘÖ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: fdisk/sfdisk.c:425
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d sectors\n"
+msgstr "ˇŮšđ: HDIO_GETGEO ¤ĎĽťĽŻĽżżô¤ň %d ¤ČĘÖ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: fdisk/sfdisk.c:428
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d cylinders\n"
+msgstr "ˇŮšđ: HDIO_GETGEO ¤ĎĽˇĽęĽóĽŔżô¤ň %d ¤ČĘÖ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: fdisk/sfdisk.c:432
+#, c-format
+msgid "Disk %s: cannot get geometry\n"
+msgstr "ĽÇĽŁĽšĽŻ %s: Ľ¸ĽŞĽáĽČĽę¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:434
+#, c-format
+msgid ""
+"Warning: unlikely number of sectors (%d) - usually at most 63\n"
+"This will give problems with all software that uses C/H/S addressing.\n"
+msgstr ""
+"ˇŮšđ: ĽťĽŻĽżżô (%d) ¤ŹËž¤Ţ¤ˇ¤Ż¤˘¤ę¤Ţ¤ť¤ó -- ÂçÄń¤Îžěšç 63 ¤Ç¤šĄŁ\n"
+"¤ł¤ě¤ĎĄ˘C/H/S ¤ňĽ˘ĽÉĽěĽšźčĆŔ¤ËÍřÍѤˇ¤Ć¤¤¤ëÁ´¤Ć¤ÎĽ˝ĽŐĽČĽŚĽ§Ľ˘¤ÇĄ˘\n"
+"ĚäÂꤏŔ¸¤ş¤ë¤ł¤Č¤Ë¤Ę¤ę¤Ţ¤šĄŁ\n"
+
+#: fdisk/sfdisk.c:438
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %lu cylinders, %lu heads, %lu sectors/track\n"
+msgstr ""
+"\n"
+"ĽÇĽŁĽšĽŻ %s: ĽˇĽęĽóĽŔżô %luĄ˘ĽŘĽĂĽÉżô %luĄ˘%lu ĽťĽŻĽż/ĽČĽéĽĂĽŻ\n"
+
+#: fdisk/sfdisk.c:518
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for head: %d (should be in 0-%d)\n"
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽó %2$s ¤ÎĽŘĽĂĽÉżô¤Č¤ˇ¤Ć %1$s ¤ĎÉÔ˛ÄÇ˝¤Ç¤š:\n"
+" (0-%3$d ¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤)\n"
+
+#: fdisk/sfdisk.c:523
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for sector: %d (should be in 1-%d)\n"
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽó %2$s ¤ÎĽťĽŻĽżżô¤Č¤ˇ¤Ć %1$s ¤ĎÉÔ˛ÄÇ˝¤Ç¤š:\n"
+" (1-%3$d ¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤ó)\n"
+
+#: fdisk/sfdisk.c:528
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for cylinders: %d (should be in "
+"0-%d)\n"
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽó %2$s ¤ÎĽˇĽęĽóĽŔżô¤Č¤ˇ¤Ć %1$s ¤ĎÉÔ˛ÄÇ˝¤Ç¤š:\n"
+" (0-%3$d ¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤ó)\n"
+
+#: fdisk/sfdisk.c:567
+msgid ""
+"Id Name\n"
+"\n"
+msgstr ""
+"Id ĚžÁ°\n"
+"\n"
+
+#: fdisk/sfdisk.c:720
+msgid "Re-reading the partition table ...\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóĽĆĄźĽÖĽë¤ňşĆĆɤߚţ¤ßĂć...\n"
+
+#: fdisk/sfdisk.c:726
+msgid ""
+"The command to re-read the partition table failed\n"
+"Reboot your system now, before using mkfs\n"
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽóşÝĆÉšţ¤ßĽłĽŢĽóĽÉ¤ŹźşÇÔ¤ˇ¤Ţ¤ˇ¤ż\n"
+"mkfs ¤ňťČ¤ŚÁ°¤ËĄ˘ĽˇĽšĽĆĽŕ¤ňşĆľŻĆ°¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤\n"
+
+#: fdisk/sfdisk.c:731
+#, c-format
+msgid "Error closing %s\n"
+msgstr "%s ¤ÎĽŻĽíĄźĽşĽ¨ĽéĄź\n"
+
+#: fdisk/sfdisk.c:769
+#, c-format
+msgid "%s: no such partition\n"
+msgstr "%s: ¤˝¤Î¤č¤Ś¤ĘĽŃĄźĽĆĽŁĽˇĽçĽó¤Ď¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:792
+msgid "unrecognized format - using sectors\n"
+msgstr "ǧźą¤Ç¤­¤Ę¤¤ĽŐĽŠĄźĽŢĽĂĽČ -- ĽťĽŻĽżżô¤ňÍřÍѤˇ¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:831
+#, c-format
+msgid "# partition table of %s\n"
+msgstr "# %s ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽóĽĆĄźĽÖĽë\n"
+
+#: fdisk/sfdisk.c:832
+msgid ""
+"unit: sectors\n"
+"\n"
+msgstr ""
+"unit: ĽťĽŻĽżżô\n"
+"\n"
+
+#: fdisk/sfdisk.c:842
+#, c-format
+msgid "unimplemented format - using %s\n"
+msgstr "̤źÂÁő¤ÎĽŐĽŠĄźĽŢĽĂĽČ -- %s ¤ňÍřÍѤˇ¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:846
+#, c-format
+msgid ""
+"Units = cylinders of %lu bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+"ĽćĽËĽĂĽČ = %lu ĽĐĽ¤ĽČ¤ÎĽˇĽęĽóĽŔĄ˘1024 ĽĐĽ¤ĽČ¤ÎĽÖĽíĽĂĽŻĄ˘%d ¤Ť¤éżô¤¨¤Ţ¤š\n"
+"\n"
+
+#: fdisk/sfdisk.c:849
+msgid " Device Boot Start End #cyls #blocks Id System\n"
+msgstr "ĽÇĽĐĽ¤Ľš ĽÖĄźĽČ ťĎĹŔ ˝ŞĹŔ #ĽˇĽęĽóĽŔ #ĽÖĽíĽĂĽŻ ID ĽˇĽšĽĆĽŕ\n"
+
+#: fdisk/sfdisk.c:854
+#, c-format
+msgid ""
+"Units = sectors of 512 bytes, counting from %d\n"
+"\n"
+msgstr ""
+"ĽćĽËĽĂĽČ = 512 ĽĐĽ¤ĽČ¤ÎĽťĽŻĽżĄ˘%d ¤Ť¤éżô¤¨¤Ţ¤š\n"
+"\n"
+
+#: fdisk/sfdisk.c:856
+msgid " Device Boot Start End #sectors Id System\n"
+msgstr " ĽÇĽĐĽ¤Ľš ĽÖĄźĽČ ťĎĹŔ ˝ŞĹŔ #ĽťĽŻĽż ID ĽˇĽšĽĆĽŕ\n"
+
+#: fdisk/sfdisk.c:859
+#, c-format
+msgid ""
+"Units = blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+"ĽćĽËĽĂĽČ = 1024 ĽĐĽ¤ĽČ¤ÎĽÖĽíĽĂĽŻĄ˘%d ¤Ť¤éżô¤¨¤Ţ¤š\n"
+"\n"
+
+#: fdisk/sfdisk.c:861
+msgid " Device Boot Start End #blocks Id System\n"
+msgstr " ĽÇĽĐĽ¤Ľš ĽÖĄźĽČ ťĎĹŔ ˝ŞĹŔ #ĽÖĽíĽĂĽŻ ID ĽˇĽšĽĆĽŕ\n"
+
+#: fdisk/sfdisk.c:864
+#, c-format
+msgid ""
+"Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+"Units = 1048576 ĽĐĽ¤ĽČ¤ňĽáĽŹĽĐĽ¤ĽČĄ˘1024 ĽĐĽ¤ĽČ¤ÎĽÖĽíĽĂĽŻĄ˘%d ¤Ť¤éżô¤¨¤Ţ¤š\n"
+"\n"
+
+#: fdisk/sfdisk.c:866
+msgid " Device Boot Start End MB #blocks Id System\n"
+msgstr "ĽÇĽĐĽ¤Ľš ĽÖĄźĽČ ťĎĹŔ ˝ŞĹŔ MB #ĽÖĽíĽĂĽŻ ID ĽˇĽšĽĆĽŕ\n"
+
+#: fdisk/sfdisk.c:932
+#, c-format
+msgid " start=%9lu"
+msgstr " łŤťĎ=%9lu"
+
+#: fdisk/sfdisk.c:933
+#, c-format
+msgid ", size=%8lu"
+msgstr ", ĽľĽ¤Ľş=%8lu"
+
+#: fdisk/sfdisk.c:935
+#, c-format
+msgid ", Id=%2x"
+msgstr ", Id=%2x"
+
+#: fdisk/sfdisk.c:937
+msgid ", bootable"
+msgstr ", ĽÖĄźĽČ˛Ä"
+
+#: fdisk/sfdisk.c:998
+#, c-format
+msgid "\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr "\t\tłŤťĎ: (c,h,s) ´üÂÔĂÍ (%ld,%ld,%ld) (%ld,%ld,%ld) ¤ňČŻ¸Ť\n"
+
+#: fdisk/sfdisk.c:1005
+#, c-format
+msgid "\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr "\t\t˝ŞĹŔ: (c,h,s) ´üÂÔĂÍ (%ld,%ld,%ld) (%ld,%ld,%ld) ¤ňČŻ¸Ť\n"
+
+#: fdisk/sfdisk.c:1008
+#, c-format
+msgid "partition ends on cylinder %ld, beyond the end of the disk\n"
+msgstr "ĽˇĽęĽóĽŔ %ld ¤ËĽŃĄźĽĆĽŁĽˇĽçĽó¤Î˝ŞĹŔĄ˘ĽÇĽŁĽšĽŻ¤ÎşÇ¸ĺ¤ňąŰ¤¨¤Ć¤¤¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1018
+msgid "No partitions found\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤Ź¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1021
+#, c-format
+msgid ""
+"Warning: The first partition looks like it was made\n"
+" for C/H/S=*/%ld/%ld (instead of %ld/%ld/%ld).\n"
+"For this listing I'll assume that geometry.\n"
+msgstr ""
+"ˇŮšđ: şÇ˝é¤ÎÎΰč¤Ď C/H/S=*/%ld/%ld ¤Č¤ˇ¤ĆşîŔŽ¤ľ¤ě¤ż¤č¤Ś¤Ç¤š\n"
+" (%ld/%ld/%ld ¤Î¤Ť¤ď¤ę¤Ë)ĄŁ\n"
+"¤ł¤ÎĽęĽšĽČ¤ĎĄ˘¤˝¤ÎĽ¸ĽŞĽáĽČĽę¤Č¸Ť¤Ę¤ˇ¤Ţ¤šĄŁ\n"
+
+#: fdisk/sfdisk.c:1068
+msgid "no partition table present.\n"
+msgstr "¸˝şßĽŃĄźĽĆĽŁĽˇĽçĽóžđĘó¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/sfdisk.c:1070
+#, c-format
+msgid "strange, only %d partitions defined.\n"
+msgstr "ĘѤǤšĄ˘%d ¤Ä¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤ˇ¤ŤÄęľÁ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/sfdisk.c:1079
+#, c-format
+msgid "Warning: partition %s has size 0 but is not marked Empty\n"
+msgstr ""
+"ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤ĎĽľĽ¤Ľş 0 ¤Ç¤š¤ŹĄ˘śő¤Č¤ˇ¤ĆĽŢĄźĽŻ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1082
+#, c-format
+msgid "Warning: partition %s has size 0 and is bootable\n"
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤ĎĽľĽ¤Ľş 0 ¤Ę¤Î¤ËĽÖĄźĽČ˛ÄÇ˝¤Ç¤šĄŁ\n"
+
+#: fdisk/sfdisk.c:1085
+#, c-format
+msgid "Warning: partition %s has size 0 and nonzero start\n"
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤ĎĽľĽ¤Ľş 0 ¤ÇĄ˘Č󼟼í¤ÎłŤťĎ°ĚĂ֤Ǥš\n"
+
+#: fdisk/sfdisk.c:1096
+#, c-format
+msgid "Warning: partition %s "
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤ĎĄ˘"
+
+#: fdisk/sfdisk.c:1097
+#, c-format
+msgid "is not contained in partition %s\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤Ë´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1108
+#, c-format
+msgid "Warning: partitions %s "
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s "
+
+#: fdisk/sfdisk.c:1109
+#, c-format
+msgid "and %s overlap\n"
+msgstr "¤Č %s ¤Ź˝Ĺ¤Ę¤Ă¤Ć¤¤¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1120
+#, c-format
+msgid "Warning: partition %s contains part of "
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤Ź"
+
+#: fdisk/sfdisk.c:1121
+#, c-format
+msgid "the partition table (sector %lu),\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %s (ĽťĽŻĽż %lu)¤Î°ěÉô¤ň´Ţ¤ó¤Ç¤Ş¤ęĄ˘\n"
+
+#: fdisk/sfdisk.c:1122
+msgid "and will destroy it when filled\n"
+msgstr "¤ł¤ě¤ňšÔ¤Ś¤ČĄ˘Ç˲ő¤ľ¤ě¤Ć¤ˇ¤Ţ¤Ś¤ł¤Č¤Ë¤Ę¤ë¤Ç¤ˇ¤ç¤Ś\n"
+
+#: fdisk/sfdisk.c:1131
+#, c-format
+msgid "Warning: partition %s starts at sector 0\n"
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤ŹĽťĽŻĽż 0 ¤Ť¤éťĎ¤Ţ¤Ă¤Ć¤¤¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1135
+#, c-format
+msgid "Warning: partition %s extends past end of disk\n"
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤ĎĽÇĽŁĽšĽŻ¤Î˝Ş¤ę¤ňąŰ¤¨¤Ć¤¤¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1149
+msgid "Among the primary partitions, at most one can be extended\n"
+msgstr "´đËÜÎΰčĽŃĄźĽĆĽŁĽˇĽçĽó¤Ç¤ĎĄ˘łČÄĽĽŃĄźĽĆĽŁĽˇĽçĽó¤Ď°ě¤Ä¤Ŕ¤ąşî¤ě¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1150
+msgid " (although this is not a problem under Linux)\n"
+msgstr " (Linux ¤Ç¤ĎĚäÂę¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó¤ą¤É¤â)\n"
+
+#: fdisk/sfdisk.c:1167
+#, c-format
+msgid "Warning: partition %s does not start at a cylinder boundary\n"
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤ĎĽˇĽęĽóĽŔś­łŚ¤Ť¤éťĎ¤Ţ¤Ă¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1173
+#, c-format
+msgid "Warning: partition %s does not end at a cylinder boundary\n"
+msgstr "ˇŮšđ: ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤ĎĽˇĽęĽóĽŔś­łŚ¤Ç˝Ş¤ď¤Ă¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1191
+msgid ""
+"Warning: more than one primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+"ˇŮšđ: ĘŁżô¤Î´đËÜÎΰčĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹĽÖĄźĽČ˛ÄÇ˝¤ËťŘÄꤾ¤ě¤Ć¤¤¤Ţ¤š\n"
+"LILO ¤Ë¤Č¤Ă¤Ć¤ĎĚäÂꤢ¤ę¤Ţ¤ť¤ó¤ŹĄ˘DOS ¤Î MBR ¤Ď¤ł¤ÎĽÇĽŁĽšĽŻ¤ňĽÖĄźĽČ¤Ç¤­¤Ę¤Ż\n"
+"¤Ę¤Ă¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ\n"
+
+#: fdisk/sfdisk.c:1198
+msgid ""
+"Warning: usually one can boot from primary partitions only\n"
+"LILO disregards the `bootable' flag.\n"
+msgstr ""
+"ˇŮšđ: ÉáÄ̤ϼ׼鼤ĽŢĽęĽŃĄźĽĆĽŁĽˇĽçĽó°ě¤Ä¤ňĽÖĄźĽČ¤Ç¤­¤ë¤č¤Ś¤Ë¤ˇ¤Ţ¤šĄŁ\n"
+"LILO ¤Ď `ĽÖĄźĽČ˛ÄÇ˝' ĽŐĽéĽ°¤ňĚľťë¤ˇ¤Ţ¤š¤ą¤É¤âĄŁ\n"
+
+#: fdisk/sfdisk.c:1204
+msgid ""
+"Warning: no primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+"ˇŮšđ: ĽÖĄźĽČ˛ÄÇ˝´đËÜÎΰčĽŃĄźĽĆĽŁĽˇĽçĽó¤Ź¤˘¤ę¤Ţ¤ť¤ó\n"
+"LILO ¤Ë¤Č¤Ă¤Ć¤ĎĚäÂꤢ¤ę¤Ţ¤ť¤ó¤ŹĄ˘DOS MBR ¤Ď¤ł¤ÎĽÇĽŁĽšĽŻ¤ňĽÖĄźĽČ¤Ç¤­¤Ę¤Ż\n"
+"¤Ę¤Ă¤Ć¤ˇ¤Ţ¤¤¤Ţ¤šĄŁ\n"
+
+#: fdisk/sfdisk.c:1221
+#, c-format
+msgid ""
+"partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽó %s: ťĎĹŔ: (c,h,s) ´üÂÔĂÍ (%ld,%ld,%ld) (%ld,%ld,%ld) ¤ňČŻ¸Ť\n"
+
+#: fdisk/sfdisk.c:1230
+#, c-format
+msgid "partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+"ĽŃĄźĽĆĽŁĽˇĽçĽó %s: ˝ŞĹŔ: (c,h,s) ´üÂÔĂÍ (%ld,%ld,%ld) (%ld,%ld,%ld) ¤ňČŻ¸Ť\n"
+
+#: fdisk/sfdisk.c:1233
+#, c-format
+msgid "partition %s ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+"ĽˇĽęĽóĽŔ %2$ld ¤Ë¤˘¤ëĽŃĄźĽĆĽŁĽˇĽçĽó %1$s "
+"¤Î˝ŞĹŔ¤ĎĽÇĽŁĽšĽŻ¤ÎşÇ¸ĺ¤ňąŰ¤¨¤Ć¤¤¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1266 fdisk/sfdisk.c:1343
+#, c-format
+msgid "too many partitions - ignoring those past nr (%d)\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹÂż¤š¤Ž¤Ţ¤š -- nr (%d) °Ęšß¤ňĚľťë¤ˇ¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1281
+msgid "tree of partitions?\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ÎĽÄĽęĄźĄŠ\n"
+
+#: fdisk/sfdisk.c:1385
+msgid "detected Disk Manager - unable to handle that\n"
+msgstr "Disk Manager ¤ň¸Ą˝Đ -- ¤ł¤ě¤ňĘáÂŞ¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1392
+msgid "DM6 signature found - giving up\n"
+msgstr "DM6 ĽľĽ¤Ľó¤ňČŻ¸Ť -- Äü¤á¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1412
+msgid "strange..., an extended partition of size 0?\n"
+msgstr "ĘѤǤš..., ĽľĽ¤Ľş 0 ¤ÎłČÄĽĽŃĄźĽĆĽŁĽˇĽçĽó ĄŠ\n"
+
+#: fdisk/sfdisk.c:1419
+msgid "strange..., a BSD partition of size 0?\n"
+msgstr "ĘѤǤš..., ĽľĽ¤Ľş 0 ¤Î BSD ĽŃĄźĽĆĽŁĽˇĽçĽóĄŠ\n"
+
+#: fdisk/sfdisk.c:1451
+#, c-format
+msgid " %s: unrecognized partition\n"
+msgstr " %s: ǧźą¤Ç¤­¤Ę¤¤ĽŃĄźĽĆĽŁĽˇĽçĽó\n"
+
+#: fdisk/sfdisk.c:1463
+msgid "-n flag was given: Nothing changed\n"
+msgstr "-n ĽŐĽéĽ°¤ŹÍż¤¨¤é¤ě¤Ţ¤ˇ¤ż: ˛ż¤âĘŃšš¤ˇ¤Ţ¤ť¤ó¤Ç¤ˇ¤ż\n"
+
+#: fdisk/sfdisk.c:1476
+msgid "Failed saving the old sectors - aborting\n"
+msgstr "¸Ĺ¤¤ĽťĽŻĽż¤ÎĘݸ¤ËźşÇÔ -- ĂćĂǤˇ¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1481
+#, c-format
+msgid "Failed writing the partition on %s\n"
+msgstr "%s ¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó˝ń¤­šţ¤ß¤ËźşÇÔ\n"
+
+#: fdisk/sfdisk.c:1558
+msgid "long or incomplete input line - quitting\n"
+msgstr "Äš¤¤¤ŤÉÔ´°Á´¤ĘšÔ¤ÎĆţÎĎ -- Ăćťß¤ˇ¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1594
+#, c-format
+msgid "input error: `=' expected after %s field\n"
+msgstr "ĆţÎĎĽ¨ĽéĄź: `=' ¤Ď %s ĽŐĽŁĄźĽëĽÉ¤Î¸ĺ¤Ë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤\n"
+
+#: fdisk/sfdisk.c:1601
+#, c-format
+msgid "input error: unexpected character %c after %s field\n"
+msgstr "ĆţÎĎĽ¨ĽéĄź: %2$s ĽŐĽŁĄźĽëĽÉ¤Î¸ĺ¤ÎÍ˝´ü¤ˇ¤Ę¤¤Ę¸ťú `%1$c'\n"
+
+#: fdisk/sfdisk.c:1607
+#, c-format
+msgid "unrecognized input: %s\n"
+msgstr "ǧźą¤Ç¤­¤Ę¤¤ĆţÎĎ: %s\n"
+
+#: fdisk/sfdisk.c:1639
+msgid "number too big\n"
+msgstr "żôťú¤ŹÂ礭¤š¤Ž¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1643
+msgid "trailing junk after number\n"
+msgstr "żôťú¤Î¸ĺ¤í¤ËĽ´Ľß¤ŹÉŐ¤¤¤Ć¤¤¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1759
+msgid "no room for partition descriptor\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽóľ­˝ŇťŇ¤Îśő¤­¤Ź¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1792
+msgid "cannot build surrounding extended partition\n"
+msgstr "łČÄĽĽŃĄźĽĆĽŁĽˇĽçĽó¤Î°Ď¤¤¤ňš˝ĂۤǤ­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1843
+msgid "too many input fields\n"
+msgstr "ĆţÎĎĽŐĽŁĄźĽëĽÉ¤ŹÂż¤š¤Ž¤Ţ¤š\n"
+
+#. no free blocks left - don't read any further
+#: fdisk/sfdisk.c:1877
+msgid "No room for more\n"
+msgstr "¤ł¤ě°Ęžĺ¤Îśő¤­¤Ź¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:1896
+msgid "Illegal type\n"
+msgstr "ÉÔŔľ¤ĘĽżĽ¤Ľ×\n"
+
+#: fdisk/sfdisk.c:1928
+#, c-format
+msgid "Warning: exceeds max allowable size (%lu)\n"
+msgstr "ˇŮšđ: ˛ÄÇ˝¤ĘĽľĽ¤Ľş¤ÎşÇÂç (%lu) ¤ňąŰ¤¨¤Ć¤¤¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:1933
+msgid "Warning: empty partition\n"
+msgstr "ˇŮšđ: śő¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó\n"
+
+#: fdisk/sfdisk.c:1947
+#, c-format
+msgid "Warning: bad partition start (earliest %lu)\n"
+msgstr "ˇŮšđ: ÉÔŔľ¤ĘĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹťĎ¤Ţ¤Ă¤Ć¤¤¤Ţ¤š (°ěČֺǽé %lu)\n"
+
+#: fdisk/sfdisk.c:1960
+msgid "unrecognized bootable flag - choose - or *\n"
+msgstr "ǧźą¤Ç¤­¤Ę¤¤ĽÖĄźĽČ˛ÄÇ˝ĽŐĽéĽ° -- - ¤Ť * ¤ňÁޤó¤Ç¤Ż¤Ŕ¤ľ¤¤\n"
+
+#: fdisk/sfdisk.c:1977 fdisk/sfdisk.c:1990
+msgid "partial c,h,s specification?\n"
+msgstr "c,h,s ¤Î°ěÉô¤ňťŘÄꥊ\n"
+
+#: fdisk/sfdisk.c:2001
+msgid "Extended partition not where expected\n"
+msgstr "łČÄĽĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹÍ˝´ü¤ˇ¤żžě˝ę¤Ë¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:2033
+msgid "bad input\n"
+msgstr "ÉÔŔľ¤ĘĆţÎĎ\n"
+
+#: fdisk/sfdisk.c:2055
+msgid "too many partitions\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó¤ŹÂż¤š¤Ž¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:2088
+msgid ""
+"Input in the following format; absent fields get a default value.\n"
+"<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+"Usually you only need to specify <start> and <size> (and perhaps <type>).\n"
+msgstr ""
+"°Ę˛ź¤Î˝ńź°¤ÇĆţÎϤˇ¤Ć˛ź¤ľ¤¤ -- "
+"ťŘÄꤡ¤Ę¤Ť¤Ă¤żĽŐĽŁĄźĽëĽÉ¤Ë¤Ď˝é´üĂͤňĽťĽĂĽČ¤ˇ¤Ţ¤š\n"
+"<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+"ÉáÄĚ¤Ď <start> ¤Č <size> (¤˝¤ˇ¤Ćś˛¤é¤Ż <type>)¤ňťŘÄꤚ¤ë¤Ŕ¤ą¤Çš˝¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/sfdisk.c:2108
+msgid "version"
+msgstr "ĽĐĄźĽ¸ĽçĽó"
+
+#: fdisk/sfdisk.c:2114
+#, c-format
+msgid "Usage: %s [options] device ...\n"
+msgstr "ťČ¤¤Ęý: %s [ĽŞĽ×ĽˇĽçĽó] ĽÇĽĐĽ¤ĽšĚž...\n"
+
+#: fdisk/sfdisk.c:2115
+msgid "device: something like /dev/hda or /dev/sda"
+msgstr "ĽÇĽĐĽ¤Ľš: /dev/hda ¤ä /dev/sda ¤ÎÍͤʲż¤Ť"
+
+#: fdisk/sfdisk.c:2116
+msgid "useful options:"
+msgstr "Í­ą×¤ĘĽŞĽ×ĽˇĽçĽó:"
+
+#: fdisk/sfdisk.c:2117
+msgid " -s [or --show-size]: list size of a partition"
+msgstr " -s [or --show-size]: Îΰ輾Ľ¤Ľş¤ÎĽęĽšĽČ"
+
+#: fdisk/sfdisk.c:2118
+msgid " -c [or --id]: print or change partition Id"
+msgstr " -c [or --id]: Îΰč ID ¤ÎÉ˝ź¨¤Ţ¤ż¤ĎĘŃšš"
+
+#: fdisk/sfdisk.c:2119
+msgid " -l [or --list]: list partitions of each device"
+msgstr " -l [or --list]: ĽÇĽĐĽ¤ĽšËč¤ÎÎΰčĽęĽšĽČ"
+
+#: fdisk/sfdisk.c:2120
+msgid " -d [or --dump]: idem, but in a format suitable for later input"
+msgstr " -d [or --dump]: Á°¤ËĆą¤¸¤Ŕ¤ŹĄ˘¸ĺ¤ÎĆţÎĎ˝ńź°¤Ëąč¤Ś¤č¤Ś¤Ë¤š¤ë"
+
+#: fdisk/sfdisk.c:2121
+msgid " -i [or --increment]: number cylinders etc. from 1 instead of from 0"
+msgstr " -i [or --increment]: ĽˇĽęĽóĽŔżô¤Ę¤ÉĄŁ0 ¤Ç¤Ď¤Ę¤Ż 1 ¤Ť¤é"
+
+#: fdisk/sfdisk.c:2122
+msgid ""
+" -uS, -uB, -uC, -uM: accept/report in units of "
+"sectors/blocks/cylinders/MB"
+msgstr ""
+" -uS, -uB, -uC, -uM: ĽťĽŻĽż/ĽÖĽíĽĂĽŻ/ĽˇĽęĽóĽŔ/MB ¤ÎĽćĽËĽĂĽČ¤ÎźőÍý/Ęóšđ"
+
+#: fdisk/sfdisk.c:2123
+msgid " -T [or --list-types]:list the known partition types"
+msgstr " -T [or --list-types]:´űĂΤÎÎΰ輿Ľ¤Ľ×¤ÎĽęĽšĽČ"
+
+#: fdisk/sfdisk.c:2124
+msgid " -D [or --DOS]: for DOS-compatibility: waste a little space"
+msgstr " -D [or --DOS]: DOS ¸ß´šĽâĄźĽÉ -- śő´Ö¤ŹžŻ¤ˇĚľÂ̤ˤʤę¤Ţ¤š"
+
+#: fdisk/sfdisk.c:2125
+msgid " -R [or --re-read]: make kernel reread partition table"
+msgstr " -R [or --re-read]: ĽŤĄźĽÍĽë¤ËÎΰčĽĆĄźĽÖĽë¤ňşĆĆÉšţ¤ß¤ľ¤ť¤ë"
+
+#: fdisk/sfdisk.c:2126
+msgid " -N# : change only the partition with number #"
+msgstr " -N# : ťŘÄęČÖšć# ¤ÎÎΰč¤Î¤ßĘŃšš¤š¤ë"
+
+#: fdisk/sfdisk.c:2127
+msgid " -n : do not actually write to disk"
+msgstr " -n : ĽÇĽŁĽšĽŻ¤Ř¤ÎźÂşÝ¤Î˝ńšţ¤ß¤ňšÔ¤ď¤Ę¤¤"
+
+#: fdisk/sfdisk.c:2128
+msgid ""
+" -O file : save the sectors that will be overwritten to file"
+msgstr " -O file : žĺ˝ń¤­¤ľ¤ě¤ëĽťĽŻĽż¤ňĽŐĽĄĽ¤Ľë¤ËĘݸ¤š¤ë"
+
+#: fdisk/sfdisk.c:2129
+msgid " -I file : restore these sectors again"
+msgstr " -I file : ĽťĽŻĽż¤ňĽŐĽĄĽ¤Ľë¤Ť¤éÉü¸ľ¤š¤ë"
+
+#: fdisk/sfdisk.c:2130
+msgid " -v [or --version]: print version"
+msgstr " -v [or --version]: ĽĐĄźĽ¸ĽçĽó¤ňÉ˝ź¨¤š¤ë"
+
+#: fdisk/sfdisk.c:2131
+msgid " -? [or --help]: print this message"
+msgstr " -? [or --help]: ¤ł¤ÎĽáĽĂĽťĄźĽ¸¤ňÉ˝ź¨¤š¤ë"
+
+#: fdisk/sfdisk.c:2132
+msgid "dangerous options:"
+msgstr "´í¸ą¤ĘĽŞĽ×ĽˇĽçĽó:"
+
+#: fdisk/sfdisk.c:2133
+msgid " -g [or --show-geometry]: print the kernel's idea of the geometry"
+msgstr " -g [or --show-geometry]: ĽŤĄźĽÍĽë¤ÎĽ¸ĽŞĽáĽČĽęžđĘó¤ňÉ˝ź¨¤š¤ë"
+
+#: fdisk/sfdisk.c:2134
+msgid ""
+" -x [or --show-extended]: also list extended partitions on output\n"
+" or expect descriptors for them on input"
+msgstr ""
+" -x [or --show-extended]: łČÄĽÎΰčĽęĽšĽČ¤âÉ˝ź¨¤š¤ë\n"
+" ¤Ţ¤ż¤Ď¤˝¤ě¤é¤Îľ­˝ŇťŇ¤ÎĆţÎϤňĆŔ¤ë"
+
+#: fdisk/sfdisk.c:2136
+msgid ""
+" -L [or --Linux]: do not complain about things irrelevant for Linux"
+msgstr " -L [or --Linux]: Linux ¤Ë¤˝¤°¤ď¤Ę¤Ż¤Ć¤âʸśç¤ňąž¤ď¤Ę¤¤"
+
+#: fdisk/sfdisk.c:2137
+msgid " -q [or --quiet]: suppress warning messages"
+msgstr " -q [or --quiet]: ˇŮšđĽáĽĂĽťĄźĽ¸¤ňÍŢŔŠ¤š¤ë"
+
+#: fdisk/sfdisk.c:2138
+msgid " You can override the detected geometry using:"
+msgstr " Ľ¸ĽŞĽáĽČĽę¸Ą˝Đ¤ňśŻŔŠťŘÄę¤Ç¤­¤Ţ¤š:"
+
+#: fdisk/sfdisk.c:2139
+msgid " -C# [or --cylinders #]:set the number of cylinders to use"
+msgstr " -C# [or --cylinders #]:ťČÍѤš¤ëĽˇĽęĽóĽŔżô¤ňŔßÄꤚ¤ë"
+
+#: fdisk/sfdisk.c:2140
+msgid " -H# [or --heads #]: set the number of heads to use"
+msgstr " -H# [or --heads #]: ťČÍѤš¤ëĽŘĽĂĽÉżô¤ňŔßÄꤚ¤ë"
+
+#: fdisk/sfdisk.c:2141
+msgid " -S# [or --sectors #]: set the number of sectors to use"
+msgstr " -S# [or --sectors #]: ťČÍѤš¤ëĽťĽŻĽżżô¤ňŔßÄꤚ¤ë"
+
+#: fdisk/sfdisk.c:2142
+msgid "You can disable all consistency checking with:"
+msgstr "̡˝â¤ÎĽÁĽ§ĽĂĽŻ¤ňšÔ¤ď¤Ę¤¤¤č¤Ś¤Ë¤Ç¤­¤Ţ¤š:"
+
+#: fdisk/sfdisk.c:2143
+msgid " -f [or --force]: do what I say, even if it is stupid"
+msgstr " -f [or --force]: ¤Ş¤Ť¤ˇ¤ĘťŘÄę¤ňšÔ¤Ă¤Ć¤âĄ˘¤˝¤Î¤Ţ¤ŢźÂšÔ¤ˇ¤Ţ¤š"
+
+#: fdisk/sfdisk.c:2149
+msgid "Usage:"
+msgstr "ťČ¤¤Ęý:"
+
+#: fdisk/sfdisk.c:2150
+#, c-format
+msgid "%s device\t\t list active partitions on device\n"
+msgstr "%s ĽÇĽĐĽ¤Ľš\t\t ĽÇĽĐĽ¤Ľšžĺ¤ÎĽ˘ĽŻĽĆĽŁĽôÎΰč¤ňĽęĽšĽČ¤ˇ¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:2151
+#, c-format
+msgid "%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"
+msgstr ""
+"%s ĽÇĽĐĽ¤Ľš n1 n2 ... n1 ¤ňĽ˘ĽŻĽĆĽŁĽô¤Ë¤ˇ¤Ć..., ťÄ¤ę¤ňČ󼢼ŻĽĆĽŁĽô¤Ë¤ˇ¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:2152
+#, c-format
+msgid "%s -An device\t activate partition n, inactivate the other ones\n"
+msgstr "%s -An ĽÇĽĐĽ¤Ľš\t n ¤ňĽ˘ĽŻĽĆĽŁĽô¤Ë¤ˇĄ˘¤˝¤ě°Ęł°¤ňČ󼢼ŻĽĆĽŁĽô¤Ë¤ˇ¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:2271
+msgid "no command?\n"
+msgstr "ĽłĽŢĽóĽÉ¤Ę¤ˇĄŠ\n"
+
+#: fdisk/sfdisk.c:2394
+#, c-format
+msgid "total: %d blocks\n"
+msgstr "šçˇ×: %d ĽÖĽíĽĂĽŻ\n"
+
+#: fdisk/sfdisk.c:2431
+msgid "usage: sfdisk --print-id device partition-number\n"
+msgstr "ťČ¤¤Ęý: sfdisk --print-id ĽÇĽĐĽ¤Ľš ĽŃĄźĽĆĽŁĽˇĽçĽóČÖšć\n"
+
+#: fdisk/sfdisk.c:2433
+msgid "usage: sfdisk --change-id device partition-number Id\n"
+msgstr "ťČ¤¤Ęý: sfdisk --change-id ĽÇĽĐĽ¤Ľš ĽŃĄźĽĆĽŁĽˇĽçĽóČÖšć ID\n"
+
+#: fdisk/sfdisk.c:2435
+msgid "usage: sfdisk --id device partition-number [Id]\n"
+msgstr "ťČ¤¤Ęý: sfdisk --id ĽÇĽĐĽ¤Ľš ĽŃĄźĽĆĽŁĽˇĽçĽóČÖšć [ID]\n"
+
+#: fdisk/sfdisk.c:2442
+msgid "can specify only one device (except with -l or -s)\n"
+msgstr "°ě¤Ä¤ÎĽÇĽĐĽ¤Ľš¤Î¤ßťŘÄę¤Ç¤­¤Ţ¤š (-l ¤ä -s ¤ň˝ü¤Ż)\n"
+
+#: fdisk/sfdisk.c:2467
+#, c-format
+msgid "cannot open %s %s\n"
+msgstr "%s ¤ň%s¤ÇĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:2467
+msgid "read-write"
+msgstr "Ćɤ߽ń¤­˛ÄÇ˝"
+
+#: fdisk/sfdisk.c:2467
+msgid "for reading"
+msgstr "ĆÉšţ¤ß˛ÄÇ˝"
+
+#: fdisk/sfdisk.c:2492
+#, c-format
+msgid "%s: OK\n"
+msgstr "%s: OK\n"
+
+#: fdisk/sfdisk.c:2509
+#, c-format
+msgid "%s: %d cylinders, %d heads, %d sectors/track\n"
+msgstr "%s: ĽˇĽęĽóĽŔżô %dĄ˘ĽŘĽĂĽÉżô %dĄ˘%d ĽťĽŻĽż/ĽČĽéĽĂĽŻ\n"
+
+#: fdisk/sfdisk.c:2512
+#, c-format
+msgid "%s: unknown geometry\n"
+msgstr "%s: ̤ĂΤμ¸ĽŞĽáĽČĽę\n"
+
+#: fdisk/sfdisk.c:2528
+#, c-format
+msgid "BLKGETSIZE ioctl failed for %s\n"
+msgstr "%s ¤Ř¤Î BLKGETSIZE ioctl ¤ËźşÇÔ\n"
+
+#: fdisk/sfdisk.c:2605
+#, c-format
+msgid "bad active byte: 0x%x instead of 0x80\n"
+msgstr "ÉÔŔľ¤ĘĽÖĄźĽČĽŐĽéĽ°: 0x80 ¤Ç¤Ę¤Ż 0x%x ¤Ç¤š\n"
+
+#: fdisk/sfdisk.c:2622 fdisk/sfdisk.c:2675 fdisk/sfdisk.c:2705
+msgid ""
+"Done\n"
+"\n"
+msgstr ""
+"˝ŞÎť\n"
+"\n"
+
+#: fdisk/sfdisk.c:2631
+#, c-format
+msgid ""
+"You have %d active primary partitions. This does not matter for LILO,\n"
+"but the DOS MBR will only boot a disk with 1 active partition.\n"
+msgstr ""
+"%d ¸Ä¤ÎĽ˘ĽŻĽĆĽŁĽÖ¤Ę´đËÜÎΰčĽŃĄźĽĆĽŁĽˇĽçĽó¤Ź¤˘¤ę¤Ţ¤šĄŁ\n"
+"LILO ¤Ç¤ĎĚäÂꤢ¤ę¤Ţ¤ť¤ó¤ŹĄ˘DOS MBR ¤Ď 1 ¤Ä¤ÎĽ˘ĽŻĽĆĽŁĽÖ¤ĘĽŃĄźĽĆĽŁĽˇĽçĽó¤ˇ¤Ť\n"
+"ĽÖĄźĽČ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: fdisk/sfdisk.c:2645
+#, c-format
+msgid "partition %s has id %x and is not hidden\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %s ¤Ë¤Ď ID %x ¤Ź¤˘¤ęĄ˘ąŁ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:2701
+#, c-format
+msgid "Bad Id %x\n"
+msgstr "ÉÔŔľ¤Ę ID %x\n"
+
+#: fdisk/sfdisk.c:2716
+msgid "This disk is currently in use.\n"
+msgstr "¤ł¤ÎĽÇĽŁĽšĽŻ¤Ď¸˝şßťČÍŃĂć¤Ç¤šĄŁ\n"
+
+#: fdisk/sfdisk.c:2733
+#, c-format
+msgid "Fatal error: cannot find %s\n"
+msgstr "Ă×̿Ū¤ĘĽ¨ĽéĄź: %s ¤Ź¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:2736
+#, c-format
+msgid "Warning: %s is not a block device\n"
+msgstr "ˇŮšđ: %s ¤ĎĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:2742
+msgid "Checking that no-one is using this disk right now ...\n"
+msgstr "¸˝şßĄ˘ĂŻ¤â¤ł¤ÎĽÇĽŁĽšĽŻ¤ňťČ¤Ă¤Ć¤¤¤Ę¤¤¤Ť¤ňÄ´¤Ů¤Ţ¤š...\n"
+
+#: fdisk/sfdisk.c:2744
+msgid ""
+"\n"
+"This disk is currently in use - repartitioning is probably a bad idea.Umount "
+"all file systems, and swapoff all swap partitions on this disk.Use the "
+"--no-reread flag to suppress this check.\n"
+msgstr ""
+"\n"
+"¤ł¤ÎĽÇĽŁĽšĽŻ¤Ď¸˝şßťČÍŃĂć¤Ç¤š -- "
+"ĽŃĄźĽĆĽŁĽˇĽçĽóşĆš˝ĂۤϤä¤á¤żĘý¤Ź¤¤¤¤¤Ç¤ˇ¤ç¤Ś\n"
+"Á´¤Ć¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽ˘ĽóĽŢĽŚĽóĽČ¤ˇĄ˘¤˝¤ÎĽÇĽŁĽšĽŻ¤ËĽšĽďĽĂĽ×ĽŃĄźĽĆĽŁĽˇĽçĽó"
+"\n"
+"¤Ź¤˘¤ě¤Đ swapoff ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+"¤Á¤Ę¤ß¤Ë --no-reread ĽŐĽéĽ°¤Ç¤ł¤ÎĽÁĽ§ĽĂĽŻ¤ňÍŢŔŠ¤Ç¤­¤Ţ¤šĄŁ\n"
+
+#: fdisk/sfdisk.c:2748
+msgid "Use the --force flag to overrule all checks.\n"
+msgstr "Á´¤Ć¤ÎĽÁĽ§ĽĂĽŻ¤ňÄśąŰ¤ľ¤ť¤ë¤Ë¤Ď --force ĽŐĽéĽ°¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: fdisk/sfdisk.c:2752
+msgid "OK"
+msgstr "OK"
+
+#: fdisk/sfdisk.c:2761
+msgid "Old situation:\n"
+msgstr "¸Ĺ¤¤žěĚĚ:\n"
+
+#: fdisk/sfdisk.c:2765
+#, c-format
+msgid "Partition %d does not exist, cannot change it\n"
+msgstr "ĽŃĄźĽĆĽŁĽˇĽçĽó %d ¤Ď¸şß¤ˇ¤Ţ¤ť¤ó¤Î¤ÇĄ˘ĘŃšš¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:2773
+msgid "New situation:\n"
+msgstr "żˇ¤ż¤ĘžěĚĚ:\n"
+
+#: fdisk/sfdisk.c:2778
+msgid ""
+"I don't like these partitions - nothing changed.\n"
+"(If you really want this, use the --force option.)\n"
+msgstr ""
+"ťä¤Ď¤ł¤ě¤é¤ÎĽŃĄźĽĆĽŁĽˇĽçĽó¤Ë´ŘÍż¤ˇ¤ż¤Ż¤˘¤ę¤Ţ¤ť¤ó -- ĘŃšš¤ˇ¤Ţ¤ť¤óĄŁ\n"
+"(ËÜĹö¤Ë¤ł¤ě¤ňšÔ¤Ę¤¤¤ż¤ą¤ě¤ĐĄ˘--force ĽŞĽ×ĽˇĽçĽó¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤)\n"
+
+#: fdisk/sfdisk.c:2781
+msgid "I don't like this - probably you should answer No\n"
+msgstr "ťä¤Ď¤ł¤ě¤Ë´ŘÍż¤ˇ¤ż¤Ż¤˘¤ę¤Ţ¤ť¤ó -- ś˛¤é¤Ż No ¤ČĹú¤¨¤ë¤Ů¤­¤Ç¤ˇ¤ç¤Ś\n"
+
+#: fdisk/sfdisk.c:2786
+msgid "Are you satisfied with this? [ynq] "
+msgstr "¤ł¤ě¤Ç¤˘¤Ę¤ż¤ÎÍ׾á¤ĎËţ¤ż¤ľ¤ě¤Ţ¤š¤ŤĄŠ [ynq] "
+
+#: fdisk/sfdisk.c:2788
+msgid "Do you want to write this to disk? [ynq] "
+msgstr "ĽÇĽŁĽšĽŻ¤Ř¤Î˝ń¤­šţ¤ß¤ňšÔ¤Ę¤¤¤Ţ¤š¤ŤĄŠ [ynq] "
+
+#: fdisk/sfdisk.c:2793
+msgid ""
+"\n"
+"sfdisk: premature end of input\n"
+msgstr ""
+"\n"
+"sfdisk: ĆţÎϤŹĂť¤š¤Ž¤Ţ¤š\n"
+
+#: fdisk/sfdisk.c:2795
+msgid "Quitting - nothing changed\n"
+msgstr "ĂćĂÇ -- ˛ż¤âĘŃšš¤ˇ¤Ţ¤ť¤ó\n"
+
+#: fdisk/sfdisk.c:2801
+msgid "Please answer one of y,n,q\n"
+msgstr "y,n,q ¤Î¤¤¤ş¤ě¤Ť¤ÇĹú¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤\n"
+
+#: fdisk/sfdisk.c:2809
+msgid ""
+"Successfully wrote the new partition table\n"
+"\n"
+msgstr ""
+"żˇ¤ż¤ĘĽŃĄźĽĆĽŁĽˇĽçĽó¤Î˝ń¤­šţ¤ß¤ËŔŽ¸ů\n"
+"\n"
+
+#: fdisk/sfdisk.c:2815
+msgid ""
+"If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
+"to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
+"(See fdisk(8).)\n"
+msgstr ""
+"¤â¤ˇĄ˘DOS ĽŃĄźĽĆĽŁĽˇĽçĽó¤ňşîŔŽ¤Ţ¤ż¤ĎĘŃšš¤ˇ¤ż¤Ę¤é¤Đ -- ¤ż¤Č¤¨¤Đ /dev/foo7 Ą˘\n"
+"dd(1) ¤ň¤Ä¤Ť¤Ă¤ĆşÇ˝é¤Î 512 ĽĐĽ¤ĽČ¤ňĽźĽí¤Ë¤ˇ¤Ć˛ź¤ľ¤¤:\n"
+"dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
+"(žÜşŮ¤Ď fdisk(8)¤ň¸Ť¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ)\n"
+
+#: games/banner.c:1048
+msgid "usage: banner [-w width]\n"
+msgstr "ťČ¤¤Ęý: banner [-w Éý]\n"
+
+#: games/banner.c:1068
+msgid "Message: "
+msgstr "ĽáĽĂĽťĄźĽ¸: "
+
+#: games/banner.c:1102
+#, c-format
+msgid "The character '%c' is not in my character set"
+msgstr "ʸťú '%c' ¤ĎĽ­ĽăĽéĽŻĽżĽťĽĂĽČĆâ¤Ë¤˘¤ę¤Ţ¤ť¤ó"
+
+#: games/banner.c:1110
+#, c-format
+msgid "Message '%s' is OK\n"
+msgstr "ĽáĽĂĽťĄźĽ¸ '%s' ¤Ď OK ¤Ç¤š\n"
+
+#: getopt-1.0.3b/getopt.c:229
+msgid "Try `getopt --help' for more information.\n"
+msgstr "`getopt --help' ¤ÇžÜşŮžđĘó¤ňÄ´¤Ů¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: getopt-1.0.3b/getopt.c:295
+msgid "empty long option after -l or --long argument"
+msgstr "-l ¤ä --long °úżô¤Î¸ĺ¤ÎĽíĽóĽ°ĽŞĽ×ĽˇĽçĽó¤Źśő¤Ç¤š"
+
+#: getopt-1.0.3b/getopt.c:315
+msgid "unknown shell after -s or --shell argument"
+msgstr "-s ¤Ť --shell °úżô¤Î¸ĺ¤ÎĽˇĽ§Ľë¤ňĂΤę¤Ţ¤ť¤ó"
+
+#: getopt-1.0.3b/getopt.c:320
+msgid "Usage: getopt optstring parameters\n"
+msgstr "ťČ¤¤Ęý: getopt ĽŞĽ×ĽˇĽçĽóʸťúÎó ĂÍ\n"
+
+#: getopt-1.0.3b/getopt.c:321
+msgid " getopt [options] [--] optstring parameters\n"
+msgstr " getopt [ĽŞĽ×ĽˇĽçĽó] [--] ĽŞĽ×ĽˇĽçĽóʸťúÎó ĂÍ\n"
+
+#: getopt-1.0.3b/getopt.c:322
+msgid " getopt [options] -o|--options optstring [options] [--]\n"
+msgstr ""
+" getopt [ĽŞĽ×ĽˇĽçĽó] -o|--options ĽŞĽ×ĽˇĽçĽóʸťúÎó [ĽŞĽ×ĽˇĽçĽó] [--]\n"
+
+#: getopt-1.0.3b/getopt.c:323
+msgid " parameters\n"
+msgstr " ĂÍ\n"
+
+#: getopt-1.0.3b/getopt.c:324
+msgid ""
+" -a, --alternative Allow long options starting with single -\n"
+msgstr ""
+" -a, --alternative ĽíĽóĽ°ĽŞĽ×ĽˇĽçĽó¤Ź - °ě¤Ä¤ÇťĎ¤Ţ¤ë¤Î¤ňľö¤š\n"
+
+#: getopt-1.0.3b/getopt.c:325
+msgid " -h, --help This small usage guide\n"
+msgstr " -h, --help ¤ł¤Î¤Á¤ç¤Ă¤Č¤ˇ¤żťČ¤¤Ęý¤ňÉ˝ź¨¤š¤ë\n"
+
+#: getopt-1.0.3b/getopt.c:326
+msgid " -l, --longoptions=longopts Long options to be recognized\n"
+msgstr " -l, --longoptions=longopts ĽíĽóĽ°ĽŞĽ×ĽˇĽçĽó¤ňÍý˛ň¤ľ¤ť¤ë\n"
+
+#: getopt-1.0.3b/getopt.c:327
+msgid ""
+" -n, --name=progname The name under which errors are reported\n"
+msgstr " -n, --name=progname Ľ¨ĽéĄźĘóšđ¤ÎşÝ¤ÎĚžÁ°\n"
+
+#: getopt-1.0.3b/getopt.c:328
+msgid " -o, --options=optstring Short options to be recognized\n"
+msgstr " -o, --options=optstring ĽˇĽçĄź¤ČĽŞĽ×ĽˇĽçĽó¤ňÍý˛ň¤ľ¤ť¤ë\n"
+
+#: getopt-1.0.3b/getopt.c:329
+msgid " -q, --quiet Disable error reporting by getopt(3)\n"
+msgstr " -q, --quiet getopt(3) ¤ÎĽ¨ĽéĄźĘóšđ¤ňšÔ¤ď¤Ę¤¤\n"
+
+#: getopt-1.0.3b/getopt.c:330
+msgid " -Q, --quiet-output No normal output\n"
+msgstr " -Q, --quiet-output ÄĚžď¤Î˝ĐÎϤňšÔ¤ď¤Ę¤¤\n"
+
+#: getopt-1.0.3b/getopt.c:331
+msgid " -s, --shell=shell Set shell quoting conventions\n"
+msgstr " -s, --shell=shell ĽˇĽ§Ľë¤Î°úÍŃźč¤ęˇč¤á¤ňŔßÄꤚ¤ë\n"
+
+#: getopt-1.0.3b/getopt.c:332
+msgid " -T, --test Test for getopt(1) version\n"
+msgstr " -T, --test getopt(1) ĽĐĄźĽ¸ĽçĽó¤ňĽĆĽšĽČ¤š¤ë\n"
+
+#: getopt-1.0.3b/getopt.c:333
+msgid " -V, --version Output version information\n"
+msgstr " -V, --version ĽĐĄźĽ¸ĽçĽóžđĘó¤ň˝ĐÎϤš¤ë\n"
+
+#: getopt-1.0.3b/getopt.c:387 getopt-1.0.3b/getopt.c:445
+msgid "missing optstring argument"
+msgstr "ĽŞĽ×ĽˇĽçĽóʸťúÎó°úżô¤ŹÂ­¤ę¤Ţ¤ť¤ó"
+
+#: getopt-1.0.3b/getopt.c:433
+msgid "getopt (enhanced) 1.0.3\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:439
+msgid "internal error, contact the author."
+msgstr "ĆâÉôĽ¨ĽéĄźĄ˘şîźÔ¤ËϢÍí¤ňĄŁ"
+
+#: login-utils/agetty.c:300
+msgid "calling open_tty\n"
+msgstr "open_tty ¤Î¸Ć¤Ó˝Đ¤ˇĂć\n"
+
+#. Initialize the termio settings (raw mode, eight-bit, blocking i/o).
+#: login-utils/agetty.c:313
+msgid "calling termio_init\n"
+msgstr "termio_init ¸Ć¤Ó˝Đ¤ˇĂć\n"
+
+#: login-utils/agetty.c:318
+msgid "writing init string\n"
+msgstr "˝é´ü˛˝Ę¸ťúÎó¤Î˝ń¤­šţ¤ßĂć\n"
+
+#. Optionally detect the baud rate from the modem status message.
+#: login-utils/agetty.c:328
+msgid "before autobaud\n"
+msgstr ""
+
+#: login-utils/agetty.c:340
+msgid "waiting for cr-lf\n"
+msgstr "cr-lf ¤ňÂԤäƤ¤¤Ţ¤š\n"
+
+#: login-utils/agetty.c:344
+#, c-format
+msgid "read %c\n"
+msgstr "%c ¤ňĆÉšţ¤ß\n"
+
+#. Read the login name.
+#: login-utils/agetty.c:353
+msgid "reading login name\n"
+msgstr "ĽíĽ°Ľ¤ĽóĚž¤ňĆÉšţ¤á¤Ţ¤ť¤ó\n"
+
+#: login-utils/agetty.c:374
+#, c-format
+msgid "%s: can't exec %s: %m"
+msgstr "%s: %s ¤ňźÂšÔ¤Ç¤­¤Ţ¤ť¤ó: %m"
+
+#: login-utils/agetty.c:394
+msgid "can't malloc initstring"
+msgstr "ʸťúÎó˝é´ü˛˝ÍŃĽáĽâĽę¤ŹłÎĘݤǤ­¤Ţ¤ť¤ó"
+
+#: login-utils/agetty.c:456
+#, c-format
+msgid "bad timeout value: %s"
+msgstr "ÉÔŔľ¤ĘĽżĽ¤ĽŕĽ˘ĽŚĽČĂÍ: %s"
+
+#: login-utils/agetty.c:465
+msgid "after getopt loop\n"
+msgstr "getopt ĽëĄźĽ×¤Î¸ĺ\n"
+
+#: login-utils/agetty.c:483
+msgid "exiting parseargs\n"
+msgstr "°úżô˛ňŔϤň˝ŞÎť¤ˇ¤Ţ¤š\n"
+
+#: login-utils/agetty.c:496
+msgid "entered parse_speeds\n"
+msgstr "parse_speeds ¤ËĆţ¤ę¤Ţ¤ˇ¤ż\n"
+
+#: login-utils/agetty.c:499
+#, c-format
+msgid "bad speed: %s"
+msgstr "ÉÔŔľ¤ĘÂŽĹŮ: %s"
+
+#: login-utils/agetty.c:501
+msgid "too many alternate speeds"
+msgstr "ÂĺÂŘÂŽĹ٤ŹÂż¤š¤Ž¤Ţ¤š"
+
+#: login-utils/agetty.c:503
+msgid "exiting parsespeeds\n"
+msgstr "parsespeeds ¤ň˝Ş¤ď¤ę¤Ţ¤š\n"
+
+#: login-utils/agetty.c:576
+#, c-format
+msgid "%s: open for update: %m"
+msgstr "%s: ššżˇÍŃ¤ËĽŞĄźĽ×Ľó: %m"
+
+#: login-utils/agetty.c:592
+#, c-format
+msgid "%s: no utmp entry"
+msgstr "%s: utmp šŕĚܤˤ˘¤ę¤Ţ¤ť¤ó"
+
+#: login-utils/agetty.c:621
+#, c-format
+msgid "/dev: chdir() failed: %m"
+msgstr "/dev: chdir() ¤ŹźşÇÔ: %m"
+
+#: login-utils/agetty.c:625
+#, c-format
+msgid "/dev/%s: not a character device"
+msgstr "/dev/%s: Ľ­ĽăĽéĽŻĽżĽÇĽĐĽ¤Ľš¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó"
+
+#. ignore close(2) errors
+#: login-utils/agetty.c:632
+msgid "open(2)\n"
+msgstr ""
+
+#: login-utils/agetty.c:634
+#, c-format
+msgid "/dev/%s: cannot open as standard input: %m"
+msgstr "/dev/%s: ɸ˝ŕĆţÎϤȤˇ¤ĆłŤ¤Ż¤ł¤Č¤Ź¤Ç¤­¤Ţ¤ť¤ó: %m"
+
+#: login-utils/agetty.c:644
+#, c-format
+msgid "%s: not open for read/write"
+msgstr "%s: Ćɤ߽ń¤­ÎžÍŃ¤ËĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó"
+
+#. Set up standard output and standard error file descriptors.
+#: login-utils/agetty.c:648
+msgid "duping\n"
+msgstr ""
+
+#. set up stdout and stderr
+#: login-utils/agetty.c:650
+#, c-format
+msgid "%s: dup problem: %m"
+msgstr "%s: dup ¤ËĚäÂęČŻŔ¸: %m"
+
+#: login-utils/agetty.c:712
+msgid "term_io 2\n"
+msgstr ""
+
+#: login-utils/agetty.c:894
+msgid "user"
+msgstr "ĽćĄźĽś"
+
+#: login-utils/agetty.c:894
+msgid "users"
+msgstr "ĽćĄźĽś"
+
+#: login-utils/agetty.c:982
+#, c-format
+msgid "%s: read: %m"
+msgstr "%s: read: %m"
+
+#: login-utils/agetty.c:1028
+#, c-format
+msgid "%s: input overrun"
+msgstr "%s: ĆţÎϤŹ°î¤ě¤Ţ¤ˇ¤ż"
+
+#: login-utils/agetty.c:1152
+#, c-format
+msgid ""
+"Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] "
+"baud_rate,... line [termtype]\n"
+"or\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line "
+"baud_rate,... [termtype]\n"
+msgstr ""
+"ťČ¤¤Ęý: %s [-hiLmw] [-l ĽíĽ°Ľ¤ĽóĽ×ĽíĽ°ĽéĽŕ] [-t ĽżĽ¤ĽŕĽ˘ĽŚĽČ] [-I "
+"˝é´ü˛˝Ę¸ťúÎó] ĽÜĄźĽěĄźĽČ,... šÔ [ĂźËöĽżĽ¤Ľ×]\n"
+"Ëô¤Ď\t[-hiLmw] [-l ĽíĽ°Ľ¤ĽóĽ×ĽíĽ°ĽéĽŕ] [-tĽżĽ¤ĽŕĽ˘ĽŚĽČ [-I ˝é´ü˛˝Ę¸ťúÎó] šÔ "
+"ĽÜĄźĽěĄźĽČ,... [ĂźËöĽżĽ¤Ľ×]\n"
+
+#: login-utils/checktty.c:46
+#, c-format
+msgid "badlogin: %s\n"
+msgstr "ÉÔŔľĽíĽ°Ľ¤Ľó: %s\n"
+
+#: login-utils/checktty.c:52
+#, c-format
+msgid "sleepexit %d\n"
+msgstr "ĽšĽęĄźĽ×˝ŞÎť\n"
+
+#: login-utils/checktty.c:108 login-utils/checktty.c:130
+msgid "login: memory low, login may fail\n"
+msgstr "login: ĽáĽâĽę¤ŹžŻ¤Ę¤¤¤Î¤ÇĄ˘ĽíĽ°Ľ¤Ľó¤ËźşÇÔ¤š¤ë¤č¤Ś¤Ç¤š\n"
+
+#: login-utils/checktty.c:109
+msgid "can't malloc for ttyclass"
+msgstr "tty ĽŻĽéĽšÍŃĽáĽâĽę¤ŹłÎĘݤǤ­¤Ţ¤ť¤ó"
+
+#: login-utils/checktty.c:131
+msgid "can't malloc for grplist"
+msgstr "Ľ°ĽëĄźĽ×ĽęĽšĽČÍŃĽáĽâĽę¤ŹłÎĘݤǤ­¤Ţ¤ť¤ó"
+
+#. there was a default rule, but user didn't match, reject!
+#: login-utils/checktty.c:431
+#, c-format
+msgid "Login on %s from %s denied by default.\n"
+msgstr "%2$s ¤Ť¤é %1$s ¤Ř¤ÎĽíĽ°Ľ¤Ľó¤ĎĄ˘˝é´üžőÂ֤ǤϾńČݤľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#. if we get here, /etc/usertty exists, there's a line
+#. matching our username, but it doesn't contain the
+#. name of the tty where the user is trying to log in.
+#. So deny access!
+#: login-utils/checktty.c:442
+#, c-format
+msgid "Login on %s from %s denied.\n"
+msgstr "%2$s ¤Ť¤é %1$s ¤Ř¤ÎĽíĽ°Ľ¤Ľó¤ĎČÝÄꤾ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: login-utils/chfn.c:136 login-utils/chsh.c:118
+#, c-format
+msgid "%s: you (user %d) don't exist.\n"
+msgstr "%s: ¤˘¤Ę¤ż (ĽćĄźĽś %d) ¤Ď¸şß¤ˇ¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chfn.c:143 login-utils/chsh.c:125
+#, c-format
+msgid "%s: user \"%s\" does not exist.\n"
+msgstr "%s: ĽćĄźĽś \"%s\" ¤Ď¸şß¤ˇ¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chfn.c:148 login-utils/chsh.c:130
+#, c-format
+msgid "%s: can only change local entries; use yp%s instead.\n"
+msgstr ""
+"%s: ĽíĄźĽŤĽë¤ÎšŕĚܤˇ¤ŤĘŃšš¤Ç¤­¤Ţ¤ť¤ó -- ¤Ť¤ď¤ę¤Ë yp%s ¤ňťČ¤¤¤Ţ¤ˇ¤ç¤ŚĄŁ\n"
+
+#: login-utils/chfn.c:160
+#, c-format
+msgid "Changing finger information for %s.\n"
+msgstr "%s ¤Î finger žđĘó¤ňĘŃšš¤ˇ¤Ţ¤šĄŁ\n"
+
+#: login-utils/chfn.c:166 login-utils/chfn.c:170 login-utils/chfn.c:177
+#: login-utils/chfn.c:181 login-utils/chsh.c:154 login-utils/chsh.c:158
+#: login-utils/chsh.c:165 login-utils/chsh.c:169
+msgid "Password error."
+msgstr "ĽŃĽšĽďĄźĽÉĽ¨ĽéĄźĄŁ"
+
+#: login-utils/chfn.c:190 login-utils/chsh.c:178 login-utils/login.c:650
+#: login-utils/newgrp.c:47 login-utils/simpleinit.c:219 mount/lomount.c:200
+#: mount/lomount.c:206 mount/losetup.c:115 mount/losetup.c:121
+msgid "Password: "
+msgstr "ĽŃĽšĽďĄźĽÉ: "
+
+#: login-utils/chfn.c:193 login-utils/chsh.c:181
+msgid "Incorrect password."
+msgstr "´Ö°ă¤Ă¤żĽŃĽšĽďĄźĽÉ¤Ç¤šĄŁ"
+
+#: login-utils/chfn.c:204
+msgid "Finger information not changed.\n"
+msgstr "finger žđĘó¤ĎĘŃšš¤ľ¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤żĄŁ\n"
+
+#: login-utils/chfn.c:307
+#, c-format
+msgid "Usage: %s [ -f full-name ] [ -o office ] "
+msgstr "ťČ¤¤Ęý: %s [ -f ĽŐĽëĽÍĄźĽŕ ] [ -o ĽŞĽŐĽŁĽš ] "
+
+#: login-utils/chfn.c:308
+msgid ""
+"[ -p office-phone ]\n"
+"\t[ -h home-phone ] "
+msgstr ""
+"[ -p ĽŞĽŐĽŁĽšĹĹĎĂČÖšć ]\n"
+"\t[ -h źŤÂđĹĹĎĂČÖšć ] "
+
+#: login-utils/chfn.c:309
+msgid "[ --help ] [ --version ]\n"
+msgstr "[ --help ] [ --version ]\n"
+
+#: login-utils/chfn.c:378 login-utils/chsh.c:294
+msgid ""
+"\n"
+"Aborted.\n"
+msgstr ""
+"\n"
+"ĂćĂÇĄŁ\n"
+
+#: login-utils/chfn.c:411
+msgid "field is too long.\n"
+msgstr "ĽŐĽŁĄźĽëĽÉ¤ŹÄš¤š¤Ž¤Ţ¤šĄŁ\n"
+
+#: login-utils/chfn.c:419
+#, c-format
+msgid "'%c' is not allowed.\n"
+msgstr "'%c' ¤Ďľö˛Ä¤ľ¤ě¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chfn.c:424
+msgid "Control characters are not allowed.\n"
+msgstr "ĽłĽóĽČĽíĄźĽëʸťú¤Ďľö˛Ä¤ľ¤ě¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chfn.c:489
+msgid "Finger information *NOT* changed. Try again later.\n"
+msgstr "finger žđĘó¤ĎĘŃšš *¤ľ¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤ż*ĄŁ¤Ţ¤ż¤˘¤Č¤Çťî¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: login-utils/chfn.c:492
+msgid "Finger information changed.\n"
+msgstr "finger žđĘó¤ňĘŃšš¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: login-utils/chfn.c:506 login-utils/chsh.c:412 sys-utils/cytune.c:324
+msgid "malloc failed"
+msgstr "malloc ¤ËźşÇÔ"
+
+#: login-utils/chsh.c:141
+#, c-format
+msgid "%s: Your shell is not in /etc/shells, shell change denied\n"
+msgstr ""
+"%s: ¤˘¤Ę¤ż¤ÎĽˇĽ§Ľë¤Ď /etc/shells "
+"¤Ë¤˘¤ę¤Ţ¤ť¤ó¤Î¤ÇĄ˘ĽˇĽ§Ľë¤ÎĘŃšš¤ŹľńČݤľ¤ě¤Ţ¤ˇ¤ż\n"
+
+#: login-utils/chsh.c:148
+#, c-format
+msgid "Changing shell for %s.\n"
+msgstr "%s ¤ÎĽˇĽ§Ľë¤ňĘŃšš¤ˇ¤Ţ¤šĄŁ\n"
+
+#: login-utils/chsh.c:189
+msgid "New shell"
+msgstr "żˇ¤ˇ¤¤ĽˇĽ§Ľë"
+
+#: login-utils/chsh.c:196
+msgid "Shell not changed.\n"
+msgstr "ĽˇĽ§Ľë¤ňĘŃšš¤ˇ¤Ţ¤ť¤ó¤Ç¤ˇ¤żĄŁ\n"
+
+#: login-utils/chsh.c:203
+msgid "Shell *NOT* changed. Try again later.\n"
+msgstr "ĽˇĽ§Ľë¤ĎĘŃšš *¤ľ¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤ż*ĄŁ¤˘¤Č¤Ç¤Ţ¤żťî¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: login-utils/chsh.c:206
+msgid "Shell changed.\n"
+msgstr "ĽˇĽ§Ľë¤ňĘŃšš¤ˇ¤Ţ¤ˇ¤żĄŁ\n"
+
+#: login-utils/chsh.c:274
+#, c-format
+msgid "Usage: %s [ -s shell ] "
+msgstr "ťČ¤¤Ęý: %s [ -s ĽˇĽ§Ľë ] "
+
+#: login-utils/chsh.c:275
+msgid "[ --list-shells ] [ --help ] [ --version ]\n"
+msgstr "[ --list-shells ] [ --help ] [ --version ]\n"
+
+#: login-utils/chsh.c:276
+msgid " [ username ]\n"
+msgstr " [ ĽćĄźĽśĚž ]\n"
+
+#: login-utils/chsh.c:320
+#, c-format
+msgid "%s: shell must be a full path name.\n"
+msgstr "%s: ĽˇĽ§Ľë¤ĎĽŐĽëĽŃĽš¤ÇĚľ¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chsh.c:324
+#, c-format
+msgid "%s: \"%s\" does not exist.\n"
+msgstr "%s: \"%s\" ¤Ď¸şß¤ˇ¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chsh.c:328
+#, c-format
+msgid "%s: \"%s\" is not executable.\n"
+msgstr "%s: \"%s\" ¤ĎźÂšÔ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chsh.c:335
+#, c-format
+msgid "%s: '%c' is not allowed.\n"
+msgstr "%s: '%c' ¤Ďľö˛Ä¤ľ¤ě¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chsh.c:339
+#, c-format
+msgid "%s: Control characters are not allowed.\n"
+msgstr "%s: ĽłĽóĽČĽíĄźĽëʸťú¤Ďľö˛Ä¤ľ¤ě¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chsh.c:346
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells\n"
+msgstr "ˇŮšđ: \"%s\" ¤Ď /etc/shells ĽęĽšĽČ¤ÎĂć¤Ë¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: login-utils/chsh.c:348
+#, c-format
+msgid "%s: \"%s\" is not listed in /etc/shells.\n"
+msgstr "%s: \"%s\" ¤Ď /etc/shells ĽęĽšĽČ¤ÎĂć¤Ë¤˘¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chsh.c:350
+#, c-format
+msgid "%s: use -l option to see list\n"
+msgstr "%s: ĽęĽšĽČ¤ň¸Ť¤ë¤Ë¤Ď -l ĽŞĽ×ĽˇĽçĽó¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤\n"
+
+#: login-utils/chsh.c:356
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells.\n"
+msgstr "ˇŮšđ: \"%s\" ¤Ď /etc/shells ĽęĽšĽČ¤ÎĂć¤Ë¤˘¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/chsh.c:357
+#, c-format
+msgid "Use %s -l to see list.\n"
+msgstr "ĽęĽšĽČ¤ň¸Ť¤ë¤Ë¤ĎĄ˘%s -l ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: login-utils/chsh.c:378
+msgid "No known shells.\n"
+msgstr "ĂΤé¤Ę¤¤ĽˇĽ§Ľë¤Ç¤šĄŁ\n"
+
+#: login-utils/cryptocard.c:70
+msgid "couldn't open /dev/urandom"
+msgstr "/dev/urandom ¤ňłŤ¤ą¤Ţ¤ť¤ó"
+
+#: login-utils/cryptocard.c:75
+msgid "couldn't read random data from /dev/urandom"
+msgstr "/dev/urandom ¤Ť¤éĽéĽóĽŔĽŕĽÇĄźĽż¤ŹĆÉšţ¤á¤Ţ¤ť¤ó"
+
+#: login-utils/cryptocard.c:98
+#, c-format
+msgid "can't open %s for reading"
+msgstr "%s ¤ňĆÉšţ¤ßÍѤ˳Ť¤ą¤Ţ¤ť¤ó"
+
+#: login-utils/cryptocard.c:102
+#, c-format
+msgid "can't stat(%s)"
+msgstr "(%s) ĽŐĽĄĽ¤ĽëžđĘó¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó"
+
+#: login-utils/cryptocard.c:108
+#, c-format
+msgid "%s doesn't have the correct filemodes"
+msgstr "%s ¤ĎŔľ¤ˇ¤¤ĽŐĽĄĽ¤ĽëĽâĄźĽÉ¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó"
+
+#: login-utils/cryptocard.c:113
+#, c-format
+msgid "can't read data from %s"
+msgstr "%s ¤Ť¤éĽÇĄźĽż¤ňĆÉšţ¤á¤Ţ¤ť¤ó"
+
+#: login-utils/islocal.c:36
+#, c-format
+msgid "Can't read %s, exiting."
+msgstr "%s ¤ňĆɤá¤Ţ¤ť¤ó¤Î¤Ç˝ŞÎť¤ˇ¤Ţ¤šĄŁ"
+
+#: login-utils/last.c:143
+msgid "usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n"
+msgstr "ťČ¤¤Ęý: last [-#] [-f ĽŐĽĄĽ¤Ľë] [-t ĂźËö] [-h ĽŰĽšĽČĚž] [ĽćĄźĽś ...]\n"
+
+#: login-utils/last.c:283
+msgid " still logged in"
+msgstr " ĽíĽ°Ľ¤Ľó¤ˇ¤ż¤Ţ¤Ţ¤Ç¤š"
+
+#: login-utils/last.c:305
+#, c-format
+msgid ""
+"\n"
+"wtmp begins %s"
+msgstr "\nwtmp ¤Ď %s ¤Ť¤éťĎ¤Ţ¤ę¤Ţ¤š "
+
+#: login-utils/last.c:367 login-utils/last.c:387 login-utils/last.c:442
+msgid "last: malloc failure.\n"
+msgstr "last: ĽáĽâĽęłÎĘݤ˟şÇÔĄŁ\n"
+
+#: login-utils/last.c:416
+msgid "last: gethostname"
+msgstr ""
+
+#: login-utils/last.c:469
+#, c-format
+msgid ""
+"\n"
+"interrupted %10.10s %5.5s \n"
+msgstr ""
+"\n"
+"łä¤ęšţ¤ß¤ŹĆţ¤ę¤Ţ¤ˇ¤ż %10.10s %5.5s \n"
+
+#: login-utils/login.c:349
+msgid "login: -h for super-user only.\n"
+msgstr "login: -h ¤ĎĽšĄźĽŃĄźĽćĄźĽśŔěÍѤǤšĄŁ\n"
+
+#: login-utils/login.c:374
+msgid "usage: login [-fp] [username]\n"
+msgstr "ťČ¤¤Ęý: login [-fp] [ĽćĄźĽśĚž]\n"
+
+#: login-utils/login.c:476
+#, c-format
+msgid "login: PAM Failure, aborting: %s\n"
+msgstr "login: PAM źşÇÔĄŁĂćĂǤˇ¤Ţ¤š: %s\n"
+
+#: login-utils/login.c:478
+#, c-format
+msgid "Couldn't initialize PAM: %s"
+msgstr "PAM ¤Î˝é´ü˛˝¤Ź¤Ç¤­¤Ţ¤ť¤ó: %s"
+
+#: login-utils/login.c:518
+#, c-format
+msgid "FAILED LOGIN %d FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:520
+msgid ""
+"Login incorrect\n"
+"\n"
+msgstr ""
+"Login ¤Ź´Ö°ă¤Ă¤Ć¤¤¤Ţ¤š\n"
+"\n"
+
+#: login-utils/login.c:529
+#, c-format
+msgid "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:533
+#, c-format
+msgid "FAILED LOGIN SESSION FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:536
+msgid ""
+"\n"
+"Login incorrect\n"
+msgstr ""
+"\n"
+"Login ¤Ź´Ö°ă¤Ă¤Ć¤¤¤Ţ¤š\n"
+
+#: login-utils/login.c:585
+msgid "Illegal username"
+msgstr "ÉÔŔľ¤ĘĽćĄźĽśĚž"
+
+#: login-utils/login.c:628
+#, c-format
+msgid "%s login refused on this terminal.\n"
+msgstr "%s ¤ÎĽíĽ°Ľ¤Ľó¤Ď¤ł¤ÎĂźËö¤Ç¤ĎľńČݤľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: login-utils/login.c:633
+#, c-format
+msgid "LOGIN %s REFUSED FROM %s ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:637
+#, c-format
+msgid "LOGIN %s REFUSED ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:689
+msgid "Login incorrect\n"
+msgstr "Login ¤Ź´Ö°ă¤Ă¤Ć¤¤¤Ţ¤š\n"
+
+#: login-utils/login.c:711
+msgid ""
+"Too many users logged on already.\n"
+"Try again later.\n"
+msgstr ""
+"´ű¤ËĽíĽ°Ľ¤Ľó¤ˇ¤Ć¤¤¤ëĽćĄźĽśĄźżô¤ŹÂż¤š¤Ž¤Ţ¤šĄŁ\n"
+"¤Ţ¤ż¸ĺ¤Çťî¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: login-utils/login.c:715
+msgid "You have too many processes running.\n"
+msgstr "¤˘¤Ę¤ż¤ŹźÂšÔ¤ˇ¤Ć¤¤¤ëĽ×ĽíĽťĽš¤ŹÂż¤š¤Ž¤Ţ¤šĄŁ\n"
+
+#: login-utils/login.c:761
+msgid "Warning: no Kerberos tickets issued\n"
+msgstr "ˇŮšđ: Kerberos ĽÁĽąĽĂĽČ¤ŹČŻšÔ¤ľ¤ě¤Ţ¤ť¤ó\n"
+
+#: login-utils/login.c:773
+msgid "Sorry -- your password has expired.\n"
+msgstr "ťÄÇ°¤Ç¤š¤Ź -- ¤˘¤Ę¤ż¤ÎĽŃĽšĽďĄźĽÉ¤Ď´ü¸ÂŔÚ¤ě¤Ç¤šĄŁ\n"
+
+#: login-utils/login.c:779
+#, c-format
+msgid "Warning: your password expires on %s %d, %d\n"
+msgstr "ˇŮšđ: ¤˘¤Ę¤ż¤ÎĽŃĽšĽďĄźĽÉ¤Ď %s %d, %d ¤Ë´ü¸Â¤ŹŔÚ¤ě¤Ţ¤š\n"
+
+#: login-utils/login.c:787
+msgid "Sorry -- your account has expired.\n"
+msgstr "ťÄÇ°¤Ç¤š¤Ź -- ¤˘¤Ę¤ż¤ÎĽ˘ĽŤĽŚĽóĽČ¤Ď´ü¸ÂŔÚ¤ě¤Ç¤šĄŁ\n"
+
+#: login-utils/login.c:793
+#, c-format
+msgid "Warning: your account expires on %s %d, %d\n"
+msgstr "ˇŮšđ: ¤˘¤Ę¤ż¤ÎĽ˘ĽŤĽŚĽóĽČ¤Ď %s %d, %d ¤Ë´ü¸Â¤ŹŔÚ¤ě¤Ţ¤š\n"
+
+#: login-utils/login.c:1025
+#, c-format
+msgid "DIALUP AT %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1032
+#, c-format
+msgid "ROOT LOGIN ON %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1035
+#, c-format
+msgid "ROOT LOGIN ON %s"
+msgstr ""
+
+#: login-utils/login.c:1038
+#, c-format
+msgid "LOGIN ON %s BY %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1041
+#, c-format
+msgid "LOGIN ON %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1052
+#, c-format
+msgid "You have %smail.\n"
+msgstr "¤˘¤Ę¤ż¤Ë%dĽáĽ¤Ľë¤ŹĆϤ¤¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#: login-utils/login.c:1053
+msgid "new "
+msgstr "żˇ¤ż¤Ę"
+
+#. error in fork()
+#: login-utils/login.c:1071
+#, c-format
+msgid "login: failure forking: %s"
+msgstr "login: fork ¤ËźşÇÔ: %s"
+
+#: login-utils/login.c:1086
+msgid "setuid() failed"
+msgstr "setuid() ¤ËźşÇÔ"
+
+#: login-utils/login.c:1092
+#, c-format
+msgid "No directory %s!\n"
+msgstr "ĽÇĽŁĽěĽŻĽČĽę %s ¤Ź¤˘¤ę¤Ţ¤ť¤óĄŞ\n"
+
+#: login-utils/login.c:1096
+msgid "Logging in with home = \"/\".\n"
+msgstr "ĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę \"/\" ¤ÇĽíĽ°Ľ¤Ľó¤ˇ¤Ţ¤šĄŁ\n"
+
+#: login-utils/login.c:1104
+msgid "login: no memory for shell script.\n"
+msgstr "login: ĽˇĽ§ĽëĽšĽŻĽęĽ×ĽČÍѤμáĽâĽę¤Ź¤˘¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/login.c:1132
+#, c-format
+msgid "login: couldn't exec shell script: %s.\n"
+msgstr "login: ĽˇĽ§ĽëĽšĽŻĽęĽ×ĽČ¤ňźÂšÔ¤Ç¤­¤Ţ¤ť¤ó¤Ç¤ˇ¤ż: %s\n"
+
+#: login-utils/login.c:1135
+#, c-format
+msgid "login: no shell: %s.\n"
+msgstr "login: ĽˇĽ§Ľë¤Ź¤˘¤ę¤Ţ¤ť¤ó: %s.\n"
+
+#: login-utils/login.c:1151
+#, c-format
+msgid ""
+"\n"
+"%s login: "
+msgstr ""
+"\n"
+"%s ĽíĽ°Ľ¤Ľó: "
+
+#: login-utils/login.c:1162
+msgid "login name much too long.\n"
+msgstr "ĽíĽ°Ľ¤ĽóĚž¤ŹÄš¤š¤Ž¤Ţ¤šĄŁ\n"
+
+#: login-utils/login.c:1163
+msgid "NAME too long"
+msgstr "ĚžÁ°¤ŹÄš¤š¤Ž¤Ţ¤š"
+
+#: login-utils/login.c:1170
+msgid "login names may not start with '-'.\n"
+msgstr "ĽíĽ°Ľ¤ĽóĚž¤Ď '-' ¤ÇťĎ¤Ţ¤Ă¤Ć¤¤¤Ć¤Ď¤¤¤ą¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/login.c:1180
+msgid "too many bare linefeeds.\n"
+msgstr "šÔÁ÷¤ę(linefeed) ¤ŹÂż¤š¤Ž¤Ţ¤šĄŁ\n"
+
+#: login-utils/login.c:1181
+msgid "EXCESSIVE linefeeds"
+msgstr ""
+
+#: login-utils/login.c:1192
+#, c-format
+msgid "Login timed out after %d seconds\n"
+msgstr "%d Éøĺ¤ËĽíĽ°Ľ¤Ľó¤Îťţ´ÖŔÚ¤ě\n"
+
+#: login-utils/login.c:1292
+#, c-format
+msgid "Last login: %.*s "
+msgstr "şÇ˝ŞĽíĽ°Ľ¤Ľó: %.*s "
+
+#: login-utils/login.c:1296
+#, c-format
+msgid "from %.*s\n"
+msgstr " %.*s ¤Ť¤é\n"
+
+#: login-utils/login.c:1299
+#, c-format
+msgid "on %.*s\n"
+msgstr " %.*s žĺ\n"
+
+#: login-utils/login.c:1322
+#, c-format
+msgid "LOGIN FAILURE FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1325
+#, c-format
+msgid "LOGIN FAILURE ON %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1329
+#, c-format
+msgid "%d LOGIN FAILURES FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1332
+#, c-format
+msgid "%d LOGIN FAILURES ON %s, %s"
+msgstr ""
+
+#: login-utils/mesg.c:89
+msgid "is y\n"
+msgstr ""
+
+#: login-utils/mesg.c:92
+msgid "is n\n"
+msgstr ""
+
+#: login-utils/mesg.c:112
+msgid "usage: mesg [y | n]\n"
+msgstr "ťČ¤¤Ęý: mesg [y | n]\n"
+
+#: login-utils/newgrp.c:67
+msgid "newgrp: Who are you?"
+msgstr "newgrp: ¤˘¤ó¤żĂŻĄŠ"
+
+#: login-utils/newgrp.c:75 login-utils/newgrp.c:85
+msgid "newgrp: setgid"
+msgstr "newgrp: setgid"
+
+#: login-utils/newgrp.c:80
+msgid "newgrp: No such group."
+msgstr "newgrp: ¤˝¤Î¤č¤Ś¤ĘĽ°ĽëĄźĽ×¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ"
+
+#: login-utils/newgrp.c:89
+msgid "newgrp: Permission denied"
+msgstr "newgrp: ľö˛Ä¤Ź¤˘¤ę¤Ţ¤ť¤ó"
+
+#: login-utils/newgrp.c:96
+msgid "newgrp: setuid"
+msgstr "newgrp: setuid"
+
+#: login-utils/newgrp.c:102
+msgid "No shell"
+msgstr "ĽˇĽ§Ľë¤Ź¤˘¤ę¤Ţ¤ť¤ó"
+
+#: login-utils/passwd.c:163
+msgid "The password must have at least 6 characters, try again.\n"
+msgstr "ĽŃĽšĽďĄźĽÉ¤ĎşÇÄă 6 ʸťúÉŹÍפǤšĄŁ¤â¤Ś°ěĹ٤ä¤ęÄž¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: login-utils/passwd.c:176
+msgid "The password must contain characters out of two of the following\n"
+msgstr "ĽŃĽšĽďĄźĽÉ¤Ď°Ę˛ź¤ÎĆâ 2 źďÎŕ¤Ď´Ţ¤Ţ¤ě¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤ó\n"
+
+#: login-utils/passwd.c:177
+msgid "classes: upper and lower case letters, digits and non alphanumeric\n"
+msgstr "źďÎŕ: Âçʸťú¤ČžŽĘ¸ťúĄ˘żôĂͤČČ󼢼ëĽŐĽĄĽŮĽĂĽČżôĂÍ\n"
+
+#: login-utils/passwd.c:178
+msgid "characters. See passwd(1) for more information.\n"
+msgstr "ʸťúĄŁpasswd(1) ¤ň¤ß¤ĆžÜşŮ¤ňÄ´¤Ů¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: login-utils/passwd.c:183
+msgid "You cannot reuse the old password.\n"
+msgstr "¸Ĺ¤¤ĽŃĽšĽďĄźĽÉ¤ÎşĆÍřÍѤϤǤ­¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/passwd.c:188
+msgid "Please don't use something like your username as password!\n"
+msgstr "ĽćĄźĽśĚž¤ČĆą¤¸¤č¤Ś¤ĘĽŃĽšĽďĄźĽÉ¤ňťČ¤ď¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŞ\n"
+
+#: login-utils/passwd.c:199 login-utils/passwd.c:206
+msgid "Please don't use something like your realname as password!\n"
+msgstr "¤˘¤Ę¤ż¤ÎźÂĚž¤Î¤č¤Ś¤ĘĽŃĽšĽďĄźĽÉ¤ňťČ¤ď¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŞ\n"
+
+#: login-utils/passwd.c:223
+msgid "Usage: passwd [username [password]]\n"
+msgstr "ťČ¤¤Ęý: passwd [ĽćĄźĽśĚž [ĽŃĽšĽďĄźĽÉ]]\n"
+
+#: login-utils/passwd.c:224
+msgid "Only root may use the one and two argument forms.\n"
+msgstr "¤˝¤Î°ě¤Ä¤Ţ¤ż¤ĎĆó¤Ä¤Î°úżôˇÁź°¤ÇźÂšÔ¤Ç¤­¤ë¤Î¤Ď root ¤Ŕ¤ą¤Ç¤šĄŁ\n"
+
+#: login-utils/passwd.c:280
+msgid "Usage: passwd [-foqsvV] [user [password]]\n"
+msgstr "ťČ¤¤Ęý: passwd [-foqsvV] [ĽćĄźĽś [ĽŃĽšĽďĄźĽÉ]]\n"
+
+#: login-utils/passwd.c:301
+#, c-format
+msgid "Can't exec %s: %s\n"
+msgstr "%s ¤ňźÂšÔ¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: login-utils/passwd.c:312
+msgid "Cannot find login name"
+msgstr "ĽíĽ°Ľ¤ĽóĚž¤Ź¸Ť¤Ä¤ą¤é¤ě¤Ţ¤ť¤ó"
+
+#: login-utils/passwd.c:319 login-utils/passwd.c:326
+msgid "Only root can change the password for others.\n"
+msgstr "žżÍ¤ÎĽŃĽšĽďĄźĽÉ¤ňĘŃšš¤Ç¤­¤ë¤Î¤ĎĽëĄźĽČ¤Ŕ¤ą¤Ç¤šĄŁ\n"
+
+#: login-utils/passwd.c:334
+msgid "Too many arguments.\n"
+msgstr "°úżô¤ŹÂż¤š¤Ž¤Ţ¤šĄŁ\n"
+
+#: login-utils/passwd.c:339
+#, c-format
+msgid "Can't find username anywhere. Is `%s' really a user?"
+msgstr "ĽćĄźĽśĚž¤Ź¤É¤ł¤Ë¤â¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤óĄŁ`%s' ¤ĎËÜĹö¤ËĽćĄźĽś¤Ç¤š¤ŤĄŠ"
+
+#: login-utils/passwd.c:343
+msgid "Sorry, I can only change local passwords. Use yppasswd instead."
+msgstr ""
+"ťÄÇ°¤Ę¤Ź¤éĄ˘ĽíĄźĽŤĽë¤ÎĽŃĽšĽďĄźĽÉ¤ÎĘŃšš¤ˇ¤Ť¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+"¤Ť¤ď¤ę¤Ë yppasswd ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ"
+
+#: login-utils/passwd.c:349
+msgid "UID and username does not match, imposter!"
+msgstr "ĽćĄźĽśID ČÖšć¤ČĽćĄźĽśĚž¤Ź°ěĂפˇ¤Ţ¤ť¤óĄŁşžžÎ¤ŔĄŞ"
+
+#: login-utils/passwd.c:354
+#, c-format
+msgid "Changing password for %s\n"
+msgstr "%s ¤ÎĽŃĽšĽďĄźĽÉ¤ňĘŃšš¤ˇ¤Ţ¤š\n"
+
+#: login-utils/passwd.c:358
+msgid "Enter old password: "
+msgstr "ľĺĽŃĽšĽďĄźĽÉ¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤: "
+
+#: login-utils/passwd.c:360
+msgid "Illegal password, imposter."
+msgstr "ÉÔŔľ¤ĘĽŃĽšĽďĄźĽÉĄ˘şžžÎ¤Ç¤šĄŁ"
+
+#: login-utils/passwd.c:372
+msgid "Enter new password: "
+msgstr "żˇĽŃĽšĽďĄźĽÉ¤ňĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ"
+
+#: login-utils/passwd.c:374
+msgid "Password not changed."
+msgstr "ĽŃĽšĽďĄźĽÉ¤ĎĘŃšš¤ľ¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤żĄŁ"
+
+#: login-utils/passwd.c:384
+msgid "Re-type new password: "
+msgstr "żˇĽŃĽšĽďĄźĽÉ¤ň¤â¤Ś°ěĹŮĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤: "
+
+#: login-utils/passwd.c:387
+msgid "You misspelled it. Password not changed."
+msgstr "Ä֤ꤏ°ă¤¤¤Ţ¤šĄŁ¸ĺ¤Ç¤â¤Ś°ěĹٝ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ"
+
+#: login-utils/passwd.c:402
+#, c-format
+msgid "password changed, user %s"
+msgstr "ĽŃĽšĽďĄźĽÉ¤ĎĘŃšš¤ľ¤ě¤Ţ¤ˇ¤żĄŁĽćĄźĽś %s"
+
+#: login-utils/passwd.c:405
+msgid "ROOT PASSWORD CHANGED"
+msgstr "* root ¤ÎĽŃĽšĽďĄźĽÉ¤ŹĘŃšš¤ľ¤ě¤Ţ¤ˇ¤ż *"
+
+#: login-utils/passwd.c:407
+#, c-format
+msgid "password changed by root, user %s"
+msgstr "ĽŃĽšĽďĄźĽÉ¤ĎĽëĄźĽČ¤Ë¤č¤Ă¤ĆĘŃšš¤ľ¤ě¤Ţ¤ˇ¤żĄ˘ĽćĄźĽś %s"
+
+#: login-utils/passwd.c:414
+msgid "calling setpwnam to set password.\n"
+msgstr "ĽŃĽšĽďĄźĽÉ¤ňŔßÄꤚ¤ë¤ż¤á setpwnam ¤ň¸Ć¤Ó˝Đ¤ˇĂ楣\n"
+
+#: login-utils/passwd.c:418
+msgid "Password *NOT* changed. Try again later.\n"
+msgstr "ĽŃĽšĽďĄźĽÉ¤ĎĘŃšš *¤ľ¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤ż*ĄŁ¸ĺ¤Ç¤â¤Ś°ěĹٝ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: login-utils/passwd.c:424
+msgid "Password changed.\n"
+msgstr "ĽŃĽšĽďĄźĽÉ¤ĎĘŃšš¤ľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: login-utils/shutdown.c:85
+msgid "Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n"
+msgstr "ťČ¤¤Ęý: shutdown [-h|-r] [-fqs] [now|hh:ss|+ĘŹ]\n"
+
+#: login-utils/shutdown.c:103
+msgid "Shutdown process aborted"
+msgstr "ĽˇĽăĽĂĽČĽŔĽŚĽó˝čÍý¤ĎĂćĂǤľ¤ě¤Ţ¤ˇ¤ż"
+
+#: login-utils/shutdown.c:125
+#, c-format
+msgid "%s: Only root can shut a system down.\n"
+msgstr "%s: ĽëĄźĽČ¤Ŕ¤ą¤ŹĽˇĽšĽĆĽŕ¤ňĽˇĽăĽĂĽČĽŔĽŚĽó¤Ç¤­¤Ţ¤šĄŁ\n"
+
+#: login-utils/shutdown.c:219
+msgid "That must be tomorrow, can't you wait till then?\n"
+msgstr "ĚŔĆü¤Ë¤Ę¤Ă¤Ć¤ˇ¤Ţ¤¤¤Ţ¤š¤ŹĄ˘¤˝¤ě¤Ţ¤ÇÂԤƤʤ¤¤Ç¤ˇ¤çĄŠ\n"
+
+#: login-utils/shutdown.c:271
+msgid "for maintenance; bounce, bounce"
+msgstr ""
+
+#: login-utils/shutdown.c:275
+#, c-format
+msgid "timeout = %d, quiet = %d, reboot = %d\n"
+msgstr ""
+
+#: login-utils/shutdown.c:300
+msgid "The system is being shut down within 5 minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:304
+msgid "Login is therefore prohibited."
+msgstr ""
+
+#: login-utils/shutdown.c:325
+#, c-format
+msgid "%s by %s: %s"
+msgstr "%2$s ¤Ë¤č¤ë %1$s: %3$s"
+
+#: login-utils/shutdown.c:326
+msgid "rebooted"
+msgstr "şĆľŻĆ°"
+
+#: login-utils/shutdown.c:326
+msgid "halted"
+msgstr "Ääťß"
+
+#. RB_AUTOBOOT
+#: login-utils/shutdown.c:377
+msgid ""
+"\n"
+"Why am I still alive after reboot?"
+msgstr ""
+"\n"
+"¤Ę¤źĽęĽÖĄźĽČ¤ˇ¤ż¤Î¤ËĄ˘ĽˇĽăĽĂĽČĽŔĽŚĽóĽ×ĽíĽťĽš¤ŹŔ¸¤­¤Ć¤¤¤ë¤ó¤ŔĄŠ"
+
+#: login-utils/shutdown.c:379
+msgid ""
+"\n"
+"Now you can turn off the power..."
+msgstr ""
+"\n"
+"¤ľ¤ĆĄ˘ĹŸť¤ňŔڤ뤳¤Č¤Ź¤Ç¤­¤Ţ¤š¤č..."
+
+#: login-utils/shutdown.c:394
+msgid "Calling kernel power-off facility...\n"
+msgstr "ĽŤĄźĽÍĽë¤Î power-off ľĄÇ˝¤ň¸Ć¤Ó˝Đ¤ˇ¤Ć¤¤¤Ţ¤š...\n"
+
+#: login-utils/shutdown.c:397
+#, c-format
+msgid "Error powering off\t%s\n"
+msgstr "ĹŸť¤ňŔÚ¤ëşÝ¤ÎĽ¨ĽéĄź\t%s\n"
+
+#: login-utils/shutdown.c:405
+#, c-format
+msgid "Executing the program \"%s\" ...\n"
+msgstr "Ľ×ĽíĽ°ĽéĽŕ \"%s\" ¤ňźÂšÔ¤ˇ¤Ć¤¤¤Ţ¤š...\n"
+
+#: login-utils/shutdown.c:408
+#, c-format
+msgid "Error executing\t%s\n"
+msgstr "źÂšÔĽ¨ĽéĄź\t%s\n"
+
+#: login-utils/shutdown.c:431
+#, c-format
+msgid "URGENT: broadcast message from %s:"
+msgstr ""
+
+#: login-utils/shutdown.c:437
+msgid "System going down IMMEDIATELY!\n"
+msgstr ""
+
+#: login-utils/shutdown.c:440
+#, c-format
+msgid "System going down in %d hour%s %d minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:441 login-utils/shutdown.c:444
+msgid "s"
+msgstr ""
+
+#: login-utils/shutdown.c:443
+#, c-format
+msgid "System going down in %d minute%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:449
+#, c-format
+msgid "\t... %s ...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:506
+msgid "Cannot fork for swapoff. Shrug!"
+msgstr "swapoff ťŇĽ×ĽíĽťĽš¤ňľŻĆ°¤Ç¤­¤Ţ¤ť¤óĄŁ"
+
+#: login-utils/shutdown.c:514
+msgid "Cannot exec swapoff, hoping umount will do the trick."
+msgstr "swapoff ¤ňźÂšÔ¤Ç¤­¤Ţ¤ť¤ó¤Î¤ÇĄ˘Ľ˘ĽóĽŢĽŚĽóĽČ¤ňČô¤Đ¤š¤Č¤¤¤¤¤Ç¤ˇ¤ç¤ŚĄŁ"
+
+#: login-utils/shutdown.c:533
+msgid "Cannot fork for umount, trying manually."
+msgstr "umount ťŇĽ×ĽíĽťĽš¤ňľŻĆ°¤Ç¤­¤Ţ¤ť¤óĄŁźęĆ°¤ňťî¤ˇ¤Ć¤ß¤Ţ¤šĄŁ"
+
+#: login-utils/shutdown.c:542
+#, c-format
+msgid "Cannot exec %s, trying umount.\n"
+msgstr "%s ¤ňźÂšÔ¤Ç¤­¤Ţ¤ť¤óĄŁĽ˘ĽóĽŢĽŚĽóĽČ¤ňťî¤ß¤Ţ¤šĄŁ\n"
+
+#: login-utils/shutdown.c:546
+msgid "Cannot exec umount, giving up on umount."
+msgstr "umount ¤ňźÂšÔ¤Ç¤­¤Ţ¤ť¤óĄŁĽ˘ĽóĽŢĽŚĽóĽČ¤ňÄü¤á¤Ţ¤šĄŁ"
+
+#: login-utils/shutdown.c:551
+msgid "Unmounting any remaining filesystems..."
+msgstr "ťÄ¤ę¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ňĽ˘ĽóĽŢĽŚĽóĽČ¤ˇ¤Ţ¤š..."
+
+#: login-utils/shutdown.c:587
+#, c-format
+msgid "shutdown: Couldn't umount %s\n"
+msgstr "shutdown: %s ¤ňĽ˘ĽóĽŢĽŚĽóĽČ¤Ç¤­¤Ţ¤ť¤ó¤Ç¤ˇ¤ż\n"
+
+#: login-utils/simpleinit.c:79
+msgid "Booting to single user mode.\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:83
+msgid "exec of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:87
+msgid "fork of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:226
+msgid ""
+"\n"
+"Wrong password.\n"
+msgstr ""
+"\n"
+"´Ö°ă¤Ă¤żĽŃĽšĽďĄźĽÉĄŁ\n"
+
+#: login-utils/simpleinit.c:252
+msgid "exec rc failed\n"
+msgstr "rc ¤ÎźÂšÔ¤ËźşÇÔ\n"
+
+#: login-utils/simpleinit.c:255
+msgid "open of rc file failed\n"
+msgstr "rc ĽŐĽĄĽ¤Ľë¤ÎĽŞĄźĽ×Ľó¤ËźşÇÔ\n"
+
+#: login-utils/simpleinit.c:261
+msgid "fork of rc shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:273
+msgid "fork failed\n"
+msgstr "fork ¤ŹźşÇÔ\n"
+
+#: login-utils/simpleinit.c:302 text-utils/more.c:1548
+msgid "exec failed\n"
+msgstr "źÂšÔ¤ËźşÇÔ\n"
+
+#: login-utils/simpleinit.c:324
+msgid "cannot open inittab\n"
+msgstr "inittab ¤ňłŤ¤ą¤Ţ¤ť¤ó\n"
+
+#: login-utils/simpleinit.c:362
+msgid "no TERM or cannot stat tty\n"
+msgstr ""
+
+#: login-utils/ttymsg.c:81
+msgid "too many iov's (change code in wall/ttymsg.c)"
+msgstr ""
+
+#: login-utils/ttymsg.c:91
+msgid "excessively long line arg"
+msgstr "šÔ°úżô¤ŹÄš¤š¤Ž¤Ţ¤š"
+
+#: login-utils/ttymsg.c:145
+msgid "cannot fork"
+msgstr "ťŇĽ×ĽíĽťĽš¤ňľŻĆ°¤Ç¤­¤Ţ¤ť¤ó"
+
+#: login-utils/ttymsg.c:149
+#, c-format
+msgid "fork: %s"
+msgstr ""
+
+#: login-utils/ttymsg.c:177
+#, c-format
+msgid "%s: BAD ERROR"
+msgstr ""
+
+#: login-utils/vipw.c:149
+#, c-format
+msgid "%s: the %s file is busy.\n"
+msgstr "%s: ¤˝¤ÎĽŐĽĄĽ¤Ľë %s ¤ĎťČÍŃĂć¤Ç¤šĄŁ\n"
+
+#: login-utils/vipw.c:165
+#, c-format
+msgid "%s: the %s file is busy (%s present)\n"
+msgstr "%s: ¤˝¤ÎĽŐĽĄĽ¤Ľë %s ¤ĎťČÍŃĂć¤Ç¤š (¸˝şß¤Ď %s)\n"
+
+#: login-utils/vipw.c:171
+#, c-format
+msgid "%s: can't link %s: %s\n"
+msgstr "%s: %s ¤ňĽęĽóĽŻ¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: login-utils/vipw.c:193
+#, c-format
+msgid "%s: can't unlock %s: %s (your changes are still in %s)\n"
+msgstr "%s: %s ¤ÎĽíĽĂĽŻ¤ň˛ň˝ü¤Ç¤­¤Ţ¤ť¤ó: %s (ĘŃšš¤Ď %s ¤Î¤Ţ¤Ţ¤Ç¤š)\n"
+
+#: login-utils/vipw.c:217
+#, c-format
+msgid "%s: Cannot fork\n"
+msgstr "%s: ťŇĽ×ĽíĽťĽš¤ňľŻĆ°¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: login-utils/vipw.c:257
+#, c-format
+msgid "%s: %s unchanged\n"
+msgstr "%s: %s ¤ĎĘŃšš¤ľ¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤ż\n"
+
+#: login-utils/vipw.c:300
+#, c-format
+msgid "%s: no changes made\n"
+msgstr "%s: ĘŃšš¤ľ¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤ż\n"
+
+#: login-utils/wall.c:106
+#, c-format
+msgid "usage: %s [file]\n"
+msgstr "ťČ¤¤Ęý: %s [ĽŐĽĄĽ¤Ľë]\n"
+
+#: login-utils/wall.c:154
+#, c-format
+msgid "%s: can't open temporary file.\n"
+msgstr "%s: °ěťţĽŐĽĄĽ¤Ľë¤ňĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/wall.c:181
+#, c-format
+msgid "Broadcast Message from %s@%s"
+msgstr "%s@%s ¤Ť¤éÎŽ¤ě¤Ć¤­¤żĽáĽĂĽťĄźĽ¸"
+
+#: login-utils/wall.c:191
+#, c-format
+msgid "%s: can't read %s.\n"
+msgstr "%s: %s ¤ňĆɤá¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/wall.c:216
+#, c-format
+msgid "%s: can't stat temporary file.\n"
+msgstr "%s: °ěťţĽŐĽĄĽ¤Ľë¤ÎžđĘó¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: login-utils/wall.c:225
+#, c-format
+msgid "%s: can't read temporary file.\n"
+msgstr "%s: °ěťţĽŐĽĄĽ¤Ľë¤ňĆɤá¤Ţ¤ť¤óĄŁ\n"
+
+#: misc-utils/cal.c:184
+msgid "illegal month value: use 1-12"
+msgstr "ÉÔŔľ¤Ęˇî: 1-12 ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤"
+
+#: misc-utils/cal.c:188
+msgid "illegal year value: use 1-9999"
+msgstr "ÉÔŔľ¤ĘÇŻ: 1-9999 ¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤"
+
+#: misc-utils/cal.c:484
+msgid "usage: cal [-mjy] [[month] year]\n"
+msgstr "ťČ¤¤Ęý: cal [-mjy] [[ˇî] ÇŻ]\n"
+
+#: misc-utils/ddate.c:184
+#, c-format
+msgid "usage: %s [+format] [day month year]\n"
+msgstr "ťČ¤¤Ęý: %s [+˝ńź°] [Ćü ˇî ÇŻ]\n"
+
+#. handle St. Tib's Day
+#: misc-utils/ddate.c:230
+msgid "St. Tib's Day"
+msgstr ""
+
+#: misc-utils/kill.c:199
+#, c-format
+msgid "%s: unknown signal %s\n"
+msgstr "%s: ̤ĂΤμˇĽ°ĽĘĽë %s\n"
+
+#: misc-utils/kill.c:261
+#, c-format
+msgid "%s: can't find process \"%s\"\n"
+msgstr "%s: Ľ×ĽíĽťĽš \"%s\" ¤ň¸Ť¤Ä¤ą¤é¤ě¤Ţ¤ť¤ó\n"
+
+#: misc-utils/kill.c:303
+#, c-format
+msgid "%s: unknown signal %s; valid signals:\n"
+msgstr "%s: ̤ĂΤμˇĽ°ĽĘĽë %s -- Ŕľžď¤ĘĽˇĽ°ĽĘĽë:\n"
+
+#: misc-utils/kill.c:343
+#, c-format
+msgid "usage: %s [ -s signal | -p ] [ -a ] pid ...\n"
+msgstr "ťČ¤¤Ęý: %s [ -s ĽˇĽ°ĽĘĽë | -p ] [ -a ] Ľ×ĽíĽťĽšID ...\n"
+
+#: misc-utils/kill.c:344
+#, c-format
+msgid " %s -l [ signal ]\n"
+msgstr " %s -l [ ĽˇĽ°ĽĘĽë ]\n"
+
+#: misc-utils/logger.c:144
+#, c-format
+msgid "logger: %s: %s.\n"
+msgstr "logger: %s: %s.\n"
+
+#: misc-utils/logger.c:241
+#, c-format
+msgid "logger: unknown facility name: %s.\n"
+msgstr "logger: ̤ĂΤÎÍ×ÁÇ: %s.\n"
+
+#: misc-utils/logger.c:253
+#, c-format
+msgid "logger: unknown priority name: %s.\n"
+msgstr "logger: ̤ĂΤÎÍĽŔčĹŮ: %s.\n"
+
+#: misc-utils/logger.c:280
+msgid ""
+"usage: logger [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n"
+msgstr "ťČ¤¤Ęý: logger [-is] [-f ĽŐĽĄĽ¤Ľë] [-p ÍĽŔčĹŮ] [-t ĽżĽ°] [-u Ľ˝ĽąĽĂĽČ] [ ĽáĽĂĽťĄźĽ¸ ... ]\n"
+
+#: misc-utils/look.c:170 misc-utils/setterm.c:1153 text-utils/more.c:1862
+#: text-utils/more.c:1873
+msgid "Out of memory"
+msgstr "ĽáĽâĽę¤ŹÂ­¤ę¤Ţ¤ť¤ó"
+
+#: misc-utils/look.c:340
+msgid "usage: look [-dfa] [-t char] string [file]\n"
+msgstr "ťČ¤¤Ęý: look [-dfa] [-t Ľ­ĽăĽéĽŻĽż] ʸťúÎó [ĽŐĽĄĽ¤Ľë]\n"
+
+#: misc-utils/mcookie.c:122 misc-utils/mcookie.c:149
+#, c-format
+msgid "Could not open %s\n"
+msgstr "%s ¤ňĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: misc-utils/mcookie.c:126 misc-utils/mcookie.c:145
+#, c-format
+msgid "Got %d bytes from %s\n"
+msgstr "%2$s ¤Ť¤é %1$d ĽĐĽ¤ĽČźčĆŔ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: misc-utils/namei.c:107
+#, c-format
+msgid "namei: unable to get current directory - %s\n"
+msgstr "namei: ĽŤĽěĽóĽČĽÇĽŁĽěĽŻĽČĽę¤ËĽ˘ĽŻĽťĽš¤Ç¤­¤Ţ¤ť¤ó -- %s\n"
+
+#: misc-utils/namei.c:118
+#, c-format
+msgid "namei: unable to chdir to %s - %s (%d)\n"
+msgstr "namei: %s \n"
+
+#: misc-utils/namei.c:128
+msgid "usage: namei [-mx] pathname [pathname ...]\n"
+msgstr "usage: namei [-mx] ĽŃĽšĚž [ĽŃĽšĚž ...]\n"
+
+#: misc-utils/namei.c:157
+msgid "namei: could not chdir to root!\n"
+msgstr "namei: ĽëĄźĽČĽÇĽŁĽěĽŻĽČĽę¤Ë°ÜĆ°¤Ç¤­¤Ţ¤ť¤óĄŞ\n"
+
+#: misc-utils/namei.c:164
+msgid "namei: could not stat root!\n"
+msgstr "namei: ĽëĄźĽČĽÇĽŁĽěĽŻĽČĽę¤ÎĽŐĽĄĽ¤ĽëžđĘó¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤óĄŞ\n"
+
+#: misc-utils/namei.c:219
+#, c-format
+msgid " ? could not chdir into %s - %s (%d)\n"
+msgstr " ? %s ĽÇĽŁĽěĽŻĽČĽę¤Ë°ÜĆ°¤Ç¤­¤Ţ¤ť¤ó -- %s (%d)\n"
+
+#: misc-utils/namei.c:248
+#, c-format
+msgid " ? problems reading symlink %s - %s (%d)\n"
+msgstr " ? ĽˇĽóĽÜĽęĽĂĽŻĽęĽóĽŻĆɤߟč¤ęĂć¤ËĚäÂꤏľŻ¤­¤Ţ¤ˇ¤ż -- %s (%d)\n"
+
+#: misc-utils/namei.c:258
+msgid " *** EXCEEDED UNIX LIMIT OF SYMLINKS ***"
+msgstr " *** ĽˇĽóĽÜĽęĽĂĽŻĽęĽóĽŻżô¤Ź UNIX ¤ÎŔŠ¸Â¤ňąŰ¤¨¤Ţ¤ˇ¤ż ***"
+
+#: misc-utils/namei.c:294
+#, c-format
+msgid "namei: unknown file type 0%06o on file %s\n"
+msgstr "namei: ĽŐĽĄĽ¤Ľë %2$s ¤ĎĄ˘Ě¤ĂΤμռĄĽ¤ĽëĽżĽ¤Ľ× 0%1$06o ¤Ç¤š\n"
+
+#: misc-utils/script.c:108
+msgid "usage: script [-a] [file]\n"
+msgstr "ťČ¤¤Ęý: script [-a] [ĽŐĽĄĽ¤Ľë]\n"
+
+#: misc-utils/script.c:128
+#, c-format
+msgid "Script started, file is %s\n"
+msgstr "ĽšĽŻĽęĽ×ĽČ¤ňłŤťĎ¤ˇ¤Ţ¤ˇ¤żĄ˘ĽŐĽĄĽ¤Ľë¤Ď %s ¤Ç¤š\n"
+
+#: misc-utils/script.c:197
+#, c-format
+msgid "Script started on %s"
+msgstr "ĽšĽŻĽęĽ×ĽČ¤Ď %s ¤ËłŤťĎ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: misc-utils/script.c:263
+#, c-format
+msgid ""
+"\n"
+"Script done on %s"
+msgstr ""
+"\n"
+"ĽšĽŻĽęĽ×ĽČ¤Ď %s ¤Ë˝ŞÎť¤ˇ¤Ţ¤ˇ¤ż"
+
+#: misc-utils/script.c:268
+#, c-format
+msgid "Script done, file is %s\n"
+msgstr "ĽšĽŻĽęĽ×ĽČ¤ň˝ŞÎť¤ˇ¤Ţ¤ˇ¤żĄ˘ĽŐĽĄĽ¤Ľë¤Ď %s ¤Ç¤š\n"
+
+#: misc-utils/script.c:280
+msgid "openpty failed\n"
+msgstr "openpty ¤ŹźşÇÔ\n"
+
+#: misc-utils/script.c:314
+msgid "Out of pty's\n"
+msgstr "ÍřÍѤǤ­¤ë pty ¤Ź¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#. Print error message about arguments, and the command's syntax.
+#: misc-utils/setterm.c:745
+#, c-format
+msgid "%s: Argument error, usage\n"
+msgstr "%s: °úżôĽ¨ĽéĄźĄ˘ťČ¤¤Ęý¤Ď\n"
+
+#: misc-utils/setterm.c:748
+msgid " [ -term terminal_name ]\n"
+msgstr " [ -term ĂźËöĚž ]\n"
+
+#: misc-utils/setterm.c:749
+msgid " [ -reset ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:750
+msgid " [ -initialize ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:751
+msgid " [ -cursor [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:753
+msgid " [ -snow [on|off] ]\n"
+msgstr " [ -snow [on|off] ]\n"
+
+#: misc-utils/setterm.c:754
+msgid " [ -softscroll [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:755
+msgid " [ -keyboard pc|olivetti|dutch|extended ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:757
+msgid " [ -repeat [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:758
+msgid " [ -appcursorkeys [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:759
+msgid " [ -linewrap [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:760
+msgid " [ -default ]\n"
+msgstr " [ -default ]\n"
+
+#: misc-utils/setterm.c:761
+msgid " [ -foreground black|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:762 misc-utils/setterm.c:764
+msgid "|red|magenta|yellow|white|default ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:763
+msgid " [ -background black|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:765
+msgid " [ -ulcolor black|grey|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:766 misc-utils/setterm.c:768 misc-utils/setterm.c:770
+#: misc-utils/setterm.c:772
+msgid "|red|magenta|yellow|white ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:767
+msgid " [ -ulcolor bright blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:769
+msgid " [ -hbcolor black|grey|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:771
+msgid " [ -hbcolor bright blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:774
+msgid " [ -standout [ attr ] ]\n"
+msgstr " [ -standout [ attr ] ]\n"
+
+#: misc-utils/setterm.c:776
+msgid " [ -inversescreen [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:777
+msgid " [ -bold [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:778
+msgid " [ -half-bright [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:779
+msgid " [ -blink [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:780
+msgid " [ -reverse [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:781
+msgid " [ -underline [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:782
+msgid " [ -store ]\n"
+msgstr " [ -store ]\n"
+
+#: misc-utils/setterm.c:783
+msgid " [ -clear [all|rest] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:784
+msgid " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr " [ -tabs [ ĽżĽÖ1 ĽżĽÖ2 ĽżĽÖ3 ... ] ] (ĽżĽÖżô = 1-160)\n"
+
+#: misc-utils/setterm.c:785
+msgid " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr " [ -clrtabs [ ĽżĽÖ1 ĽżĽÖ2 ĽżĽÖ3 ... ] ] (ĽżĽÖżô = 1-160)\n"
+
+#: misc-utils/setterm.c:786
+msgid " [ -regtabs [1-160] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:787
+msgid " [ -blank [0-60] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:788
+msgid " [ -dump [1-NR_CONSOLES] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:789
+msgid " [ -append [1-NR_CONSOLES] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:790
+msgid " [ -file dumpfilename ]\n"
+msgstr " [ -file ĽŔĽóĽ×ĽŐĽĄĽ¤ĽëĚž ]\n"
+
+#: misc-utils/setterm.c:791
+msgid " [ -msg [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:792
+msgid " [ -msglevel [0-8] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:793
+msgid " [ -powersave [on|vsync|hsync|powerdown|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:794
+msgid " [ -powerdown [0-60] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:795
+msgid " [ -blength [0-2000] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:796
+msgid " [ -bfreq freqnumber ]\n"
+msgstr " [ -bfreq freqnumber ]\n"
+
+#: misc-utils/setterm.c:841
+msgid "keyboard.pc"
+msgstr ""
+
+#: misc-utils/setterm.c:844
+msgid "keyboard.olivetti"
+msgstr ""
+
+#: misc-utils/setterm.c:847
+msgid "keyboard.dutch"
+msgstr ""
+
+#: misc-utils/setterm.c:850
+msgid "keyboard.extended"
+msgstr ""
+
+#: misc-utils/setterm.c:884
+msgid "snow.on"
+msgstr ""
+
+#: misc-utils/setterm.c:886
+msgid "snow.off"
+msgstr ""
+
+#: misc-utils/setterm.c:892
+msgid "softscroll.on"
+msgstr ""
+
+#: misc-utils/setterm.c:894
+msgid "softscroll.off"
+msgstr ""
+
+#: misc-utils/setterm.c:1069
+msgid "cannot (un)set powersave mode\n"
+msgstr "ĽŃĽďĄźĽťĄźĽÖĽâĄźĽÉ¤ËŔßÄę(Ëô¤Ď˛ň˝ü)¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: misc-utils/setterm.c:1108 misc-utils/setterm.c:1116
+#, c-format
+msgid "klogctl error: %s\n"
+msgstr "klogctl Ľ¨ĽéĄź: %s\n"
+
+#: misc-utils/setterm.c:1157
+#, c-format
+msgid "Error reading %s\n"
+msgstr "%s ¤ÎĆÉšţ¤ßĽ¨ĽéĄź\n"
+
+#: misc-utils/setterm.c:1172
+msgid "Error writing screendump\n"
+msgstr "ĽšĽŻĽęĄźĽóĽŔĽóĽ×˝ń¤­šţ¤ßĽ¨ĽéĄź\n"
+
+#: misc-utils/setterm.c:1186
+#, c-format
+msgid "couldn't read %s, and cannot ioctl dump\n"
+msgstr "%s ¤ňĆɤá¤Ţ¤ť¤óĄ˘¤˝¤ˇ¤Ć ioctl ĽŔĽóĽ×¤Ź¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: misc-utils/setterm.c:1251
+#, c-format
+msgid "%s: $TERM is not defined.\n"
+msgstr "%s: $TERM ¤ŹÄęľÁ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: misc-utils/tsort.c:119
+msgid "usage: tsort [ inputfile ]\n"
+msgstr "ťČ¤¤Ęý: tsort [ ĆţÎĎĽŐĽĄĽ¤Ľë ]\n"
+
+#: misc-utils/tsort.c:156
+msgid "tsort: odd data count.\n"
+msgstr "tsort: ĘѤʼǥźĽżĽŤĽŚĽóĽČ¤Ç¤šĄŁ\n"
+
+#: misc-utils/tsort.c:321
+msgid "tsort: cycle in data.\n"
+msgstr "tsort: ĽÇĄźĽż¤Ź˝Ű´Ä¤ˇ¤Ć¤¤¤Ţ¤šĄŁ\n"
+
+#: misc-utils/tsort.c:334
+msgid "tsort: internal error -- could not find cycle.\n"
+msgstr "tsort: ĆâÉôĽ¨ĽéĄź -- ˝Ű´Ä¤ň¸Ť¤Ä¤ą¤é¤ě¤Ţ¤ť¤ó¤Ç¤ˇ¤żĄŁ\n"
+
+#: misc-utils/whereis.c:158
+msgid "whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n"
+msgstr "whereis [ -sbmu ] [ -SBM ĽÇĽŁĽěĽŻĽČĽę ... -f ] ĚžÁ° ...\n"
+
+#: misc-utils/write.c:99
+msgid "write: can't find your tty's name\n"
+msgstr "write: ¤˘¤Ę¤ż¤Î tty ¤ÎĚžÁ°¤ň¸Ť¤Ä¤ą¤é¤ě¤Ţ¤ť¤ó\n"
+
+#: misc-utils/write.c:110
+msgid "write: you have write permission turned off.\n"
+msgstr "write: ¤˘¤Ę¤ż¤Ď˝ń¤­šţ¤ß¸˘¸Â¤ňĽŞĽŐ¤Ë¤ˇ¤ż¤Ţ¤Ţ¤Ç¤šĄŁ\n"
+
+#: misc-utils/write.c:131
+#, c-format
+msgid "write: %s is not logged in on %s.\n"
+msgstr "write: %s ¤Ď %s ¤ËĽíĽ°Ľ¤Ľó¤ˇ¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: misc-utils/write.c:139
+#, c-format
+msgid "write: %s has messages disabled on %s\n"
+msgstr "write %s ¤Ë¤Ď %s žĺ¤ÇĽáĽĂĽťĄźĽ¸¤ňĚľ¸ú¤Ë¤ˇ¤Ć¤¤¤Ţ¤š\n"
+
+#: misc-utils/write.c:146
+msgid "usage: write user [tty]\n"
+msgstr "ťČ¤¤Ęý: write ĽćĄźĽś [tty]\n"
+
+#: misc-utils/write.c:245
+#, c-format
+msgid "write: %s is not logged in\n"
+msgstr "write %s ¤ĎĽíĽ°Ľ¤Ľó¤ˇ¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: misc-utils/write.c:254
+#, c-format
+msgid "write: %s has messages disabled\n"
+msgstr "write: %s ¤ĎĽáĽĂĽťĄźĽ¸¤ňĚľ¸ú¤Ë¤ˇ¤Ć¤¤¤Ţ¤š\n"
+
+#: misc-utils/write.c:258
+#, c-format
+msgid "write: %s is logged in more than once; writing to %s\n"
+msgstr "write: %s ¤ĎĘŁżôĽíĽ°Ľ¤Ľó¤ˇ¤Ć¤¤¤Ţ¤š -- %s ¤Ë write ¤ˇ¤Ţ¤š\n"
+
+#: misc-utils/write.c:325
+#, c-format
+msgid "Message from %s@%s on %s at %s ..."
+msgstr ""
+
+#: mount/fstab.c:116
+#, c-format
+msgid "warning: error reading %s: %s"
+msgstr "ˇŮšđ: %s ¤ÎĆÉšţ¤ßĽ¨ĽéĄź: %s"
+
+#: mount/fstab.c:143 mount/fstab.c:166
+#, c-format
+msgid "warning: can't open %s: %s"
+msgstr "ˇŮšđ: %s ¤ŹĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó: %s"
+
+#: mount/fstab.c:147
+#, c-format
+msgid "mount: could not open %s - using %s instead\n"
+msgstr "mount: %s ¤ňĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó¤Ç¤ˇ¤ż -- Âĺ¤ę¤Ë %s ¤ňťČ¤¤¤Ţ¤š\n"
+
+#. linktargetfile does not exist (as a file)
+#. and we cannot create it. Read-only filesystem?
+#. Too many files open in the system? Filesystem full?
+#: mount/fstab.c:358
+#, c-format
+msgid "can't create lock file %s: %s (use -n flag to override)"
+msgstr "ĽíĽĂĽŻĽŐĽĄĽ¤Ľë %s ¤ňşîŔŽ¤Ç¤­¤Ţ¤ť¤ó: %s (-n ĽŐĽéĽ°¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤)"
+
+#: mount/fstab.c:370
+#, c-format
+msgid "can't link lock file %s: %s (use -n flag to override)"
+msgstr "ĽíĽĂĽŻĽŐĽĄĽ¤Ľë %s ¤ňĽęĽóĽŻ¤Ç¤­¤Ţ¤ť¤ó: %s (-n ĽŐĽéĽ°¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤)"
+
+#: mount/fstab.c:382
+#, c-format
+msgid "can't open lock file %s: %s (use -n flag to override)"
+msgstr "ĽíĽĂĽŻĽŐĽĄĽ¤Ľë %s ¤ňłŤ¤ą¤Ţ¤ť¤ó: %s (-n ĽŐĽéĽ°¤ňťČ¤Ă¤Ć¤Ż¤Ŕ¤ľ¤¤)"
+
+#: mount/fstab.c:397
+#, c-format
+msgid "Can't lock lock file %s: %s\n"
+msgstr "ĽíĽĂĽŻĽŐĽĄĽ¤Ľë %s ¤ňĽíĽĂĽŻ¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: mount/fstab.c:408
+#, c-format
+msgid "can't lock lock file %s: %s"
+msgstr "ĽíĽĂĽŻĽŐĽĄĽ¤Ľë %s ¤ňĽíĽĂĽŻ¤Ç¤­¤Ţ¤ť¤ó: %s"
+
+#: mount/fstab.c:410
+msgid "timed out"
+msgstr "ĽżĽ¤ĽŕĽ˘ĽŚĽČ"
+
+#: mount/fstab.c:455 mount/fstab.c:463
+#, c-format
+msgid "cannot open %s (%s) - mtab not updated"
+msgstr "%s ¤ňłŤ¤ą¤Ţ¤ť¤ó (%s) -- mtab ¤Ďššżˇ¤ľ¤ě¤Ţ¤ť¤ó"
+
+#: mount/fstab.c:488
+msgid "mount: warning: cannot change mounted device with a remount\n"
+msgstr "mount: ˇŮšđ: şĆĽŢĽŚĽóĽČ¤Ç¤ÎĽŢĽŚĽóĽČşŃĽÇĽĐĽ¤Ľš¤ÎĘŃšš¤Ď¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: mount/fstab.c:493
+msgid "mount: warning: cannot change filesystem type with a remount\n"
+msgstr "mount: ˇŮšđ: şĆĽŢĽŚĽóĽČ¤Ç¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ÎĘŃšš¤Ď¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: mount/fstab.c:501 mount/fstab.c:507
+#, c-format
+msgid "error writing %s: %s"
+msgstr "%s ¤Ř¤Î˝ń¤­šţ¤ßĽ¨ĽéĄź: %s"
+
+#: mount/fstab.c:514
+#, c-format
+msgid "error changing mode of %s: %s\n"
+msgstr "%s ¤ÎĽâĄźĽÉĘŃššĽ¨ĽéĄź: %s\n"
+
+#: mount/fstab.c:521
+#, c-format
+msgid "can't rename %s to %s: %s\n"
+msgstr "%s ¤ÎĚžÁ°¤ň %s ¤ËĘŃšš¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: mount/lomount.c:78
+#, c-format
+msgid "loop: can't open device %s: %s\n"
+msgstr "loop: ĽÇĽĐĽ¤Ľš %s ¤ňĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: mount/lomount.c:84
+#, c-format
+msgid "loop: can't get info on device %s: %s\n"
+msgstr "loop: ĽÇĽĐĽ¤Ľš %s ¤ÎžđĘó¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: mount/lomount.c:89 mount/losetup.c:74
+#, c-format
+msgid "%s: [%04x]:%ld (%s) offset %d, %s encryption\n"
+msgstr "%s: [%04x]:%ld (%s) ĽŞĽŐĽťĽĂĽČ %d, %s encryption\n"
+
+#: mount/lomount.c:143
+msgid "mount: could not find any device /dev/loop#"
+msgstr "mount: /dev/loop# ¤ŹÁ´¤Ż¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó"
+
+#: mount/lomount.c:147
+msgid ""
+"mount: Could not find any loop device.\n"
+" Maybe /dev/loop# has a wrong major number?"
+msgstr ""
+"mount: /dev/loop# ¤ŹÁ´¤Ż¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó\n"
+" ¿ʏ /dev/loop# ¤ÎĽáĽ¸ĽăĄźČ֚椏´Ö°ă¤Ă¤Ć¤¤¤ë¤Î¤Ç¤ĎĄŠ"
+
+#: mount/lomount.c:151
+#, c-format
+msgid ""
+"mount: Could not find any loop device, and, according to %s,\n"
+" this kernel does not know about the loop device.\n"
+" (If so, then recompile or `insmod loop.o'.)"
+msgstr ""
+"mount: loop ĽÇĽĐĽ¤Ľš¤ŹÁ´¤Ż¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó¤ˇĄ˘%s ¤Ë¤â¤˘¤ę¤Ţ¤ť¤óĄŁ\n"
+" ¤Ç¤š¤Ť¤éĄ˘¤ł¤ÎĽŤĄźĽÍĽë¤Ď loop ĽÇĽĐĽ¤Ľš¤ň°ˇ¤¨¤Ţ¤ť¤óĄŁ\n"
+" (¤˝¤Ś¤Ŕ¤Č¤š¤ě¤ĐĄ˘şĆĽłĽóĽŃĽ¤Ľë¤š¤ë¤Ť `insmod loop.o' ¤ˇ¤Ć˛ź¤ľ¤¤ĄŁ)"
+
+#: mount/lomount.c:156
+msgid ""
+"mount: Could not find any loop device. Maybe this kernel does not know\n"
+" about the loop device (then recompile or `insmod loop.o'), or\n"
+" maybe /dev/loop# has the wrong major number?"
+msgstr ""
+"mount: loop ĽÇĽĐĽ¤Ľš¤ŹÁ´¤Ż¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤óĄŁÂżĘŹ¤ł¤ÎĽŤĄźĽÍĽë¤Ď loop "
+"ĽÇĽĐĽ¤Ľš¤ň\n"
+" °ˇ¤¨¤Ţ¤ť¤ó(¤˝¤Ś¤Ŕ¤Č¤ˇ¤ż¤éĄ˘şĆĽłĽóĽŃĽ¤Ľë¤š¤ë¤Ť `insmod loop.o'¤ˇ¤Ć\n"
+" ¤Ż¤Ŕ¤ľ¤¤)ĄŁ¤˘¤ë¤¤¤ĎĄ˘/dev/loop# ¤ÎĽáĽ¸ĽăĄźČ֚椏´Ö°ă¤Ă¤Ć¤¤¤ë¤Î¤Ť¤â\n"
+" ĂΤě¤Ţ¤ť¤óĄŁ"
+
+#: mount/lomount.c:160
+msgid "mount: could not find any free loop device"
+msgstr "mount: śő¤¤¤Ć¤¤¤ë loop ĽÇĽĐĽ¤Ľš¤Ź¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó"
+
+#: mount/lomount.c:191 mount/losetup.c:106
+#, c-format
+msgid "Unsupported encryption type %s\n"
+msgstr "%s ĽżĽ¤Ľ×¤Î°Ĺšć˛˝¤ĎĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: mount/lomount.c:210 mount/losetup.c:125
+msgid "Init (up to 16 hex digits): "
+msgstr "˝é´ü˛˝ (16 żĘżô¤ÇşÇÂç 16 ʸťú¤Ţ¤Ç): "
+
+#: mount/lomount.c:217 mount/losetup.c:132
+#, c-format
+msgid "Non-hex digit '%c'.\n"
+msgstr "16 żĘżô¤Ç¤Ď¤Ę¤¤Ę¸ťú '%c'ĄŁ\n"
+
+#: mount/lomount.c:223 mount/losetup.c:138
+#, c-format
+msgid "Don't know how to get key for encryption system %d\n"
+msgstr "°Ĺšć˛˝ĽˇĽšĽĆĽŕ %d ¤Î¸°źčĆŔĘýËĄ¤Ź˛ň¤ę¤Ţ¤ť¤ó\n"
+
+#: mount/lomount.c:239
+#, c-format
+msgid "set_loop(%s,%s,%d): success\n"
+msgstr "set_loop(%s,%s,%d): ŔŽ¸ů\n"
+
+#: mount/lomount.c:250
+#, c-format
+msgid "loop: can't delete device %s: %s\n"
+msgstr "loop: ĽÇĽĐĽ¤Ľš %s ¤ňşď˝ü¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: mount/lomount.c:260
+#, c-format
+msgid "del_loop(%s): success\n"
+msgstr "del_loop(%s): ŔŽ¸ů\n"
+
+#: mount/lomount.c:268
+msgid "This mount was compiled without loop support. Please recompile.\n"
+msgstr ""
+"¤ł¤Î mount ¤Ď loop ¤ÎĽľĽÝĄźĽČ¤Ę¤ˇ¤ÇĽłĽóĽŃĽ¤Ľë¤ľ¤ě¤Ţ¤ˇ¤żĄŁ\n"
+"şĆĽłĽóĽŃĽ¤Ľë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: mount/losetup.c:70
+msgid "Cannot get loop info"
+msgstr "loop ¤ÎžđĘó¤ňźčĆŔ¤Ç¤­¤Ţ¤ť¤ó"
+
+#: mount/losetup.c:174
+#, c-format
+msgid ""
+"usage:\n"
+" %s loop_device # give info\n"
+" %s -d loop_device # delete\n"
+" %s [ -e encryption ] [ -o offset ] loop_device file # setup\n"
+msgstr ""
+"ťČ¤¤Ęý:\n"
+" %s loopĽÇĽĐĽ¤Ľš # žđĘó¤ň¤ß¤ë\n"
+" %s -d loopĽÇĽĐĽ¤Ľš # şď˝ü\n"
+" %s [ -e °Ĺšć˛˝ ] [ -o ĽŞĽŐĽťĽĂĽČ ] loopĽÇĽĐĽ¤Ľš ĽŐĽĄĽ¤Ľë # ŔßÄę\n"
+
+#: mount/losetup.c:231
+msgid "No loop support was available at compile time. Please recompile.\n"
+msgstr ""
+"ĽłĽóĽŃĽ¤Ľëťţ¤Ë loop "
+"ĽľĽÝĄźĽČ¤ŹÍ­¸ú¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤ť¤óĄŁşĆĽłĽóĽŃĽ¤Ľë¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ\n"
+
+#: mount/mntent.c:165
+#, c-format
+msgid "[mntent]: warning: no final newline at the end of %s\n"
+msgstr "[mntent]: ˇŮšđ: %s ¤ÎşÇ¸ĺ¤Ë˛ţšÔ¤Ź¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: mount/mntent.c:216
+#, c-format
+msgid "[mntent]: line %d in %s is bad%s\n"
+msgstr "[mntent]: %2$s ¤Î %1$d šÔĚܤĎÉÔŔľ¤Ç¤š%3$s\n"
+
+#: mount/mntent.c:219
+msgid "; rest of file ignored"
+msgstr "-- Ěľťë¤ˇ¤Ţ¤š"
+
+#: mount/mount.c:320
+#, c-format
+msgid "mount: according to mtab, %s is already mounted on %s"
+msgstr "mount: mtab ¤Ë¤č¤ë¤ČĄ˘%s ¤Ď %s ¤ËĽŢĽŚĽóĽČşŃ¤Ç¤š"
+
+#: mount/mount.c:323
+#, c-format
+msgid "mount: according to mtab, %s is mounted on %s"
+msgstr "mount: mtab ¤Ë¤č¤ë¤ČĄ˘%s ¤Ď %s ¤ËĽŢĽŚĽóĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤š"
+
+#: mount/mount.c:344
+#, c-format
+msgid "mount: can't open %s for writing: %s"
+msgstr "mount: %s ¤ň˝ń¤­šţ¤ßÍŃ¤ËĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó: %s"
+
+#: mount/mount.c:359 mount/mount.c:608
+#, c-format
+msgid "mount: error writing %s: %s"
+msgstr "mount: %s ¤Î˝ń¤­šţ¤ßĽ¨ĽéĄź: %s"
+
+#: mount/mount.c:366
+#, c-format
+msgid "mount: error changing mode of %s: %s"
+msgstr "mount: %s ¤ÎĽâĄźĽÉĘŃššĽ¨ĽéĄź: %s"
+
+#: mount/mount.c:440
+msgid "mount failed"
+msgstr "ĽŢĽŚĽóĽČ¤ËźşÇÔ¤ˇ¤Ţ¤ˇ¤ż"
+
+#: mount/mount.c:442
+#, c-format
+msgid "mount: only root can mount %s on %s"
+msgstr "mount: %s ¤ň %s ¤ËĽŢĽŚĽóĽČ¤Ç¤­¤ë¤Î¤Ď root ¤Ŕ¤ą¤Ç¤š"
+
+#: mount/mount.c:467
+msgid "mount: loop device specified twice"
+msgstr "mount: loop ĽÇĽĐĽ¤Ľš¤Ź 2 ˛óťŘÄꤾ¤ě¤Ţ¤ˇ¤ż"
+
+#: mount/mount.c:473
+msgid "mount: type specified twice"
+msgstr "mount: ĽżĽ¤Ľ×¤Ź 2 ˛óťŘÄꤾ¤ě¤Ţ¤ˇ¤ż"
+
+#: mount/mount.c:485
+msgid "mount: skipping the setup of a loop device\n"
+msgstr "mount: loop ĽÇĽĐĽ¤Ľš¤ÎŔßÄę¤ňĽšĽ­ĽĂĽ×¤ˇ¤Ţ¤š\n"
+
+#: mount/mount.c:494
+#, c-format
+msgid "mount: going to use the loop device %s\n"
+msgstr "mount: loop ĽÇĽĐĽ¤Ľš %s ¤ňťČ¤¤¤Ţ¤š\n"
+
+#: mount/mount.c:498
+msgid "mount: failed setting up loop device\n"
+msgstr "mount: loop ĽÇĽĐĽ¤Ľš¤ÎŔßÄę¤ËźşÇÔ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: mount/mount.c:502
+msgid "mount: setup loop device successfully\n"
+msgstr "mount: loop ĽÇĽĐĽ¤Ľš¤ÎŔßÄę¤ËŔŽ¸ů¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: mount/mount.c:515
+msgid "mount: this version was compiled without support for the type `nfs'"
+msgstr ""
+"mount: ¤ł¤ÎĽĐĄźĽ¸ĽçĽó¤Ď 'nfs' ĽżĽ¤Ľ×¤ÎĽľĽÝĄźĽČ¤Ę¤ˇ¤ÇĽłĽóĽŃĽ¤Ľë¤ľ¤ě¤Ć¤¤¤Ţ¤š"
+
+#: mount/mount.c:565 mount/mount.c:990
+#, c-format
+msgid "mount: cannot fork: %s"
+msgstr "mount: fork ¤Ç¤­¤Ţ¤ť¤ó: %s"
+
+#: mount/mount.c:603
+#, c-format
+msgid "mount: can't open %s: %s"
+msgstr "mount: %s ¤ŹĽŞĄźĽ×Ľó¤Ç¤­¤Ţ¤ť¤ó: %s"
+
+#: mount/mount.c:631
+msgid "mount: you must specify the filesystem type"
+msgstr "mount: ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ňťŘÄꤚ¤ëÉŹÍפŹ¤˘¤ę¤Ţ¤š"
+
+#: mount/mount.c:638 mount/mount.c:673
+#, c-format
+msgid "mount: mount point %s is not a directory"
+msgstr "mount: ĽŢĽŚĽóĽČĽÝĽ¤ĽóĽČ %s ¤ĎĽÇĽŁĽěĽŻĽČĽę¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó"
+
+#: mount/mount.c:640
+msgid "mount: permission denied"
+msgstr "mount: ľö˛Ä¤Ź¤˘¤ę¤Ţ¤ť¤ó"
+
+#: mount/mount.c:642
+msgid "mount: must be superuser to use mount"
+msgstr "mount: mount ¤ňťČ¤Ś¤Ë¤ĎĽšĄźĽŃĄźĽćĄźĽś¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤ó"
+
+#. heuristic: if /proc/version exists, then probably proc is mounted
+#. proc mounted?
+#: mount/mount.c:646 mount/mount.c:650
+#, c-format
+msgid "mount: %s is busy"
+msgstr "mount: %s ¤ĎťČÍŃĂć¤Ç¤š"
+
+#. no
+#. yes, don't mention it
+#: mount/mount.c:652
+msgid "mount: proc already mounted"
+msgstr "mount: proc ¤ĎĽŢĽŚĽóĽČşŃ¤Ç¤š"
+
+#: mount/mount.c:654
+#, c-format
+msgid "mount: %s already mounted or %s busy"
+msgstr "mount: %s ¤Ď ĽŢĽŚĽóĽČşŃ¤Ť %s ¤ŹťČÍŃĂć¤Ç¤š"
+
+#: mount/mount.c:660
+#, c-format
+msgid "mount: mount point %s does not exist"
+msgstr "mount: ĽŢĽŚĽóĽČĽÝĽ¤ĽóĽČ %s ¤ŹÂ¸şß¤ˇ¤Ţ¤ť¤ó"
+
+#: mount/mount.c:662
+#, c-format
+msgid "mount: mount point %s is a symbolic link to nowhere"
+msgstr "mount: ĽŢĽŚĽóĽČĽÝĽ¤ĽóĽČ %s ¤Ď¤É¤ł¤â¤ľ¤ˇ¤Ć¤¤¤Ę¤¤ĽˇĽóĽÜĽęĽĂĽŻĽęĽóĽŻ¤Ç¤š"
+
+#: mount/mount.c:665
+#, c-format
+msgid "mount: special device %s does not exist"
+msgstr "mount: ĽšĽÚĽˇĽăĽëĽÇĽĐĽ¤Ľš %s ¤ŹÂ¸şß¤ˇ¤Ţ¤ť¤ó"
+
+#: mount/mount.c:675
+#, c-format
+msgid ""
+"mount: special device %s does not exist\n"
+" (a path prefix is not a directory)\n"
+msgstr ""
+"mount: ĽšĽÚĽˇĽăĽëĽÇĽĐĽ¤Ľš %s ¤ŹÂ¸şß¤ˇ¤Ţ¤ť¤ó\n"
+" (ĽŃĽš¤ÎĽÇĽŁĽěĽŻĽČĽę¤Ź¤˘¤ę¤Ţ¤ť¤ó)\n"
+
+#: mount/mount.c:687
+#, c-format
+msgid "mount: %s not mounted already, or bad option"
+msgstr "mount: %s ¤Ď¤Ţ¤ŔĽŢĽŚĽóĽČ¤ľ¤ě¤Ć¤¤¤Ę¤¤¤ŤĄ˘ÉÔŔľ¤ĘĽŞĽ×ĽˇĽçĽó¤Ç¤š"
+
+#: mount/mount.c:689
+#, c-format
+msgid ""
+"mount: wrong fs type, bad option, bad superblock on %s,\n"
+" or too many mounted file systems"
+msgstr ""
+"mount: ´Ö°ă¤Ă¤żĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×Ą˘ÉÔŔľ¤ĘĽŞĽ×ĽˇĽçĽóĄ˘\n"
+" %s ¤ÎĽšĄźĽŃĄźĽÖĽíĽĂĽŻ¤ŹÉÔŔľĄ˘°ż¤¤¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕ¤ÎĽŢĽŚĽóĽČ\n"
+" ¤ŹÂż¤š¤Ž¤Ţ¤š"
+
+#: mount/mount.c:704
+msgid "mount table full"
+msgstr "ĽŢĽŚĽóĽČĽĆĄźĽÖĽë¤Ź¤¤¤Ă¤Ń¤¤¤Ç¤š"
+
+#: mount/mount.c:706
+#, c-format
+msgid "mount: %s: can't read superblock"
+msgstr "mount: %s: ĽšĄźĽŃĄźĽÖĽíĽĂĽŻ¤ňĆɤá¤Ţ¤ť¤ó"
+
+#: mount/mount.c:709
+#, c-format
+msgid "mount: %s has wrong major or minor number"
+msgstr "mount: %s ¤Ź´Ö°ă¤Ă¤żĽáĽ¸ĽăĄźËô¤ĎĽŢĽ¤ĽĘĄźČÖšć¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤š"
+
+#: mount/mount.c:714
+#, c-format
+msgid "mount: fs type %s not supported by kernel"
+msgstr "mount: ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ× %s ¤ĎĽŤĄźĽÍĽë¤ŹĽľĽÝĄźĽČ¤ˇ¤Ć¤¤¤Ţ¤ť¤ó"
+
+#: mount/mount.c:726
+#, c-format
+msgid "mount: probably you meant %s"
+msgstr "mount: ¤Ş¤˝¤é¤Ż¤˘¤Ę¤ż¤Ď %s ¤ň°ŐĚŁ¤ˇ¤ż¤Ť¤Ă¤ż¤Î¤Ç¤ˇ¤ç¤Ś"
+
+#: mount/mount.c:728
+msgid "mount: maybe you meant iso9660 ?"
+msgstr "mount: ¿ʏ¤˘¤Ę¤ż¤Ď iso9660 ¤ňťŘÄꤡ¤ż¤Ť¤Ă¤ż¤Î¤Ç¤ĎĄŠ"
+
+#: mount/mount.c:731
+#, c-format
+msgid "mount: %s has wrong device number or fs type %s not supported"
+msgstr ""
+"mount: %s ¤Ď´Ö°ă¤Ă¤żĽÇĽĐĽ¤ĽšČÖšć¤Ë¤Ę¤Ă¤Ć¤¤¤ë¤ŤĄ˘ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×\n"
+" %s ¤ŹĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó"
+
+#. strange ...
+#: mount/mount.c:736
+#, c-format
+msgid "mount: %s is not a block device, and stat fails?"
+msgstr "mount: %s ¤ĎĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄ˘¤Ŕ¤Ť¤é stat ¤ŹźşÇÔĄŠ"
+
+#: mount/mount.c:738
+#, c-format
+msgid ""
+"mount: the kernel does not recognize %s as a block device\n"
+" (maybe `insmod driver'?)"
+msgstr ""
+"mount: ¤ł¤ÎĽŤĄźĽÍĽë¤Ď %s ¤ňĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Č¤ˇ¤Ćǧźą¤ˇ¤Ţ¤ť¤ó\n"
+" (¿ʏĄ˘`insmod ĽÉĽéĽ¤ĽĐ' ¤ˇ¤Ę¤¤¤Č¤¤¤ą¤Ę¤¤¤Î¤Ç¤ĎĄŠ)"
+
+#: mount/mount.c:741
+#, c-format
+msgid "mount: %s is not a block device (maybe try `-o loop'?)"
+msgstr ""
+"mount: %s ¤ĎĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó (¿ʏ `-o loop' ¤Č¤ä¤Ă¤Ć¤ß¤ż¤éĄŠ)"
+
+#: mount/mount.c:744
+#, c-format
+msgid "mount: %s is not a block device"
+msgstr "mount: %s ¤ĎĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó"
+
+#: mount/mount.c:747
+#, c-format
+msgid "mount: %s is not a valid block device"
+msgstr "mount: %s ¤ĎŔľžď¤ĘĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó"
+
+#: mount/mount.c:751
+#, c-format
+msgid "mount: block device %s is not permitted on its filesystem"
+msgstr "mount: ĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš %s ¤Ď¤˝¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕžĺ¤Çľö˛Ä¤ľ¤ě¤Ţ¤ť¤ó"
+
+#: mount/mount.c:767
+#, c-format
+msgid "mount: %s%s is write-protected, mounting read-only"
+msgstr "mount: %s%s ¤Ď˝ń¤­šţ¤ßśŘťß¤Ç¤šĄ˘ĆÉšţ¤ßŔěÍѤǼ޼ŚĽóĽČ¤ˇ¤Ţ¤š"
+
+#: mount/mount.c:768
+msgid "block device "
+msgstr "ĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš "
+
+#: mount/mount.c:854
+#, c-format
+msgid "mount: consider mounting %s by %s\n"
+msgstr "mount: %s ¤ň %s ¤ÇĽŢĽŚĽóĽČ¤š¤ë¤ł¤Č¤ňšÍ¤¨¤Ć¤ß¤Ć¤Ż¤Ŕ¤ľ¤¤\n"
+
+#: mount/mount.c:855
+msgid "UUID"
+msgstr ""
+
+#: mount/mount.c:855
+msgid "label"
+msgstr "ĽéĽŮĽë"
+
+#: mount/mount.c:857 mount/mount.c:1173
+msgid "mount: no such partition found"
+msgstr "mount: ¤˝¤Î¤č¤Ś¤ĘĽŃĄźĽĆĽŁĽˇĽçĽó¤Ď¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó"
+
+#: mount/mount.c:865
+msgid "mount: no type was given - I'll assume nfs because of the colon\n"
+msgstr "mount: ĽżĽ¤Ľ×¤ŹÍż¤¨¤é¤ě¤Ć¤¤¤Ţ¤ť¤ó -- ĽłĽíĽó¤Ź¤˘¤ë¤Î¤Ç nfs ¤ÎÍͤǤš¤Ź\n"
+
+#.
+#. * Retry in the background.
+#.
+#: mount/mount.c:881
+#, c-format
+msgid "mount: backgrounding \"%s\"\n"
+msgstr "mount: ĽĐĽĂĽŻĽ°ĽéĽŚĽóĽÉ \"%s\"\n"
+
+#: mount/mount.c:892
+#, c-format
+msgid "mount: giving up \"%s\"\n"
+msgstr "mount: Äü¤á¤Ţ¤ˇ¤ż \"%s\"\n"
+
+#: mount/mount.c:941
+#, c-format
+msgid "mount: %s already mounted on %s\n"
+msgstr "mount: %s ¤Ď %s ¤ËĽŢĽŚĽóĽČşŃ¤Ç¤š\n"
+
+#: mount/mount.c:1052
+msgid ""
+"Usage: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-t vfstypes]\n"
+" mount [-nfrsvw] [-o options] special | node\n"
+" mount [-nfrsvw] [-t vfstype] [-o options] special node\n"
+" A special device can be indicated by -L label or -U uuid .\n"
+msgstr ""
+"ťČ¤¤Ęý: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-t ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕˇż]\n"
+" mount [-nfrsvw] [-o ĽŞĽ×ĽˇĽçĽó] special | node\n"
+" mount [-nfrsvw] [-t ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕˇż] [-o ĽŞĽ×ĽˇĽçĽó] special "
+"node\n"
+" ĽšĽÚĽˇĽăĽëĽÇĽĐĽ¤Ľš¤Ď -L ĽéĽŮĽë Ëô¤Ď -U uuid ¤ÇťŘź¨¤Ç¤­¤Ţ¤šĄŁ\n"
+
+#: mount/mount.c:1158
+msgid "mount: only root can do that"
+msgstr "mount: root ¤Ŕ¤ą¤Ź¤˝¤ě¤ňšÔ¤Ę¤¨¤Ţ¤š"
+
+#: mount/mount.c:1163
+#, c-format
+msgid "mount: no %s found - creating it..\n"
+msgstr "mount: %s ¤Ź¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó -- şîŔŽ¤ˇ¤Ţ¤š..\n"
+
+#: mount/mount.c:1175
+#, c-format
+msgid "mount: mounting %s\n"
+msgstr "mount: %s ¤ňĽŢĽŚĽóĽČ¤ˇ¤Ţ¤š\n"
+
+#: mount/mount.c:1184
+msgid "not mounted anything"
+msgstr "˛ż¤âĽŢĽŚĽóĽČ¤ˇ¤Ţ¤ť¤ó¤Ç¤ˇ¤ż"
+
+#: mount/mount.c:1197
+#, c-format
+msgid "mount: cannot find %s in %s"
+msgstr "mount: %2$s Ćâ¤Ë %2$s ¤ň¸Ť¤Ä¤ą¤é¤ě¤Ţ¤ť¤ó"
+
+#: mount/mount.c:1211
+#, c-format
+msgid "mount: can't find %s in %s or %s"
+msgstr "mount: %2$s ¤ä %3$s Ćâ¤Ë %s ¤ň¸Ť¤Ä¤ą¤é¤ě¤Ţ¤ť¤ó"
+
+#: mount/mount_by_label.c:141
+msgid "mount: bad UUID"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:187
+#, c-format
+msgid "mount: you didn't specify a filesystem type for %s\n"
+msgstr "mount: %s ¤Ř¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×¤ÎťŘÄꤏ¤˘¤ę¤Ţ¤ť¤ó\n"
+
+#: mount/mount_guess_fstype.c:190
+#, c-format
+msgid " I will try type %s\n"
+msgstr " ĽżĽ¤Ľ× %s ¤ňťî¤ˇ¤Ć¤ß¤Ţ¤š\n"
+
+#: mount/mount_guess_fstype.c:192
+#, c-format
+msgid " I will try all types mentioned in %s or %s\n"
+msgstr " %s Ëô¤Ď %s ¤ÎĽżĽ¤Ľ×¤ňťî¤ˇ¤Ć¤ß¤Ţ¤š\n"
+
+#: mount/nfsmount.c:157
+msgid "mount: excessively long host:dir argument\n"
+msgstr "mount: śËĂź¤ËÄš¤¤ ĽŰĽšĽČ:ĽÇĽŁĽěĽŻĽČĽę °úżô\n"
+
+#: mount/nfsmount.c:170
+msgid "mount: warning: multiple hostnames not supported\n"
+msgstr "mount: ˇŮšđ: ĘŁżô¤ÎĽŰĽšĽČĚž¤ĎĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: mount/nfsmount.c:174
+msgid "mount: directory to mount not in host:dir format\n"
+msgstr ""
+"mount: ĽŢĽŚĽóĽČŔčĽÇĽŁĽěĽŻĽČĽę¤Ź ĽŰĽšĽČ:ĽÇĽŁĽěĽŻĽČĽę ˇÁź°¤Ë¤Ę¤Ă¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: mount/nfsmount.c:185 mount/nfsmount.c:420
+#, c-format
+msgid "mount: can't get address for %s\n"
+msgstr "mount: %s ¤ÎĽ˘ĽÉĽěĽš¤ŹźčĆŔ¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: mount/nfsmount.c:191
+msgid "mount: got bad hp->h_length\n"
+msgstr "mount: ÉÔŔľ¤Ę hp->h_length ĂͤňźčĆŔ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: mount/nfsmount.c:208
+msgid "mount: excessively long option argument\n"
+msgstr "mount: ĽŞĽ×ĽˇĽçĽó°úżô¤ŹÄš¤š¤Ž¤Ţ¤š\n"
+
+#: mount/nfsmount.c:299
+msgid "Warning: Unrecognized proto= option.\n"
+msgstr "ˇŮšđ: proto= ĽŞĽ×ĽˇĽçĽó¤ŹÍý˛ň¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: mount/nfsmount.c:306
+msgid "Warning: Option namlen is not supported.\n"
+msgstr "ˇŮšđ: namlen ĽŞĽ×ĽˇĽçĽó¤ĎĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: mount/nfsmount.c:310
+#, c-format
+msgid "unknown nfs mount parameter: %s=%d\n"
+msgstr "̤ĂΤΠnfs ĽŢĽŚĽóĽČĽŃĽéĽáĄźĽż: %s=%d\n"
+
+#: mount/nfsmount.c:345
+msgid "Warning: option nolock is not supported.\n"
+msgstr "ˇŮšđ: nolock ĽŞĽ×ĽˇĽçĽó¤ĎĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: mount/nfsmount.c:348
+#, c-format
+msgid "unknown nfs mount option: %s%s\n"
+msgstr "̤ĂΤΠnfs ĽŢĽŚĽóĽČĽŞĽ×ĽˇĽçĽó: %s%s\n"
+
+#: mount/nfsmount.c:426
+msgid "mount: got bad hp->h_length?\n"
+msgstr "mount: ÉÔŔľ¤Ę hp->h_length ĂͤňźčĆŔĄŠ\n"
+
+#: mount/nfsmount.c:528
+#, c-format
+msgid "mount: %s:%s failed, reason given by server: %s\n"
+msgstr "mount: %s:%s ¤ŹźşÇÔĄ˘ĽľĄźĽĐĄź¤Ť¤é¤ÎÍýÍł: %s\n"
+
+#: mount/nfsmount.c:539
+msgid "NFS over TCP is not supported.\n"
+msgstr "TCP ˇĐÍł¤Î NFS ¤ĎĽľĽÝĄźĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤óĄŁ\n"
+
+#: mount/nfsmount.c:546
+msgid "nfs socket"
+msgstr ""
+
+#: mount/nfsmount.c:550
+msgid "nfs bindresvport"
+msgstr ""
+
+#: mount/nfsmount.c:561
+msgid "used portmapper to find NFS port\n"
+msgstr "NFS ĽÝĄźĽČ¤ň¸Ť¤Ä¤ą¤ë¤ż¤á¤Ë portmapper ¤ňÍřÍŃ\n"
+
+#: mount/nfsmount.c:565
+#, c-format
+msgid "using port %d for nfs deamon\n"
+msgstr "nfs ĽÇĄźĽâĽó¤Î¤ż¤á¤Ë %d ČÖĽÝĄźĽČ¤ňÍřÍŃ\n"
+
+#: mount/nfsmount.c:576
+msgid "nfs connect"
+msgstr ""
+
+#: mount/nfsmount.c:665
+#, c-format
+msgid "unknown nfs status return value: %d"
+msgstr "̤ĂΤΠnfs ĽšĽĆĄźĽżĽšĂͤňĘÖ¤ˇ¤Ţ¤ˇ¤ż: %d"
+
+#: mount/sundries.c:40 mount/sundries.c:55
+msgid "not enough memory"
+msgstr "ĽáĽâĽę¤ŹÉÔ˝˝ĘŹ¤Ç¤š"
+
+#: mount/sundries.c:65
+msgid "bug in xstrndup call"
+msgstr ""
+
+#: mount/swapon.c:51
+#, c-format
+msgid ""
+"usage: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p priority] special ...\n"
+" %s [-s]\n"
+msgstr ""
+"ťČ¤¤Ęý: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p ÍĽŔčĹŮ] ĽšĽÚĽˇĽăĽëĽŐĽĄĽ¤Ľë ...\n"
+" %s [-s]\n"
+
+#: mount/swapon.c:88
+#, c-format
+msgid "%s on %s\n"
+msgstr "%2$s ¤Ë %1$s\n"
+
+#: mount/swapon.c:93
+#, c-format
+msgid "swapon: cannot stat %s: %s\n"
+msgstr "swapon: %s ¤ÎžőÂÖźčĆŔ¤Ź¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: mount/swapon.c:100
+#, c-format
+msgid "swapon: warning: %s has insecure permissions %04o, 0600 suggested\n"
+msgstr ""
+"swapon: ˇŮšđ: %s ¤Ď°ÂÁ´¤Ç¤Ę¤¤ĽŃĄźĽßĽĂĽˇĽçĽó %04o ¤Ç¤š 0600 ¤ň´Ť¤á¤Ţ¤š\n"
+
+#: mount/swapon.c:108
+#, c-format
+msgid "swapon: Skipping file %s - it appears to have holes.\n"
+msgstr "swapon: ĽŐĽĄĽ¤Ľë %s ¤ňĽšĽ­ĽĂĽ× -- ĽŰĄźĽë¤ň¸Ą˝ĐĄŁ\n"
+
+#: mount/swapon.c:213
+#, c-format
+msgid "%s: cannot open %s: %s\n"
+msgstr "%s: %s ¤ňłŤ¤ą¤Ţ¤ť¤ó: %s\n"
+
+#: mount/umount.c:65
+msgid "umount: compiled without support for -f\n"
+msgstr "mount: -f ĽŞĽ×ĽˇĽçĽó¤ÎĽľĽÝĄźĽČĚľ¤ˇ¤ÇĽłĽóĽŃĽ¤Ľë¤ľ¤ě¤Ć¤¤¤Ţ¤š\n"
+
+#: mount/umount.c:115
+#, c-format
+msgid "host: %s, directory: %s\n"
+msgstr "ĽŰĽšĽČ: %s, ĽÇĽŁĽěĽŻĽČĽę: %s\n"
+
+#: mount/umount.c:132
+#, c-format
+msgid "umount: can't get address for %s\n"
+msgstr "umount: %s ¤ÎĽ˘ĽÉĽěĽš¤ŹźčĆŔ¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: mount/umount.c:137
+msgid "umount: got bad hostp->h_length\n"
+msgstr "umount: ÉÔŔľ¤Ę hostp->h_length ĂͤňźčĆŔ¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: mount/umount.c:175
+#, c-format
+msgid "umount: %s: invalid block device"
+msgstr "umount: %s ¤ĎÉÔŔľ¤ĘĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤Ç¤š"
+
+#: mount/umount.c:177
+#, c-format
+msgid "umount: %s: not mounted"
+msgstr "umount: %s: ĽŢĽŚĽóĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó"
+
+#: mount/umount.c:179
+#, c-format
+msgid "umount: %s: can't write superblock"
+msgstr "umount: %s: ĽšĄźĽŃĄźĽÖĽíĽĂĽŻ¤Ë˝ń¤­šţ¤á¤Ţ¤ť¤ó"
+
+#. Let us hope fstab has a line "proc /proc ..."
+#. and not "none /proc ..."
+#: mount/umount.c:183
+#, c-format
+msgid "umount: %s: device is busy"
+msgstr "umount: %s: ĽÇĽĐĽ¤Ľš¤ňťČÍŃĂć¤Ç¤š"
+
+#: mount/umount.c:185
+#, c-format
+msgid "umount: %s: not found"
+msgstr "umount: %s: ¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó"
+
+#: mount/umount.c:187
+#, c-format
+msgid "umount: %s: must be superuser to umount"
+msgstr "umount: %s: Ľ˘ĽóĽŢĽŚĽóĽČ¤š¤ë¤Ë¤ĎĽšĄźĽŃĄźĽćĄźĽś¤Ç¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤ó"
+
+#: mount/umount.c:189
+#, c-format
+msgid "umount: %s: block devices not permitted on fs"
+msgstr "umount: %s: ĽÖĽíĽĂĽŻĽÇĽĐĽ¤Ľš¤ĎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕžĺ¤Çľö˛Ä¤ľ¤ě¤Ţ¤ť¤ó"
+
+#: mount/umount.c:191
+#, c-format
+msgid "umount: %s: %s"
+msgstr "umount: %s: %s"
+
+#: mount/umount.c:235
+msgid "no umount2, trying umount...\n"
+msgstr "umount2 ¤Ź¤˘¤ę¤Ţ¤ť¤óĄ˘umount ¤ˇ¤Ć¤ß¤Ţ¤š...\n"
+
+#: mount/umount.c:248
+#, c-format
+msgid "could not umount %s - trying %s instead\n"
+msgstr "%s ¤ňĽ˘ĽóĽŢĽŚĽóĽČ¤Ç¤­¤Ţ¤ť¤ó¤Ç¤ˇ¤ż -- Âĺ¤ę¤Ë %s ¤ňťČ¤Ă¤Ć¤ß¤Ţ¤š\n"
+
+#: mount/umount.c:264
+#, c-format
+msgid "umount: %s busy - remounted read-only\n"
+msgstr "umount: %s ¤ĎťČÍŃĂć¤Ç¤š -- ĆÉšţ¤ßŔěÍѤȤˇ¤ĆşĆĽŢĽŚĽóĽČ¤ˇ¤Ţ¤š\n"
+
+#: mount/umount.c:272
+#, c-format
+msgid "umount: could not remount %s read-only\n"
+msgstr "umount: %s ¤ňĆÉšţ¤ßŔěÍѤǺƼ޼ŚĽóĽČ¤Ç¤­¤Ţ¤ť¤ó¤Ç¤ˇ¤ż\n"
+
+#: mount/umount.c:280
+#, c-format
+msgid "%s umounted\n"
+msgstr "%s ¤ĎĽ˘ĽóĽŢĽŚĽóĽČ¤ľ¤ě¤Ţ¤ˇ¤ż\n"
+
+#: mount/umount.c:363
+msgid "umount: cannot find list of filesystems to unmount"
+msgstr "umount: Ľ˘ĽóĽŢĽŚĽóĽČ¤Î¤ż¤á¤ÎĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽęĽšĽČ¤ň¸Ť¤Ä¤ą¤é¤ě¤Ţ¤ť¤ó"
+
+#: mount/umount.c:392
+msgid ""
+"Usage: umount [-hV]\n"
+" umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n"
+" umount [-f] [-r] [-n] [-v] special | node...\n"
+msgstr ""
+"ťČ¤¤Ęý: umount [-hV]\n"
+" umount -a [-f] [-r] [-n] [-v] [-t ĽŐĽĄĽ¤ĽëĽˇĽšĽĆĽŕĽżĽ¤Ľ×]\n"
+" umount [-f] [-r] [-n] [-v] special | node...\n"
+
+#: mount/umount.c:453
+msgid "umount: only root can do that"
+msgstr "umount: ¤˝¤ě¤Ź˝ĐÍč¤ë¤Î¤Ď root ¤Ŕ¤ą¤Ç¤š"
+
+#: mount/umount.c:468
+#, c-format
+msgid "Trying to umount %s\n"
+msgstr "%s ¤ňĽ˘ĽóĽŢĽŚĽóĽČ¤ˇ¤Ţ¤š\n"
+
+#: mount/umount.c:472
+#, c-format
+msgid "Could not find %s in mtab\n"
+msgstr "mtab ¤Ë %s ¤Ź¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó\n"
+
+#: mount/umount.c:476
+#, c-format
+msgid "umount: %s is not mounted (according to mtab)"
+msgstr "umount: %s ĽŢĽŚĽóĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó (mtab ¤Ë¤č¤ë¤Č)"
+
+#: mount/umount.c:478
+#, c-format
+msgid "umount: it seems %s is mounted multiple times"
+msgstr "umount: %s ¤ĎĘŁżôĽŢĽŚĽóĽČ¤ľ¤ě¤Ć¤¤¤ë¤č¤Ś¤Ç¤š"
+
+#: mount/umount.c:480
+#, c-format
+msgid "umount: %s is not in the fstab (and you are not root)"
+msgstr ""
+"umount: %s ¤Ď fstab ¤Ë¤˘¤ę¤Ţ¤ť¤ó (¤ľ¤é¤ËĄ˘¤˘¤Ę¤ż¤Ď root ¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó)"
+
+#: mount/umount.c:486
+#, c-format
+msgid "umount: %s mount disagrees with the fstab"
+msgstr "umount: %s ¤Ď fstab ¤Č°ěĂפˇ¤Ę¤¤ĽŢĽŚĽóĽČ¤Ç¤š"
+
+#: mount/umount.c:505
+#, c-format
+msgid "umount: only root can unmount %s from %s"
+msgstr "umount: %s ¤ň %s ¤Ť¤éĽ˘ĽóĽŢĽŚĽóĽČ¤Ç¤­¤ë¤Î¤Ď root ¤Ŕ¤ą¤Ç¤š"
+
+#: mount/umount.c:515
+#, c-format
+msgid "umount: only %s can unmount %s from %s"
+msgstr "umount: %s ¤ň %s ¤Ť¤éĽ˘ĽóĽŢĽŚĽóĽČ¤Ç¤­¤ë¤Î¤Ď %s ¤Ŕ¤ą¤Ç¤š"
+
+#: sys-utils/ctrlaltdel.c:26
+msgid "You must be root to set the Ctrl-Alt-Del behaviour.\n"
+msgstr ""
+"¤˝¤Î Ctrl-Alt-Del ¤Îżś¤ëÉń¤¤¤ňŔßÄꤚ¤ë¤Ë¤Ď root ¤ÇĚľ¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: sys-utils/ctrlaltdel.c:41
+msgid "Usage: ctrlaltdel hard|soft\n"
+msgstr "ťČ¤¤Ęý: ctrlaltdel hard|soft\n"
+
+#: sys-utils/cytune.c:118
+#, c-format
+msgid ""
+"File %s, For threshold value %lu, Maximum characters in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+"ĽŐĽĄĽ¤Ľë %sĄ˘¤ˇ¤­¤¤ĂÍ %luĄ˘ĽŃĽ¤Ľ×Ćâ¤ÎşÇÂ缭ĽăĽéĽŻĽżżô¤Ď %d ¤Ç¤ˇ¤żĄŁ\n"
+"ÉĂ´ÖşÇÂ缭ĽăĽéĽŻĽżĹžÁ÷ĽěĄźĽČ¤Ď %f ¤Ç¤ˇ¤żĄŁ\n"
+
+#: sys-utils/cytune.c:129
+#, c-format
+msgid ""
+"File %s, For threshold value %lu and timrout value %lu, Maximum characters "
+"in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+"ĽŐĽĄĽ¤Ľë %sĄ˘¤ˇ¤­¤¤ĂÍ %lu ľÚ¤ÓĽżĽ¤ĽŕĽ˘ĽŚĽČĂÍ %luĄ˘ĽŃĽ¤Ľ×Ćâ¤ÎşÇÂ缭ĽăĽéĽŻĽż\n"
+"żô¤ĎĄ˘%d ¤Ç¤ˇ¤żĄŁÉĂ´ÖşÇÂ缭ĽăĽéĽŻĽżĹžÁ÷ĽěĄźĽČ¤Ď %f ¤Ç¤ˇ¤żĄŁ\n"
+
+#: sys-utils/cytune.c:196
+#, c-format
+msgid "Invalid interval value: %s\n"
+msgstr "ÉÔŔľ¤ĘĆâÉôĂÍ: %s\n"
+
+#: sys-utils/cytune.c:204
+#, c-format
+msgid "Invalid set value: %s\n"
+msgstr "ÉÔŔľ¤ĘŔßÄęĂÍ: %s\n"
+
+#: sys-utils/cytune.c:212
+#, c-format
+msgid "Invalid default value: %s\n"
+msgstr "ÉÔŔľ¤Ę˝é´üĂÍ: %s\n"
+
+#: sys-utils/cytune.c:220
+#, c-format
+msgid "Invalid set time value: %s\n"
+msgstr "ÉÔŔľ¤ĘŔßÄęťţšď: %s\n"
+
+#: sys-utils/cytune.c:228
+#, c-format
+msgid "Invalid default time value: %s\n"
+msgstr "ÉÔŔľ¤Ę˝é´üťţšď: %s\n"
+
+#: sys-utils/cytune.c:245
+#, c-format
+msgid ""
+"Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) "
+"[-g|-G] file [file...]\n"
+msgstr ""
+"ťČ¤¤Ęý: %s [-q [-i ´ÖłÖ]] ([-s ĂÍ]|[-S ĂÍ]) ([-t ĂÍ]|[-T ĂÍ]) [-g|-G] "
+"ĽŐĽĄĽ¤Ľë [ĽŐĽĄĽ¤Ľë...]\n"
+
+#: sys-utils/cytune.c:257 sys-utils/cytune.c:275 sys-utils/cytune.c:294
+#: sys-utils/cytune.c:342
+#, c-format
+msgid "Can't open %s: %s\n"
+msgstr "%s ¤ňłŤ¤ą¤Ţ¤ť¤ó: %s\n"
+
+#: sys-utils/cytune.c:264
+#, c-format
+msgid "Can't set %s to threshold %d: %s\n"
+msgstr "%s ¤ň¤ˇ¤­¤¤ĂÍ %s ¤ËŔßÄę¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: sys-utils/cytune.c:282
+#, c-format
+msgid "Can't set %s to time threshold %d: %s\n"
+msgstr "%s ¤ňťţ´Ö¤ˇ¤­¤¤ĂÍ %d ¤ËŔßÄę¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: sys-utils/cytune.c:299 sys-utils/cytune.c:354 sys-utils/cytune.c:385
+#, c-format
+msgid "Can't get threshold for %s: %s\n"
+msgstr "%s ¤Ř¤Î¤ˇ¤­¤¤ĂͤŹźčĆŔ¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: sys-utils/cytune.c:305 sys-utils/cytune.c:360 sys-utils/cytune.c:391
+#, c-format
+msgid "Can't get timeout for %s: %s\n"
+msgstr "%s ¤Ř¤ÎĽżĽ¤ĽŕĽ˘ĽŚĽČ¤ŹźčĆŔ¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: sys-utils/cytune.c:309
+#, c-format
+msgid "%s: %ld %s threshold and %ld %s timeout\n"
+msgstr "%s: %s ¤ˇ¤­¤¤ĂÍ %ld ľÚ¤Ó %s ĽżĽ¤ĽŕĽ˘ĽŚĽČ %ld\n"
+
+#: sys-utils/cytune.c:311 sys-utils/cytune.c:313
+msgid "current"
+msgstr "¸˝şß"
+
+#: sys-utils/cytune.c:311 sys-utils/cytune.c:313
+msgid "default"
+msgstr "˝é´üĂÍ"
+
+#: sys-utils/cytune.c:330
+msgid "Can't set signal handler"
+msgstr "ĽˇĽ°ĽĘĽëĽĎĽóĽÉĽé¤ňŔßÄę¤Ç¤­¤Ţ¤ť¤ó"
+
+#: sys-utils/cytune.c:334 sys-utils/cytune.c:369
+msgid "gettimeofday failed"
+msgstr "gettimeofday ¤ŹźşÇÔ"
+
+#: sys-utils/cytune.c:347 sys-utils/cytune.c:379
+#, c-format
+msgid "Can't issue CYGETMON on %s: %s\n"
+msgstr "%s ¤Ç CYGETMON ¤ŹČŻšÔ¤Ç¤­¤Ţ¤ť¤ó: %s\n"
+
+#: sys-utils/cytune.c:421
+#, c-format
+msgid "%s: %lu ints, %lu/%lu chars; "
+msgstr ""
+
+#: sys-utils/cytune.c:422
+#, c-format
+msgid "fifo: %lu thresh, %lu tmout, "
+msgstr ""
+
+#: sys-utils/cytune.c:423
+#, c-format
+msgid "%lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:428
+#, c-format
+msgid " %f int/sec; %f rec, %f send (char/sec)\n"
+msgstr " %f Ŕ°żô/ÉĂ; %f ľ­Ďż, %f Á÷żŽ (Ľ­ĽăĽéĽŻĽż/ÉĂ)\n"
+
+#: sys-utils/cytune.c:433
+#, c-format
+msgid ""
+"%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n"
+msgstr ""
+"%s: Ŕ°żô %luĄ˘Ľ­ĽăĽéĽŻĽż %lu -- fifo: ¤ˇ¤­¤¤ĂÍ %luĄ˘ĽżĽ¤ĽŕĽ˘ĽŚĽČ %luĄ˘\n"
+" şÇÂç %luĄ˘¸˝şß %lu\n"
+
+#: sys-utils/cytune.c:438
+#, c-format
+msgid " %f int/sec; %f rec (char/sec)\n"
+msgstr " %f Ŕ°żô/ÉĂ -- %f ľ­Ďż (Ľ­ĽăĽéĽŻĽż/ÉĂ)\n"
+
+#: sys-utils/dmesg.c:38
+#, c-format
+msgid "Usage: %s [-c] [-n level] [-s bufsize]\n"
+msgstr "ťČ¤¤Ęý: %s [-c] [-n ĽěĽŮĽë] [-s ĽĐĽĂĽŐĽĄĽľĽ¤Ľş]\n"
+
+#: sys-utils/ipcrm.c:46
+#, c-format
+msgid "usage: %s [shm | msg | sem] id\n"
+msgstr "ťČ¤¤Ęý: %s [shm | msg | sem] id\n"
+
+#: sys-utils/ipcrm.c:70
+#, c-format
+msgid "usage: %s [-shm | -msg | -sem] id\n"
+msgstr "\\ťČ¤¤Ęý: %s [-shm | -msg | -sem] id\n"
+
+#: sys-utils/ipcrm.c:73
+msgid "resource deleted\n"
+msgstr "ĽęĽ˝ĄźĽš¤ňşď˝ü¤ˇ¤Ţ¤ˇ¤ż\n"
+
+#: sys-utils/ipcs.c:91
+#, c-format
+msgid "usage : %s -asmq -tclup \n"
+msgstr "ťČ¤¤Ęý : %s -asmq -tclup \n"
+
+#: sys-utils/ipcs.c:92
+#, c-format
+msgid "\t%s [-s -m -q] -i id\n"
+msgstr "\t%s [-s -m -q] -i id\n"
+
+#: sys-utils/ipcs.c:93
+#, c-format
+msgid "\t%s -h for help.\n"
+msgstr "\t%s -h ¤ÇĽŘĽëĽ×¤ňÉ˝ź¨ĄŁ\n"
+
+#: sys-utils/ipcs.c:99
+#, c-format
+msgid "%s provides information on ipc facilities for"
+msgstr "%s ¤Ď¤˘¤Ę¤ż¤ŹĆɤߚţ¤ß¤Ç¤­¤ë ipc ¤ÎĽęĽ˝ĄźĽšžőśˇ¤Ę¤É¤ÎžđĘó¤ňÄ󜥤ˇ¤Ţ¤šĄŁ"
+
+#: sys-utils/ipcs.c:100
+msgid " which you have read access.\n"
+msgstr " \n"
+
+#: sys-utils/ipcs.c:101
+msgid ""
+"Resource Specification:\n"
+"\t-m : shared_mem\n"
+"\t-q : messages\n"
+msgstr ""
+"ĽęĽ˝ĄźĽšťŘÄę:\n"
+"\t-m : ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽę\n"
+"\t-q : ĽáĽĂĽťĄźĽ¸\n"
+
+#: sys-utils/ipcs.c:102
+msgid ""
+"\t-s : semaphores\n"
+"\t-a : all (default)\n"
+msgstr ""
+"\t-s : ĽťĽŢĽŐĽŠ\n"
+"\t-a : Á´¤Ć (˝é´üĂÍ)\n"
+
+#: sys-utils/ipcs.c:103
+msgid ""
+"Output Format:\n"
+"\t-t : time\n"
+"\t-p : pid\n"
+"\t-c : creator\n"
+msgstr ""
+"˝ĐÎĎ˝ńź°:\n"
+"\t-t : ťţ´Ö\n"
+"\t-p : Ľ×ĽíĽťĽšID\n"
+"\t-c : şîŔŽźÔ\n"
+
+#: sys-utils/ipcs.c:104
+msgid ""
+"\t-l : limits\n"
+"\t-u : summary\n"
+msgstr ""
+"\t-l : ŔŠ¸Â\n"
+"\t-u : Í×Ěó\n"
+
+#: sys-utils/ipcs.c:105
+msgid "-i id [-s -q -m] : details on resource identified by id\n"
+msgstr "-i id [-s -q -m] : id ¤Ë¤č¤Ă¤ĆźąĘ̤ľ¤ě¤ëĽęĽ˝ĄźĽš¤ÎžÜşŮ\n"
+
+#: sys-utils/ipcs.c:237 sys-utils/ipcs.c:439
+msgid "kernel not configured for shared memory\n"
+msgstr "ĽŤĄźĽÍĽë¤ĎĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽę¤Î°Ů¤ÎŔßÄꤏšÔ¤ď¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: sys-utils/ipcs.c:243
+msgid "------ Shared Memory Limits --------\n"
+msgstr "------ ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽę¤ÎŔŠ¸Â --------\n"
+
+#: sys-utils/ipcs.c:246
+#, c-format
+msgid "max number of segments = %d\n"
+msgstr "ĽťĽ°ĽáĽóĽČżô¤ÎşÇÂçĂÍ = %d\n"
+
+#: sys-utils/ipcs.c:247
+#, c-format
+msgid "max seg size (kbytes) = %d\n"
+msgstr "ĽťĽ°ĽáĽóĽČĽľĽ¤Ľş¤ÎşÇÂç (Ăą°Ě:KB) = %d\n"
+
+#: sys-utils/ipcs.c:248
+#, c-format
+msgid "max total shared memory (kbytes) = %d\n"
+msgstr "šçˇ×ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽę¤ÎşÇÂç (Ăą°Ě:KB) = %d\n"
+
+#: sys-utils/ipcs.c:249
+#, c-format
+msgid "min seg size (bytes) = %d\n"
+msgstr "ĽťĽ°ĽáĽóĽČĽľĽ¤Ľş¤ÎşÇžŽ (Ăą°Ě:KB) = %d\n"
+
+#: sys-utils/ipcs.c:253
+msgid "------ Shared Memory Status --------\n"
+msgstr "------ ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽę¤ÎžőÂÖ --------\n"
+
+#: sys-utils/ipcs.c:254
+#, c-format
+msgid "segments allocated %d\n"
+msgstr "łÎĘݤľ¤ě¤żĽťĽ°ĽáĽóĽČ %d\n"
+
+#: sys-utils/ipcs.c:255
+#, c-format
+msgid "pages allocated %ld\n"
+msgstr "łÎĘݤľ¤ě¤żĽÚĄźĽ¸ %ld\n"
+
+#: sys-utils/ipcs.c:256
+#, c-format
+msgid "pages resident %ld\n"
+msgstr "¸ÇÄꤾ¤ě¤żĽÚĄźĽ¸ %ld\n"
+
+#: sys-utils/ipcs.c:257
+#, c-format
+msgid "pages swapped %ld\n"
+msgstr "ĽšĽďĽĂĽ×¤ľ¤ě¤żĽÚĄźĽ¸ %ld\n"
+
+#: sys-utils/ipcs.c:258
+#, c-format
+msgid "Swap performance: %ld attempts\t %ld successes\n"
+msgstr "ĽšĽďĽĂĽ×¤ÎĆ°şî: %ld ˛óťî¤ß %ld ˛óŔŽ¸ů\n"
+
+#: sys-utils/ipcs.c:263
+msgid "------ Shared Memory Segment Creators/Owners --------\n"
+msgstr "------ śŚÍ­ĽáĽâĽęĽťĽ°ĽáĽóĽČ şîŔŽźÔ/˝ęÍ­źÔ --------\n"
+
+#: sys-utils/ipcs.c:264 sys-utils/ipcs.c:370 sys-utils/ipcs.c:462
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:271 sys-utils/ipcs.c:276
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:377
+msgid "shmid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:282 sys-utils/ipcs.c:371
+#: sys-utils/ipcs.c:386 sys-utils/ipcs.c:463 sys-utils/ipcs.c:480
+msgid "perms"
+msgstr "¸˘¸Â"
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cuid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cgid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "uid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:463
+msgid "gid"
+msgstr ""
+
+#: sys-utils/ipcs.c:269
+msgid "------ Shared Memory Attach/Detach/Change Times --------\n"
+msgstr "------ ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽę ˇëšç/ĘŹÎĽ/ĘŃšš˛óżô --------\n"
+
+#: sys-utils/ipcs.c:270
+#, c-format
+msgid "%-10s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:271 sys-utils/ipcs.c:276 sys-utils/ipcs.c:282
+#: sys-utils/ipcs.c:377 sys-utils/ipcs.c:386 sys-utils/ipcs.c:469
+#: sys-utils/ipcs.c:474 sys-utils/ipcs.c:480
+msgid "owner"
+msgstr "˝ęÍ­źÔ"
+
+#: sys-utils/ipcs.c:271
+msgid "attached"
+msgstr "ˇëšç"
+
+#: sys-utils/ipcs.c:271
+msgid "detached"
+msgstr "ĘŹÎĽ"
+
+#: sys-utils/ipcs.c:271
+msgid "changed"
+msgstr "ĘŃšš"
+
+#: sys-utils/ipcs.c:275
+msgid "------ Shared Memory Creator/Last-op --------\n"
+msgstr "------ ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽę şîŔŽźÔ/Äžśá¤ÎĚżÎá --------\n"
+
+#: sys-utils/ipcs.c:276 sys-utils/ipcs.c:474
+#, c-format
+msgid "%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "cpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "lpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:280
+msgid "------ Shared Memory Segments --------\n"
+msgstr "------ ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽęĽťĽ°ĽáĽóĽČ --------\n"
+
+#: sys-utils/ipcs.c:281
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:386 sys-utils/ipcs.c:479
+msgid "key"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "bytes"
+msgstr "ĽĐĽ¤ĽČ"
+
+#: sys-utils/ipcs.c:282
+msgid "nattch"
+msgstr ""
+
+#: sys-utils/ipcs.c:282 sys-utils/ipcs.c:386
+msgid "status"
+msgstr "žőÂÖ"
+
+#: sys-utils/ipcs.c:302 sys-utils/ipcs.c:303 sys-utils/ipcs.c:304
+#: sys-utils/ipcs.c:407 sys-utils/ipcs.c:408 sys-utils/ipcs.c:500
+#: sys-utils/ipcs.c:501 sys-utils/ipcs.c:502
+msgid "Not set"
+msgstr "ĽťĽĂĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó"
+
+#: sys-utils/ipcs.c:324
+msgid "dest"
+msgstr "ÂĐžÝ"
+
+#: sys-utils/ipcs.c:325
+msgid "locked"
+msgstr "ĽíĽĂĽŻ"
+
+#: sys-utils/ipcs.c:345
+msgid "kernel not configured for semaphores\n"
+msgstr "ĽŤĄźĽÍĽë¤ŹĽťĽŢĽŐĽŠ¤ňĽľĽÝĄźĽČ¤š¤ë¤č¤Ś¤ËŔßÄꤾ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: sys-utils/ipcs.c:351
+msgid "------ Semaphore Limits --------\n"
+msgstr "------ ĽťĽŢĽŐĽŠ¤ÎŔŠ¸Â --------\n"
+
+#: sys-utils/ipcs.c:355
+#, c-format
+msgid "max number of arrays = %d\n"
+msgstr "şÇÂçÇŰÎóżô = %d\n"
+
+#: sys-utils/ipcs.c:356
+#, c-format
+msgid "max semaphores per array = %d\n"
+msgstr "ÇŰÎóËč¤ÎşÇÂ缝ĽŢĽŐĽŠżô = %d\n"
+
+#: sys-utils/ipcs.c:357
+#, c-format
+msgid "max semaphores system wide = %d\n"
+msgstr "ĽˇĽšĽĆĽŕÁ´ÂΤκÇÂ缝ĽŢĽŐĽŠżô = %d\n"
+
+#: sys-utils/ipcs.c:358
+#, c-format
+msgid "max ops per semop call = %d\n"
+msgstr "semop ¸Ć¤Ó˝Đ¤ˇËč¤ÎşÇÂçĚżÎáżô = %d\n"
+
+#: sys-utils/ipcs.c:359
+#, c-format
+msgid "semaphore max value = %d\n"
+msgstr "ĽťĽŢĽŐĽŠşÇÂçĂÍ = %d\n"
+
+#: sys-utils/ipcs.c:363
+msgid "------ Semaphore Status --------\n"
+msgstr "------ ĽťĽŢĽŐĽŠ¤ÎžőÂÖ --------\n"
+
+#: sys-utils/ipcs.c:364
+#, c-format
+msgid "used arrays = %d\n"
+msgstr "ťČÍŃÇŰÎóżô = %d\n"
+
+#: sys-utils/ipcs.c:365
+#, c-format
+msgid "allocated semaphores = %d\n"
+msgstr "łÎĘݤľ¤ě¤żĽťĽŢĽŐĽŠżô = %d\n"
+
+#: sys-utils/ipcs.c:369
+msgid "------ Semaphore Arrays Creators/Owners --------\n"
+msgstr "------ ĽťĽŢĽŐĽŠÇŰÎó şîŔŽźÔ/˝ęÍ­źÔ --------\n"
+
+#: sys-utils/ipcs.c:371 sys-utils/ipcs.c:386
+msgid "semid"
+msgstr ""
+
+#: sys-utils/ipcs.c:375
+msgid "------ Shared Memory Operation/Change Times --------\n"
+msgstr "------ ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽę ĚżÎá/ĘŃšš˛óżô --------\n"
+
+#: sys-utils/ipcs.c:376
+#, c-format
+msgid "%-8s%-10s %-26.24s %-26.24s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-op"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-changed"
+msgstr ""
+
+#: sys-utils/ipcs.c:384
+msgid "------ Semaphore Arrays --------\n"
+msgstr "------ ĽťĽŢĽŐĽŠÇŰÎó --------\n"
+
+#: sys-utils/ipcs.c:385
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:386
+msgid "nsems"
+msgstr ""
+
+#: sys-utils/ipcs.c:447
+msgid "------ Messages: Limits --------\n"
+msgstr "------ ĽáĽĂĽťĄźĽ¸: ŔŠ¸Â --------\n"
+
+#: sys-utils/ipcs.c:448
+#, c-format
+msgid "max queues system wide = %d\n"
+msgstr "ĽˇĽšĽĆĽŕÁ´ÂΤǤκÇÂ缭ĽĺĄźżô = %d\n"
+
+#: sys-utils/ipcs.c:449
+#, c-format
+msgid "max size of message (bytes) = %d\n"
+msgstr "şÇÂçĽáĽĂĽťĄźĽ¸ĽľĽ¤Ľş (ĽĐĽ¤ĽČ) = %d\n"
+
+#: sys-utils/ipcs.c:450
+#, c-format
+msgid "default max size of queue (bytes) = %d\n"
+msgstr "Ľ­ĽĺĄźĽľĽ¤ĽşşÇÂçĂͤνé´üĂÍ (ĽĐĽ¤ĽČ) = %d\n"
+
+#: sys-utils/ipcs.c:454
+msgid "------ Messages: Status --------\n"
+msgstr "------ ĽáĽĂĽťĄźĽ¸: žőÂÖ --------\n"
+
+#: sys-utils/ipcs.c:455
+#, c-format
+msgid "allocated queues = %d\n"
+msgstr "łÎĘݺѤ߼­ĽĺĄźżô = %d\n"
+
+#: sys-utils/ipcs.c:456
+#, c-format
+msgid "used headers = %d\n"
+msgstr "ťČÍѺѼؼüŔ = %d\n"
+
+#: sys-utils/ipcs.c:457
+#, c-format
+msgid "used space = %d bytes\n"
+msgstr "ťČÍѺќő´Ö = %d ĽĐĽ¤ĽČ\n"
+
+#: sys-utils/ipcs.c:461
+msgid "------ Message Queues: Creators/Owners --------\n"
+msgstr "------ ĽáĽĂĽťĄźĽ¸Ľ­ĽĺĄź: şîŔŽźÔ/˝ęÍ­źÔ --------\n"
+
+#: sys-utils/ipcs.c:463 sys-utils/ipcs.c:469 sys-utils/ipcs.c:474
+#: sys-utils/ipcs.c:479
+msgid "msqid"
+msgstr ""
+
+#: sys-utils/ipcs.c:467
+msgid "------ Message Queues Send/Recv/Change Times --------\n"
+msgstr "------ ĽáĽĂĽťĄźĽ¸Ľ­ĽĺĄź Á÷żŽ/źőżŽ/ĘŃšš˛óżô --------\n"
+
+#: sys-utils/ipcs.c:468
+#, c-format
+msgid "%-8s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "send"
+msgstr "Á÷żŽ"
+
+#: sys-utils/ipcs.c:469
+msgid "recv"
+msgstr "źőżŽ"
+
+#: sys-utils/ipcs.c:469
+msgid "change"
+msgstr "ĘŃšš"
+
+#: sys-utils/ipcs.c:473
+msgid "------ Message Queues PIDs --------\n"
+msgstr "------ ĽáĽĂĽťĄźĽ¸Ľ­ĽĺĄź PIDs --------\n"
+
+#: sys-utils/ipcs.c:474
+msgid "lspid"
+msgstr ""
+
+#: sys-utils/ipcs.c:474
+msgid "lrpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:478
+msgid "------ Message Queues --------\n"
+msgstr "------ ĽáĽĂĽťĄźĽ¸Ľ­ĽĺĄź --------\n"
+
+#: sys-utils/ipcs.c:479
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-12s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "used-bytes"
+msgstr "ťČÍŃĽĐĽ¤ĽČżô"
+
+#: sys-utils/ipcs.c:480
+msgid "messages"
+msgstr "ĽáĽĂĽťĄźĽ¸"
+
+#: sys-utils/ipcs.c:539
+#, c-format
+msgid ""
+"\n"
+"Shared memory Segment shmid=%d\n"
+msgstr ""
+"\n"
+"ĽˇĽ§Ľ˘ĄźĽÉĽáĽâĽęĽťĽ°ĽáĽóĽČ shmid=%d\n"
+
+#: sys-utils/ipcs.c:540
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:542
+#, c-format
+msgid "mode=%#o\taccess_perms=%#o\n"
+msgstr "ĽâĄźĽÉ=%#o\tĽ˘ĽŻĽťĽš¸˘=%#o\n"
+
+#: sys-utils/ipcs.c:543
+#, c-format
+msgid "bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:546
+#, c-format
+msgid "att_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:547 sys-utils/ipcs.c:549 sys-utils/ipcs.c:598
+msgid "Not set\n"
+msgstr "ĽťĽĂĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: sys-utils/ipcs.c:548
+#, c-format
+msgid "det_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:550
+#, c-format
+msgid "change_time=%s"
+msgstr "ĘŃšš˛óżô=%s"
+
+#: sys-utils/ipcs.c:566
+#, c-format
+msgid ""
+"\n"
+"Message Queue msqid=%d\n"
+msgstr ""
+"\n"
+"ĽáĽĂĽťĄźĽ¸Ľ­ĽĺĄź msqid=%d\n"
+
+#: sys-utils/ipcs.c:567
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:569
+#, c-format
+msgid "cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:572
+#, c-format
+msgid "send_time=%srcv_time=%schange_time=%s"
+msgstr "Á÷żŽ˛óżô=%sźőżŽ˛óżô=%sĘŃšš˛óżô=%s"
+
+#: sys-utils/ipcs.c:573 sys-utils/ipcs.c:574 sys-utils/ipcs.c:575
+msgid "Not Set\n"
+msgstr "ĽťĽĂĽČ¤ľ¤ě¤Ć¤¤¤Ţ¤ť¤ó\n"
+
+#: sys-utils/ipcs.c:592
+#, c-format
+msgid ""
+"\n"
+"Semaphore Array semid=%d\n"
+msgstr ""
+"\n"
+"ĽťĽŢĽŐĽŠÇŰÎó semid=%d\n"
+
+#: sys-utils/ipcs.c:593
+#, c-format
+msgid "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:595
+#, c-format
+msgid "mode=%#o, access_perms=%#o\n"
+msgstr "ĽâĄźĽÉ=%#o, Ľ˘ĽŻĽťĽš¸˘=%#o\n"
+
+#: sys-utils/ipcs.c:596
+#, c-format
+msgid "nsems = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:597
+#, c-format
+msgid "otime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:599
+#, c-format
+msgid "ctime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "semnum"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "value"
+msgstr "ĂÍ"
+
+#: sys-utils/ipcs.c:601
+msgid "ncount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "zcount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "pid"
+msgstr ""
+
+#: sys-utils/rdev.c:68
+msgid "usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]"
+msgstr ""
+
+#: sys-utils/rdev.c:69
+msgid ""
+" rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device"
+msgstr ""
+
+#: sys-utils/rdev.c:70
+msgid " rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2"
+msgstr ""
+
+#: sys-utils/rdev.c:71
+msgid " rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)"
+msgstr ""
+
+#: sys-utils/rdev.c:72
+msgid " rdev -s /dev/fd0 /dev/hda2 set the SWAP device"
+msgstr ""
+
+#: sys-utils/rdev.c:73
+msgid " rdev -r /dev/fd0 627 set the RAMDISK size"
+msgstr ""
+
+#: sys-utils/rdev.c:74
+msgid " rdev -v /dev/fd0 1 set the bootup VIDEOMODE"
+msgstr ""
+
+#: sys-utils/rdev.c:75
+msgid " rdev -o N ... use the byte offset N"
+msgstr ""
+
+#: sys-utils/rdev.c:76
+msgid " rootflags ... same as rdev -R"
+msgstr ""
+
+#: sys-utils/rdev.c:77
+msgid " swapdev ... same as rdev -s"
+msgstr ""
+
+#: sys-utils/rdev.c:78
+msgid " ramsize ... same as rdev -r"
+msgstr ""
+
+#: sys-utils/rdev.c:79
+msgid " vidmode ... same as rdev -v"
+msgstr ""
+
+#: sys-utils/rdev.c:80
+msgid ""
+"Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,..."
+msgstr ""
+
+#: sys-utils/rdev.c:81
+msgid " use -R 1 to mount root readonly, -R 0 for read/write."
+msgstr ""
+
+#: sys-utils/readprofile.c:50
+#, c-format
+msgid ""
+"%s: Usage: \"%s [options]\n"
+"\t -m <mapfile> (default = \"%s\")\n"
+"\t -p <pro-file> (default = \"%s\")\n"
+"\t -i print only info about the sampling step\n"
+"\t -v print verbose data\n"
+"\t -a print all symbols, even if count is 0\n"
+"\t -r reset all the counters (root only)\n"
+"\t -V print version and exit\n"
+msgstr ""
+"%s: ťČ¤¤Ęý: \"%s [ĽŞĽ×ĽˇĽçĽó]\n"
+"\t -m <ĽŢĽĂĽ×ĽŐĽĄĽ¤Ľë> (˝é´üĂÍ = \"%s\")\n"
+"\t -p <Ľ×ĽíĽŐĽĄĽ¤Ľë> (˝é´üĂÍ = \"%s\")\n"
+"\t -i ĽľĽóĽ×ĽęĽóĽ°ĽšĽĆĽĂĽ×¤ÎžđĘó¤Ë¤Ä¤¤¤Ć¤Î¤ßÉ˝ź¨\n"
+"\t -v žÜşŮžđĘó¤ňÉ˝ź¨\n"
+"\t -a ĽŤĽŚĽóĽČ¤Ź 0 ¤Ç¤âĄ˘¤š¤Ů¤Ć¤ÎĽˇĽóĽÜĽë¤ňÉ˝ź¨\n"
+"\t -r ¤š¤Ů¤Ć¤ÎĽŤĽŚĽóĽż¤ňĽęĽťĽĂĽČ¤š¤ë (root ¤Î¤ß)\n"
+"\t -V ĽĐĄźĽ¸ĽçĽóžđĘó¤ňÉ˝ź¨¤ˇ¤Ć˝ŞÎť¤š¤ë\n"
+
+#: sys-utils/readprofile.c:113
+#, c-format
+msgid "%s Version %s\n"
+msgstr "%s ĽĐĄźĽ¸ĽçĽó %s\n"
+
+#: sys-utils/readprofile.c:125
+msgid "anything\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:154
+#, c-format
+msgid "Sampling_step: %i\n"
+msgstr "ĽľĽóĽ×ĽęĽóĽ°ĽšĽĆĽĂĽ×: %i\n"
+
+#: sys-utils/readprofile.c:167 sys-utils/readprofile.c:193
+#, c-format
+msgid "%s: %s(%i): wrong map line\n"
+msgstr "%s: %s(%i): ´Ö°ă¤Ă¤żĽŢĽĂĽ×šÔ\n"
+
+#: sys-utils/readprofile.c:180
+#, c-format
+msgid "%s: can't find \"_stext\" in %s\n"
+msgstr "%s: %s ¤Ë \"_stext\" ¤Ź¸Ť¤Ä¤Ť¤ę¤Ţ¤ť¤ó\n"
+
+#: sys-utils/readprofile.c:221
+msgid "total"
+msgstr "šçˇ×"
+
+#: sys-utils/renice.c:67
+msgid ""
+"usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]\n"
+msgstr "ťČ¤¤Ęý: renice ÍĽŔčĹŮ [ [ -p ] Ľ×ĽíĽťĽšID ] [ [ -g ] Ľ×ĽíĽťĽšĽ°ĽëĄźĽ×] [ [ -u ĽćĄźĽś ]\n"
+
+#: sys-utils/renice.c:94
+#, c-format
+msgid "renice: %s: unknown user\n"
+msgstr "renice: %s: ĂΤé¤Ę¤¤ĽćĄźĽś¤Ç¤š\n"
+
+#: sys-utils/renice.c:102
+#, c-format
+msgid "renice: %s: bad value\n"
+msgstr "renice: %s: ÉÔŔľ¤ĘĂͤǤš\n"
+
+#: sys-utils/renice.c:121
+msgid "getpriority"
+msgstr ""
+
+#: sys-utils/renice.c:126
+msgid "setpriority"
+msgstr ""
+
+#: sys-utils/renice.c:129
+#, c-format
+msgid "%d: old priority %d, new priority %d\n"
+msgstr "%d: ¸Ĺ¤¤ÍĽŔčĹŮ¤Ď %dĄ˘żˇ¤ż¤ĘÍĽŔčĹŮ¤Ď %d ¤Ç¤š\n"
+
+#: sys-utils/setsid.c:23
+#, c-format
+msgid "usage: %s program [arg ...]\n"
+msgstr "ťČ¤¤Ęý: %s Ľ×ĽíĽ°ĽéĽŕ [ °úżô ...]\n"
+
+#: sys-utils/tunelp.c:76
+#, c-format
+msgid ""
+"Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
+" -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s | \n"
+" -T [on|off] ]\n"
+msgstr ""
+"ťČ¤¤Ęý: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
+" -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s | \n"
+" -T [on|off] ]\n"
+
+#: sys-utils/tunelp.c:92
+msgid "malloc error"
+msgstr "malloc Ľ¨ĽéĄź"
+
+#: sys-utils/tunelp.c:103
+msgid "sscanf error"
+msgstr "sscanf Ľ¨ĽéĄź"
+
+#: sys-utils/tunelp.c:236
+#, c-format
+msgid "%s: %s not an lp device.\n"
+msgstr "%s: %s ¤Ď lp ĽÇĽĐĽ¤Ľš¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤óĄŁ\n"
+
+#: sys-utils/tunelp.c:257
+#, c-format
+msgid "%s status is %d"
+msgstr "%s ¤ÎžőÂÖ¤Ď %d ¤Ç¤š"
+
+#: sys-utils/tunelp.c:258
+msgid ", busy"
+msgstr ", ĽÓĽ¸Ąź"
+
+#: sys-utils/tunelp.c:259
+msgid ", ready"
+msgstr ", ˝ŕČ÷¤Ç¤­¤Ć¤¤¤Ţ¤š"
+
+#: sys-utils/tunelp.c:260
+msgid ", out of paper"
+msgstr ", Íѝ椏¤˘¤ę¤Ţ¤ť¤ó"
+
+#: sys-utils/tunelp.c:261
+msgid ", on-line"
+msgstr ", ¤Ä¤Ę¤Ź¤Ă¤Ć¤¤¤Ţ¤š"
+
+#: sys-utils/tunelp.c:262
+msgid ", error"
+msgstr ", Ľ¨ĽéĄź"
+
+#: sys-utils/tunelp.c:279
+msgid "LPGETIRQ error"
+msgstr ""
+
+#: sys-utils/tunelp.c:285
+#, c-format
+msgid "%s using IRQ %d\n"
+msgstr "%s ¤Ď IRQ %d ¤ňťČ¤¤¤Ţ¤š\n"
+
+#: sys-utils/tunelp.c:287
+#, c-format
+msgid "%s using polling\n"
+msgstr "%s ¤ĎĽÝĄźĽęĽóĽ°¤ňšÔ¤¤¤Ţ¤š\n"
+
+#: text-utils/col.c:150
+#, c-format
+msgid "col: bad -l argument %s.\n"
+msgstr "col: ÉÔŔľ¤Ę -l ¤Î°úżô %s ¤Ç¤šĄŁ\n"
+
+#: text-utils/col.c:511
+msgid "usage: col [-bfx] [-l nline]\n"
+msgstr "ťČ¤¤Ęý: col [-bfx] [-l šÔżô]\n"
+
+#: text-utils/col.c:517
+msgid "col: write error.\n"
+msgstr "col: ˝ń¤­šţ¤ßĽ¨ĽéĄźĄŁ\n"
+
+#: text-utils/col.c:524
+#, c-format
+msgid "col: warning: can't back up %s.\n"
+msgstr "col: ˇŮšđ: %sĽĐĽĂĽŻĽ˘ĽĂĽ×¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: text-utils/col.c:525
+msgid "past first line"
+msgstr "şÇ˝é¤ÎšÔ°ĘÁ°¤ň"
+
+#: text-utils/col.c:525
+msgid "-- line already flushed"
+msgstr "šÔ¤Ď´ű¤Ë˝ń¤­šţ¤Ţ¤ě¤ż¤Î¤Ç"
+
+#: text-utils/colcrt.c:93
+#, c-format
+msgid "usage: %s [ - ] [ -2 ] [ file ... ]\n"
+msgstr "ťČ¤¤Ęý: %s [ - ] [ -2 ] [ ĽŐĽĄĽ¤Ľë ... ]\n"
+
+#: text-utils/column.c:276
+msgid "line too long"
+msgstr "šÔ¤ŹÄš¤š¤Ž¤Ţ¤š"
+
+#: text-utils/column.c:311
+msgid "usage: column [-tx] [-c columns] [file ...]\n"
+msgstr "ťČ¤¤Ęý: column [-tx] [-c ĽŤĽéĽŕżô] [ĽŐĽĄĽ¤Ľë ...]\n"
+
+#: text-utils/hexsyntax.c:80
+msgid "hexdump: bad length value.\n"
+msgstr "hexdump: ÉÔŔľ¤ĘÄš¤ľ¤ÎĂÍĄŁ\n"
+
+#: text-utils/hexsyntax.c:91
+msgid "hexdump: bad skip value.\n"
+msgstr "hexdump: ÉÔŔľ¤ĘĽšĽ­ĽĂĽ×ĂͤǤšĄŁ\n"
+
+#: text-utils/hexsyntax.c:129
+msgid ""
+"hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"
+msgstr ""
+"hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"
+
+#: text-utils/more.c:328
+#, c-format
+msgid "usage: %s [-dfln] [+linenum | +/pattern] name1 name2 ...\n"
+msgstr "ťČ¤¤Ęý: %s [-dfln] [+šÔČÖšć | +/ĽŃĽżĄźĽó] ĚžÁ°1 ĚžÁ°2 ...\n"
+
+#: text-utils/more.c:503
+#, c-format
+msgid ""
+"\n"
+"*** %s: directory ***\n"
+"\n"
+msgstr ""
+"\n"
+"*** %s: ĽÇĽŁĽěĽŻĽČĽę ***\n"
+"\n"
+
+#. simple ELF detection
+#: text-utils/more.c:542
+#, c-format
+msgid ""
+"\n"
+"******** %s: Not a text file ********\n"
+"\n"
+msgstr ""
+"\n"
+"******** %s: ĽĆĽ­ĽšĽČĽŐĽĄĽ¤Ľë¤Ç¤Ď¤˘¤ę¤Ţ¤ť¤ó ********\n"
+"\n"
+
+#: text-utils/more.c:646
+msgid "[Use q or Q to quit]"
+msgstr "[˝ŞÎť¤š¤ë¤Ë¤Ď q ¤Ť Q ¤ň˛Ą¤ˇ¤Ć˛ź¤ľ¤¤]"
+
+#: text-utils/more.c:832
+msgid "--More--"
+msgstr "--Âł¤ą¤ë--"
+
+#: text-utils/more.c:834
+#, c-format
+msgid "(Next file: %s)"
+msgstr "(źĄ¤ÎĽŐĽĄĽ¤Ľë: %s)"
+
+#: text-utils/more.c:840
+msgid "[Press space to continue, 'q' to quit.]"
+msgstr "[ĽšĽÚĄźĽšĽ­Ąź¤ň˛Ą¤š¤ČÂł¤­Ą˘'q' ¤Ç˝ŞÎťĄŁ]"
+
+#: text-utils/more.c:1138
+#, c-format
+msgid "...back %d page"
+msgstr "... %d ĽÚĄźĽ¸Ěá¤ę¤Ţ¤š"
+
+#: text-utils/more.c:1184
+#, c-format
+msgid "...skipping %d line"
+msgstr "...%d šÔČô¤Đ¤ˇ¤Ţ¤š"
+
+#: text-utils/more.c:1225
+msgid ""
+"\n"
+"***Back***\n"
+"\n"
+msgstr ""
+
+#: text-utils/more.c:1263
+msgid "Can't open help file"
+msgstr "ĽŘĽëĽ×ĽŐĽĄĽ¤Ľë¤ňłŤ¤ą¤Ţ¤ť¤ó"
+
+#: text-utils/more.c:1284 text-utils/more.c:1288
+msgid "[Press 'h' for instructions.]"
+msgstr ""
+
+#: text-utils/more.c:1323
+#, c-format
+msgid "\"%s\" line %d"
+msgstr "\"%s\" %d šÔ"
+
+#: text-utils/more.c:1325
+#, c-format
+msgid "[Not a file] line %d"
+msgstr "[ČóĽŐĽĄĽ¤Ľë] %d šÔ"
+
+#: text-utils/more.c:1409
+msgid " Overflow\n"
+msgstr ""
+
+#: text-utils/more.c:1456
+msgid "...skipping\n"
+msgstr "...Čô¤Đ¤ˇ¤Ć¤¤¤Ţ¤š\n"
+
+#: text-utils/more.c:1486
+msgid "Regular expression botch"
+msgstr ""
+
+#: text-utils/more.c:1498
+msgid ""
+"\n"
+"Pattern not found\n"
+msgstr ""
+
+#: text-utils/more.c:1501
+msgid "Pattern not found"
+msgstr ""
+
+#: text-utils/more.c:1562
+msgid "can't fork\n"
+msgstr "ťŇĽ×ĽíĽťĽš¤ňľŻĆ°¤Ç¤­¤Ţ¤ť¤ó\n"
+
+#: text-utils/more.c:1601
+msgid ""
+"\n"
+"...Skipping "
+msgstr ""
+"\n"
+"...Čô¤Đ¤ˇ¤Ć¤¤¤Ţ¤š "
+
+#: text-utils/more.c:1605
+msgid "...Skipping "
+msgstr "...Čô¤Đ¤ˇ¤Ć¤¤¤Ţ¤š"
+
+#: text-utils/more.c:1606
+msgid "to file "
+msgstr "źĄ¤ÎĽŐĽĄĽ¤Ľë "
+
+#: text-utils/more.c:1606
+msgid "back to file "
+msgstr "Á°¤ÎĽŐĽĄĽ¤Ľë "
+
+#: text-utils/more.c:1845
+msgid "Line too long"
+msgstr "šÔ¤ŹÄš¤š¤Ž¤Ţ¤š"
+
+#: text-utils/more.c:1889
+msgid "No previous command to substitute for"
+msgstr ""
+
+#: text-utils/odsyntax.c:133
+msgid "od: od(1) has been deprecated for hexdump(1).\n"
+msgstr "od: od(1) ¤Ď hexdump(1) ¤Ëźč¤Ă¤ĆÂĺ¤ď¤é¤ě¤Ţ¤ˇ¤żĄŁ\n"
+
+#: text-utils/odsyntax.c:136
+#, c-format
+msgid "od: hexdump(1) compatibility doesn't support the -%c option%s\n"
+msgstr "od: hexdump(1) ¸ß´š¤Ď -%c ĽŞĽ×ĽˇĽçĽó¤ňĽľĽÝĄźĽČ¤ˇ¤Ţ¤ť¤ó%s\n"
+
+#: text-utils/odsyntax.c:137
+msgid "; see strings(1)."
+msgstr " -- string(1) ¤ňť˛žČĄŁ"
+
+#: text-utils/parse.c:63
+#, c-format
+msgid "hexdump: can't read %s.\n"
+msgstr "hexdump: %s ¤ňĆɤá¤Ţ¤ť¤óĄŁ\n"
+
+#: text-utils/parse.c:68
+msgid "hexdump: line too long.\n"
+msgstr "hexdump: šÔ¤ŹÄš¤š¤Ž¤Ţ¤šĄŁ\n"
+
+#: text-utils/parse.c:406
+msgid "hexdump: byte count with multiple conversion characters.\n"
+msgstr "hexdump: ĘŁżô¤Îʸťú¤ÎĽĐĽ¤ĽČżôĽŤĽŚĽóĽČ\n"
+
+#: text-utils/parse.c:490
+#, c-format
+msgid "hexdump: bad byte count for conversion character %s.\n"
+msgstr ""
+"hexdump: ʸťú %s ¤ÎĘŃ´š¤Ë¤Ä¤¤¤ĆÉÔŔľ¤ĘĽĐĽ¤ĽČżô¤ÎĽŤĽŚĽóĽČ¤ňšÔ¤¤¤Ţ¤ˇ¤żĄŁ\n"
+
+#: text-utils/parse.c:497
+msgid "hexdump: %%s requires a precision or a byte count.\n"
+msgstr "hexdump: %%s ¤ĎŔşĹ٤ŤĄ˘ĽĐĽ¤ĽČżô¤ňÍ׾ᤡ¤Ţ¤šĄŁ\n"
+
+#: text-utils/parse.c:503
+#, c-format
+msgid "hexdump: bad format {%s}\n"
+msgstr "hexdump: ÉÔŔľ¤Ę˝ńź° {%s}\n"
+
+#: text-utils/parse.c:509
+msgid "hexdump: bad conversion character %%%s.\n"
+msgstr "hexdump: ÉÔŔľ¤ĘĘŃ´šĽ­ĽăĽéĽŻĽż %%%sĄŁ\n"
+
+#: text-utils/rev.c:109
+msgid "Unable to allocate bufferspace\n"
+msgstr "ĽĐĽĂĽŐĽĄśő´Ö¤ňłÎĘݤǤ­¤Ţ¤ť¤ó\n"
+
+#: text-utils/rev.c:167
+msgid "usage: rev [file ...]\n"
+msgstr "ťČ¤¤Ęý: rev [ ĽŐĽĄĽ¤Ľë ...]\n"
+
+#: text-utils/ul.c:125
+#, c-format
+msgid "usage: %s [ -i ] [ -tTerm ] file...\n"
+msgstr "ťČ¤¤Ęý: %s [ -i ] [ -tĂźËö ] ĽŐĽĄĽ¤Ľë...\n"
+
+#: text-utils/ul.c:136
+msgid "trouble reading terminfo"
+msgstr "terminfo ¤ÎĆɤߚţ¤ßĂć¤ËĽČĽéĽÖĽëČŻŔ¸"
+
+#: text-utils/ul.c:223
+#, c-format
+msgid "Unknown escape sequence in input: %o, %o\n"
+msgstr "̤ĂΤμ¨ĽšĽąĄźĽ×ĽˇĄźĽąĽóĽš¤ŹĆţÎϤľ¤ě¤Ţ¤ˇ¤ż: %o, %o\n"
+
+#: text-utils/ul.c:372
+msgid "Unable to allocate buffer.\n"
+msgstr "ĽĐĽĂĽŐĽĄ¤ÎłÎĘݤŹ¤Ç¤­¤Ţ¤ť¤óĄŁ\n"
+
+#: text-utils/ul.c:529
+msgid "Input line too long.\n"
+msgstr "ĆţÎĎšÔ¤ŹÄš¤š¤Ž¤Ţ¤šĄŁ\n"
+
+#: text-utils/ul.c:542
+msgid "Out of memory when growing buffer.\n"
+msgstr "ĽĐĽĂĽŐĽĄ¤ňłČÂ礚¤ë¤Č¤­¤ËĽáĽâĽę¤ŹÂ­¤ę¤Ę¤Ż¤Ę¤ę¤Ţ¤ˇ¤żĄŁ\n"
+
+#: kbd/kbdrate.c:139 kbd/kbdrate.c:271
+#, c-format
+msgid "Typematic Rate set to %.1f cps (delay = %d ms)\n"
+msgstr "Ľ­ĄźĽęĽÔĄźĽČÂŽĹ٤ň %.1f cps ¤ËĽťĽĂĽČ¤ˇ¤Ţ¤ˇ¤ż (ĽŚĽ§Ľ¤ĽČ¤Ď %d ms)\n"
+
+#: kbd/kbdrate.c:247
+msgid "Cannot open /dev/port"
+msgstr "/dev/port ¤ňłŤ¤ą¤Ţ¤ť¤ó"
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 000000000..a22da6087
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,7562 @@
+# nl.po - onvolledig testfragment voor util-linux
+# aeb@cwi.nl
+#
+# This is placed in the public domain
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: util-linux 2.9n\n"
+"POT-Creation-Date: 1999-03-20 12:27-0300\n"
+"PO-Revision-Date: 1999-02-25 20:46+0100\n"
+"Last-Translator: Andries Brouwer <aeb@cwi.nl>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: ENCODING\n"
+
+#: disk-utils/fdformat.c:33
+msgid "Formatting ... "
+msgstr "Aan het formatteren ... "
+
+#: disk-utils/fdformat.c:51 disk-utils/fdformat.c:86
+msgid "done\n"
+msgstr "klaar\n"
+
+#: disk-utils/fdformat.c:62
+msgid "Verifying ... "
+msgstr "Controle ... "
+
+#: disk-utils/fdformat.c:73
+msgid "Read: "
+msgstr "Lezen: "
+
+#: disk-utils/fdformat.c:75
+#, c-format
+msgid "Problem reading cylinder %d, expected %d, read %d\n"
+msgstr "Probleem bij het lezen van cylinder %d, verwacht %d, gelezen %d\n"
+
+#: disk-utils/fdformat.c:81
+#, c-format
+msgid ""
+"bad data in cyl %d\n"
+"Continuing ... "
+msgstr ""
+"rotte gegevens in cyl %d\n"
+"Ik ga verder ... "
+
+#: disk-utils/fdformat.c:96
+#, c-format
+msgid "usage: %s [ -n ] device\n"
+msgstr "aanroep: %s [ -n ] apparaat\n"
+
+#: disk-utils/fdformat.c:122
+#, c-format
+msgid "%s: not a floppy device\n"
+msgstr "%s: dit apparaat is geen floppy\n"
+
+#: disk-utils/fdformat.c:128
+msgid "Could not determine current format type"
+msgstr "Kon niet bepalen wat het huidige formaat is"
+
+#: disk-utils/fdformat.c:129
+#, c-format
+msgid "%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"
+msgstr "%szijdig, %d sporen, %d sectoren/spoor. Totale capaciteit %d kB.\n"
+
+#: disk-utils/fdformat.c:130
+msgid "Double"
+msgstr "Dubbel"
+
+#: disk-utils/fdformat.c:130
+msgid "Single"
+msgstr "Enkel"
+
+#: disk-utils/fsck.minix.c:288
+#, c-format
+msgid "%s is mounted.\t "
+msgstr "%s is gemount.\t "
+
+#: disk-utils/fsck.minix.c:290
+msgid "Do you really want to continue"
+msgstr "Wilt u echt doorgaan"
+
+#: disk-utils/fsck.minix.c:294
+msgid "check aborted.\n"
+msgstr "controle afgebroken.\n"
+
+#: disk-utils/fsck.minix.c:311 disk-utils/fsck.minix.c:331
+msgid "Zone nr < FIRSTZONE in file `"
+msgstr "Zone nr < EERSTEZONE in het bestand `"
+
+#: disk-utils/fsck.minix.c:313 disk-utils/fsck.minix.c:333
+msgid "Zone nr >= ZONES in file `"
+msgstr "Zone nr >= ZONES in het bestand `"
+
+#: disk-utils/fsck.minix.c:318 disk-utils/fsck.minix.c:338
+msgid "Remove block"
+msgstr "Blok verwijderen"
+
+#: disk-utils/fsck.minix.c:356
+msgid "Read error: unable to seek to block in file '"
+msgstr "Leesfout: ik kan niet positioneren in bestand '"
+
+#: disk-utils/fsck.minix.c:362
+msgid "Read error: bad block in file '"
+msgstr "Leesfout: slecht blok in bestand '"
+
+#: disk-utils/fsck.minix.c:378
+msgid ""
+"Internal error: trying to write bad block\n"
+"Write request ignored\n"
+msgstr ""
+"Interne fout: probeer een slecht blok te beschrijven\n"
+"Schrijfopdracht genegeerd\n"
+
+#: disk-utils/fsck.minix.c:386
+msgid "Write error: bad block in file '"
+msgstr "Schrijffout: slecht blok in bestand '"
+
+#: disk-utils/fsck.minix.c:607
+msgid "Warning: Firstzone != Norm_firstzone\n"
+msgstr "Waarschuwing: Eerstezone != Norm_eerstezone\n"
+
+#: disk-utils/fsck.minix.c:612 disk-utils/mkfs.minix.c:528
+#, c-format
+msgid "%ld inodes\n"
+msgstr "%ld inodes\n"
+
+#: disk-utils/fsck.minix.c:613 disk-utils/mkfs.minix.c:529
+#, c-format
+msgid "%ld blocks\n"
+msgstr "%ld blokken\n"
+
+#: disk-utils/fsck.minix.c:614 disk-utils/mkfs.minix.c:530
+#, c-format
+msgid "Firstdatazone=%ld (%ld)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:615 disk-utils/mkfs.minix.c:531
+#, c-format
+msgid "Zonesize=%d\n"
+msgstr "Zonegrootte=%d\n"
+
+#: disk-utils/fsck.minix.c:616
+#, c-format
+msgid "Maxsize=%ld\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:617
+#, c-format
+msgid "Filesystem state=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:618
+#, c-format
+msgid ""
+"namelen=%d\n"
+"\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:632 disk-utils/fsck.minix.c:684
+#, c-format
+msgid "Inode %d marked not used, but used for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:637 disk-utils/fsck.minix.c:688
+msgid "Mark in use"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:659 disk-utils/fsck.minix.c:708
+#, c-format
+msgid " has mode %05o\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:665 disk-utils/fsck.minix.c:713
+msgid "Warning: inode count too big.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:749 disk-utils/fsck.minix.c:783
+msgid "Block has been used before. Now in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:752 disk-utils/fsck.minix.c:786
+#: disk-utils/fsck.minix.c:1114 disk-utils/fsck.minix.c:1123
+#: disk-utils/fsck.minix.c:1167 disk-utils/fsck.minix.c:1176
+msgid "Clear"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:761 disk-utils/fsck.minix.c:795
+#, c-format
+msgid "Block %d in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:763 disk-utils/fsck.minix.c:797
+msgid "' is marked not in use."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:764 disk-utils/fsck.minix.c:798
+msgid "Correct"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:948 disk-utils/fsck.minix.c:1012
+msgid " contains a bad inode number for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:950 disk-utils/fsck.minix.c:1014
+msgid " Remove"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:964 disk-utils/fsck.minix.c:1028
+msgid ": bad directory: '.' isn't first\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:971 disk-utils/fsck.minix.c:1036
+msgid ": bad directory: '..' isn't second\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1071
+msgid ": bad directory: size<32"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1090
+msgid ": bad directory: size < 32"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1113 disk-utils/fsck.minix.c:1166
+#, c-format
+msgid "Inode %d mode not cleared."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1122 disk-utils/fsck.minix.c:1175
+#, c-format
+msgid "Inode %d not used, marked used in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1128 disk-utils/fsck.minix.c:1181
+#, c-format
+msgid "Inode %d used, marked unused in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1134 disk-utils/fsck.minix.c:1186
+#, c-format
+msgid "Inode %d (mode = %07o), i_nlinks=%d, counted=%d."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1136 disk-utils/fsck.minix.c:1188
+msgid "Set i_nlinks to count"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1148 disk-utils/fsck.minix.c:1200
+#, c-format
+msgid "Zone %d: marked in use, no file uses it."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1149 disk-utils/fsck.minix.c:1201
+msgid "Unmark"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1153 disk-utils/fsck.minix.c:1205
+#, c-format
+msgid "Zone %d: %sin use, counted=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1154 disk-utils/fsck.minix.c:1206
+msgid "not "
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1182
+msgid "Set"
+msgstr "Zet op 1"
+
+#: disk-utils/fsck.minix.c:1296
+#, c-format
+msgid "%s is clean, no check.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1300
+#, c-format
+msgid "Forcing filesystem check on %s.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1302
+#, c-format
+msgid "Filesystem on %s is dirty, needs checking.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1331
+msgid ""
+"\n"
+"%6ld inodes used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1336
+msgid "%6ld zones used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1338
+#, c-format
+msgid ""
+"\n"
+"%6d regular files\n"
+"%6d directories\n"
+"%6d character device files\n"
+"%6d block device files\n"
+"%6d links\n"
+"%6d symbolic links\n"
+"------\n"
+"%6d files\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1351
+msgid ""
+"----------------------------\n"
+"FILE SYSTEM HAS BEEN CHANGED\n"
+"----------------------------\n"
+msgstr ""
+
+#: disk-utils/mkfs.c:66
+msgid "Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n"
+msgstr ""
+
+#: disk-utils/mkfs.c:80 fdisk/cfdisk.c:324 getopt-1.0.3b/getopt.c:85
+#: getopt-1.0.3b/getopt.c:95 login-utils/wall.c:221 mount/sundries.c:192
+#, c-format
+msgid "%s: Out of memory!\n"
+msgstr "%s: Geheugen is vol!\n"
+
+#: disk-utils/mkfs.c:89
+msgid "mkfs version "
+msgstr "mkfs versie "
+
+#: disk-utils/mkfs.minix.c:186
+#, c-format
+msgid "Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
+msgstr "Aanroep: %s [-c | -l bestand] [-nXX] [-iXX] /dev/naam [blokkenaantal]\n"
+
+#: disk-utils/mkfs.minix.c:210
+#, c-format
+msgid "%s is mounted; will not make a filesystem here!"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:271
+msgid "seek to boot block failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:273
+msgid "unable to clear boot sector"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:275
+msgid "seek failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:277
+msgid "unable to write super-block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:279
+msgid "unable to write inode map"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:281
+msgid "unable to write zone map"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:283
+msgid "unable to write inodes"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:290
+msgid "seek failed in write_block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:292
+msgid "write failed in write_block"
+msgstr ""
+
+#. Could make triple indirect block here
+#: disk-utils/mkfs.minix.c:300 disk-utils/mkfs.minix.c:374
+#: disk-utils/mkfs.minix.c:425
+msgid "too many bad blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:308
+msgid "not enough good blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:517
+msgid "unable to allocate buffers for maps"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:526
+msgid "unable to allocate buffer for inodes"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:532
+#, c-format
+msgid ""
+"Maxsize=%ld\n"
+"\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:546
+msgid "seek failed during testing of blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:554
+msgid "Weird values in do_check: probably bugs\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:585
+msgid "seek failed in check_blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:594
+msgid "bad blocks before data-area: cannot make fs"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:600 disk-utils/mkfs.minix.c:622
+#, c-format
+msgid "%d bad blocks\n"
+msgstr "%ld slechte blokken\n"
+
+#: disk-utils/mkfs.minix.c:602 disk-utils/mkfs.minix.c:624
+msgid "one bad block\n"
+msgstr "1 slecht blok\n"
+
+#: disk-utils/mkfs.minix.c:614
+msgid "can't open file of bad blocks"
+msgstr "kan het slechte-blokken-bestand niet openen"
+
+#: disk-utils/mkfs.minix.c:637 disk-utils/mkfs.minix.c:640
+msgid "bad inode size"
+msgstr "foute inode grootte"
+
+#: disk-utils/mkfs.minix.c:669
+#, c-format
+msgid "%s: not compiled with minix v2 support\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:685
+msgid "strtol error: number of blocks not specified"
+msgstr "strtol fout: geen goede specificatie van het aantal blokken"
+
+#: disk-utils/mkfs.minix.c:717
+#, c-format
+msgid "unable to open %s"
+msgstr "kan het bestand '%s' niet openen"
+
+#: disk-utils/mkfs.minix.c:719
+#, c-format
+msgid "unable to stat %s"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:723
+#, c-format
+msgid "will not try to make filesystem on '%s'"
+msgstr ""
+
+#: disk-utils/mkswap.c:99
+#, c-format
+msgid "Assuming pages of size %d\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:191
+#, c-format
+msgid "%d bad page%s\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:191 login-utils/shutdown.c:433
+#: login-utils/shutdown.c:436
+msgid "s"
+msgstr ""
+
+#: disk-utils/mkswap.c:294
+#, c-format
+msgid "%s: error: Nowhere to set up swap on?\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:313
+#, c-format
+msgid "%s: error: unknown version %d\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:319
+#, c-format
+msgid "%s: error: swap area needs to be at least %ldkB\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:326
+#, c-format
+msgid "%s: warning: truncating swap area to %ldkB\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:353
+#, c-format
+msgid ""
+"%s: Device '%s' contains a valid Sun disklabel.\n"
+"This probably means creating v0 swap would destroy your partition table\n"
+"No swap created. If you really want to create swap v0 on that device, use\n"
+"the -f option to force it.\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:378
+#, c-format
+msgid "Setting up swapspace version %d, size = %ld bytes\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:30
+#, c-format
+msgid "Invalid number: %s\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:80
+#, c-format
+msgid "Syntax error: '%s'\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:90
+#, c-format
+msgid "No such parameter set: '%s'\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:100
+#, c-format
+msgid "usage: %s [ -p ] dev name\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:101
+#, c-format
+msgid ""
+" %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:104
+#, c-format
+msgid " %s [ -c | -y | -n | -d ] dev\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:106
+#, c-format
+msgid " %s [ -c | -y | -n ] dev\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:349 fdisk/cfdisk.c:1764
+msgid "Unusable"
+msgstr "Onbruikbaar"
+
+#: fdisk/cfdisk.c:351 fdisk/cfdisk.c:1766
+msgid "Free Space"
+msgstr "Vrij"
+
+#: fdisk/cfdisk.c:354
+msgid "Linux ext2"
+msgstr "Linux ext2"
+
+#. also Solaris
+#: fdisk/cfdisk.c:356 fdisk/i386_sys_types.c:53
+msgid "Linux"
+msgstr "Linux"
+
+#: fdisk/cfdisk.c:359
+msgid "OS/2 HPFS"
+msgstr "OS/2 HPFS"
+
+#: fdisk/cfdisk.c:361
+msgid "OS/2 IFS"
+msgstr "OS/2 IFS"
+
+#: fdisk/cfdisk.c:365
+msgid "NTFS"
+msgstr "NTFS"
+
+#: fdisk/cfdisk.c:376
+msgid "Disk has been changed.\n"
+msgstr "De schijfinhoud is gewijzigd.\n"
+
+#: fdisk/cfdisk.c:377
+msgid "Reboot the system to ensure the partition table is correctly updated.\n"
+msgstr ""
+"Herstart het systeem om er zeker van te zijn dat de partitietabel correct "
+"aangepast is\n"
+
+#: fdisk/cfdisk.c:380
+msgid ""
+"\n"
+"WARNING: If you have created or modified any\n"
+"DOS 6.x partitions, please see the cfdisk manual\n"
+"page for additional information.\n"
+msgstr ""
+"\n"
+"WAARSCHUWING: Mocht U DOS 6.x partities hebben aangemaakt of gewijzigd,\n"
+"lees dan de cfdisk man pagina - vaak is nog een dd commando nodig.\n"
+
+#: fdisk/cfdisk.c:475
+msgid "FATAL ERROR"
+msgstr "FATALE FOUT"
+
+#: fdisk/cfdisk.c:484
+msgid "Press any key to exit fdisk"
+msgstr "Druk op een toets om fdisk te verlaten"
+
+#: fdisk/cfdisk.c:520 fdisk/cfdisk.c:528
+msgid "Cannot seek on disk drive"
+msgstr "Positioneeropdracht faalde"
+
+#: fdisk/cfdisk.c:522
+msgid "Cannot read disk drive"
+msgstr "Leesopdracht faalde"
+
+#: fdisk/cfdisk.c:530
+msgid "Cannot write disk drive"
+msgstr "Schrijfopdracht faalde"
+
+#: fdisk/cfdisk.c:767
+msgid "Too many partitions"
+msgstr "Te veel partities"
+
+#: fdisk/cfdisk.c:772
+msgid "Partition begins before sector 0"
+msgstr "Partitie begint voor sector 0"
+
+#: fdisk/cfdisk.c:777
+msgid "Partition ends before sector 0"
+msgstr "Partitie eindigt voor sector 0"
+
+#: fdisk/cfdisk.c:782
+msgid "Partition begins after end-of-disk"
+msgstr "Partitie begint voorbij het einde van de schijf"
+
+#: fdisk/cfdisk.c:787
+msgid "Partition ends after end-of-disk"
+msgstr "Partitie eindigt voorbij het einde van de schijf"
+
+#: fdisk/cfdisk.c:835
+msgid ""
+"!!!! Internal error creating logical drive with no extended partition !!!!"
+msgstr "!!!! Interne cfdisk fout - logische partitie niet in uitgebreide??"
+
+#: fdisk/cfdisk.c:846 fdisk/cfdisk.c:858
+msgid ""
+"Cannot create logical drive here -- would create two extended partitions"
+msgstr ""
+"Ik kan hier geen logische partitie maken -- dan zouden er twee uitgebreide "
+"partities komen"
+
+#: fdisk/cfdisk.c:1002
+msgid "Menu item too long. Menu may look odd."
+msgstr "Menuelement te lang. Misschien ziet het menu er vreemd uit."
+
+#: fdisk/cfdisk.c:1051
+msgid "Menu without direction. Defaulting horizontal."
+msgstr "Menu zonder aangegeven richting. Laat ik horizontaal nemen."
+
+#: fdisk/cfdisk.c:1166
+msgid "Illegal key"
+msgstr "Niet herkende toets"
+
+#: fdisk/cfdisk.c:1189
+msgid "Press a key to continue"
+msgstr "Sla een toets aan om verder te gaan"
+
+#: fdisk/cfdisk.c:1236 fdisk/cfdisk.c:1735 fdisk/cfdisk.c:2261
+#: fdisk/cfdisk.c:2263
+msgid "Primary"
+msgstr "Primaire"
+
+#: fdisk/cfdisk.c:1236
+msgid "Create a new primary partition"
+msgstr "Maak een nieuwe primaire partitie"
+
+#: fdisk/cfdisk.c:1237 fdisk/cfdisk.c:1735 fdisk/cfdisk.c:2260
+#: fdisk/cfdisk.c:2263
+msgid "Logical"
+msgstr "Logische"
+
+#: fdisk/cfdisk.c:1237
+msgid "Create a new logical partition"
+msgstr "Maak een nieuwe logische partitie"
+
+#: fdisk/cfdisk.c:1238 fdisk/cfdisk.c:1291 fdisk/cfdisk.c:1947
+msgid "Cancel"
+msgstr "Breek af"
+
+#: fdisk/cfdisk.c:1238 fdisk/cfdisk.c:1291
+msgid "Don't create a partition"
+msgstr "Maak geen partitie"
+
+#: fdisk/cfdisk.c:1254
+msgid "!!! Internal error !!!"
+msgstr "Interne fout"
+
+#: fdisk/cfdisk.c:1257
+msgid "Size (in MB): "
+msgstr "Grootte (in MB)"
+
+#: fdisk/cfdisk.c:1289
+msgid "Beginning"
+msgstr "Begin"
+
+#: fdisk/cfdisk.c:1289
+msgid "Add partition at beginning of free space"
+msgstr "Zet de partitie aan het begin van de vrije ruimte"
+
+#: fdisk/cfdisk.c:1290
+msgid "End"
+msgstr "Einde"
+
+#: fdisk/cfdisk.c:1290
+msgid "Add partition at end of free space"
+msgstr "Zet de partitie aan het eind van de vrije ruimte"
+
+#: fdisk/cfdisk.c:1308
+msgid "No room to create the extended partition"
+msgstr "Geen ruimte voor een uitgebreide partitie"
+
+#: fdisk/cfdisk.c:1354
+msgid "Cannot open disk drive"
+msgstr "Kan schijf niet openen"
+
+#: fdisk/cfdisk.c:1356 fdisk/cfdisk.c:1546
+msgid "Opened disk read-only - you have no permission to write"
+msgstr "Kan de schijf alleen lezen - heb geen permissie om te schrijven"
+
+#: fdisk/cfdisk.c:1386
+msgid "Cannot read disk drive geometry"
+msgstr "Opvragen van de schijfgeometrie faalde"
+
+#: fdisk/cfdisk.c:1408
+msgid "Bad primary partition"
+msgstr "Slechte primaire partitie"
+
+#: fdisk/cfdisk.c:1438
+msgid "Bad logical partition"
+msgstr "Slechte logische partitie"
+
+#: fdisk/cfdisk.c:1558
+msgid "Warning!! This may destroy data on your disk!"
+msgstr "Waarschuwing!! Dit kan gegevens op uw schijf vernietigen!"
+
+#: fdisk/cfdisk.c:1562
+msgid "Are you sure you want write the partition table to disk? (yes or no): "
+msgstr ""
+"Weet U zeker dat de partitietabel weggeschreven moet worden? (ja of nee): "
+
+#: fdisk/cfdisk.c:1571
+msgid "Did not write partition table to disk"
+msgstr "Heb de partitietabel niet naar schijf geschreven"
+
+#: fdisk/cfdisk.c:1579
+msgid "Please enter `yes' or `no'"
+msgstr "Antwoord `ja' of `nee'"
+
+#: fdisk/cfdisk.c:1583
+msgid "Writing partition table to disk..."
+msgstr "Schrijf nu de partitietabel naar schijf..."
+
+#: fdisk/cfdisk.c:1608 fdisk/cfdisk.c:1612
+msgid "Wrote partition table to disk"
+msgstr "Partitietabel is weggeschreven"
+
+#: fdisk/cfdisk.c:1610
+msgid ""
+"Wrote partition table, but re-read table failed. Reboot to update table."
+msgstr "Partitietabel is weggeschreven, maar het teruglezen faalde. Reboot."
+
+#: fdisk/cfdisk.c:1620
+msgid ""
+"Not precisely one primary partition is bootable. DOS MBR cannot boot this."
+msgstr ""
+"Er is niet precies 1 startbare primaire partitie. DOS MBR kan dit niet "
+"booten."
+
+#: fdisk/cfdisk.c:1678 fdisk/cfdisk.c:1796 fdisk/cfdisk.c:1888
+msgid "Enter filename or press RETURN to display on screen: "
+msgstr "Geef een bestandsnaam of Enter om uitvoer naar het scherm te krijgen"
+
+#: fdisk/cfdisk.c:1686 fdisk/cfdisk.c:1804 fdisk/cfdisk.c:1896
+#, c-format
+msgid "Cannot open file '%s'"
+msgstr "Kan het bestand '%s' niet openen"
+
+#: fdisk/cfdisk.c:1697
+#, c-format
+msgid "Disk Drive: %s\n"
+msgstr "Schijf: %s\n"
+
+#: fdisk/cfdisk.c:1699
+msgid "Sector 0:\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1706
+#, c-format
+msgid "Sector %d:\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1726
+msgid " None "
+msgstr " Geen "
+
+#: fdisk/cfdisk.c:1728
+msgid " Pri/Log"
+msgstr ""
+
+#: fdisk/cfdisk.c:1730
+msgid " Primary"
+msgstr " Primaire"
+
+#: fdisk/cfdisk.c:1732
+msgid " Logical"
+msgstr " Logische"
+
+#. odd flag on end
+#. type id
+#. type name
+#: fdisk/cfdisk.c:1770 fdisk/fdisk.c:1045 fdisk/fdisk.c:1194
+#: fdisk/fdisksgilabel.c:224 fdisk/fdisksunlabel.c:644 fdisk/sfdisk.c:551
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: fdisk/cfdisk.c:1776
+#, c-format
+msgid "Boot (%02X)"
+msgstr ""
+
+#: fdisk/cfdisk.c:1778 fdisk/cfdisk.c:2269
+#, c-format
+msgid "Unknown (%02X)"
+msgstr "Onbekend (%02X)"
+
+#: fdisk/cfdisk.c:1780
+#, c-format
+msgid "None (%02X)"
+msgstr "Geen (%02X)"
+
+#: fdisk/cfdisk.c:1815 fdisk/cfdisk.c:1907
+#, c-format
+msgid "Partition Table for %s\n"
+msgstr "Partitietabel voor %s\n"
+
+#: fdisk/cfdisk.c:1817
+msgid " First Last\n"
+msgstr " Eerste Laatste\n"
+
+#: fdisk/cfdisk.c:1818
+msgid ""
+" # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n"
+msgstr ""
+" # Type Sector Sector Offset Lengte Filesysteem type (ID) "
+"Vlaggen\n"
+
+#: fdisk/cfdisk.c:1819
+msgid ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1909
+msgid " ---Starting--- ----Ending---- Start Number of\n"
+msgstr " ---Start--- ---End--- Start Aantal\n"
+
+#: fdisk/cfdisk.c:1910
+msgid " # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n"
+msgstr " # Vlaggen Kop Sect Cyl ID Kop Sect Cyl Sector Sectoren\n"
+
+#: fdisk/cfdisk.c:1911
+msgid "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1944
+msgid "Raw"
+msgstr "Ruw"
+
+#: fdisk/cfdisk.c:1944
+msgid "Print the table using raw data format"
+msgstr "Geef de tabel in ruw formaat"
+
+#: fdisk/cfdisk.c:1945 fdisk/cfdisk.c:2050
+msgid "Sectors"
+msgstr "Sectoren"
+
+#: fdisk/cfdisk.c:1945
+msgid "Print the table ordered by sectors"
+msgstr "Geef de tabel geordend naar sectoren"
+
+#: fdisk/cfdisk.c:1946
+msgid "Table"
+msgstr "Tabel"
+
+#: fdisk/cfdisk.c:1946
+msgid "Just print the partition table"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/cfdisk.c:1947
+msgid "Don't print the table"
+msgstr "Geef geen tabel"
+
+#: fdisk/cfdisk.c:1976
+msgid "Help Screen for cfdisk "
+msgstr "Hulpscherm voor cfdisk"
+
+#: fdisk/cfdisk.c:1978
+msgid "This is cfdisk, a curses based disk partitioning program, which"
+msgstr "Dit is cfdisk, een schijfpartitieprogramma dat U in staat stelt"
+
+#: fdisk/cfdisk.c:1979
+msgid "allows you to create, delete and modify partitions on your hard"
+msgstr "partities te maken, te verwijderen en te veranderen op uw harde"
+
+#: fdisk/cfdisk.c:1980
+msgid "disk drive."
+msgstr "schijf"
+
+#: fdisk/cfdisk.c:1982
+msgid "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+msgstr ""
+
+#: fdisk/cfdisk.c:1984
+msgid "Command Meaning"
+msgstr "Commando Betekenis"
+
+#: fdisk/cfdisk.c:1985
+msgid "------- -------"
+msgstr ""
+
+#: fdisk/cfdisk.c:1986
+msgid " b Toggle bootable flag of the current partition"
+msgstr " b Maak de huidige partitie (wel/niet) startbaar"
+
+#: fdisk/cfdisk.c:1987
+msgid " d Delete the current partition"
+msgstr " d Verwijder de huidige partitie"
+
+#: fdisk/cfdisk.c:1988
+msgid " g Change cylinders, heads, sectors-per-track parameters"
+msgstr " g Verander het aantal cylinders, koppen, sectoren/spoor"
+
+#: fdisk/cfdisk.c:1989
+msgid " WARNING: This option should only be used by people who"
+msgstr " WAARSCHUWING: Dit is alleen voor experts."
+
+#: fdisk/cfdisk.c:1990
+msgid " know what they are doing."
+msgstr ""
+
+#: fdisk/cfdisk.c:1991
+msgid " h Print this screen"
+msgstr ""
+
+#: fdisk/cfdisk.c:1992
+msgid " m Maximize disk usage of the current partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:1993
+msgid " Note: This may make the partition incompatible with"
+msgstr ""
+
+#: fdisk/cfdisk.c:1994
+msgid " DOS, OS/2, ..."
+msgstr ""
+
+#: fdisk/cfdisk.c:1995
+msgid " n Create new partition from free space"
+msgstr ""
+
+#: fdisk/cfdisk.c:1996
+msgid " p Print partition table to the screen or to a file"
+msgstr ""
+
+#: fdisk/cfdisk.c:1997
+msgid " There are several different formats for the partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:1998
+msgid " that you can choose from:"
+msgstr ""
+
+#: fdisk/cfdisk.c:1999
+msgid " r - Raw data (exactly what would be written to disk)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2000
+msgid " s - Table ordered by sectors"
+msgstr ""
+
+#: fdisk/cfdisk.c:2001
+msgid " t - Table in raw format"
+msgstr ""
+
+#: fdisk/cfdisk.c:2002
+msgid " q Quit program without writing partition table"
+msgstr ""
+
+#: fdisk/cfdisk.c:2003
+msgid " t Change the filesystem type"
+msgstr ""
+
+#: fdisk/cfdisk.c:2004
+msgid " u Change units of the partition size display"
+msgstr ""
+
+#: fdisk/cfdisk.c:2005
+msgid " Rotates through Mb, sectors and cylinders"
+msgstr ""
+
+#: fdisk/cfdisk.c:2006
+msgid " W Write partition table to disk (must enter upper case W)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2007
+msgid " Since this might destroy data on the disk, you must"
+msgstr ""
+
+#: fdisk/cfdisk.c:2008
+msgid " either confirm or deny the write by entering `yes' or"
+msgstr ""
+
+#: fdisk/cfdisk.c:2009
+msgid " `no'"
+msgstr ""
+
+#: fdisk/cfdisk.c:2010
+msgid "Up Arrow Move cursor to the previous partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2011
+msgid "Down Arrow Move cursor to the next partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2012
+msgid "CTRL-L Redraws the screen"
+msgstr ""
+
+#: fdisk/cfdisk.c:2013
+msgid " ? Print this screen"
+msgstr ""
+
+#: fdisk/cfdisk.c:2015
+msgid "Note: All of the commands can be entered with either upper or lower"
+msgstr ""
+
+#: fdisk/cfdisk.c:2016
+msgid "case letters (except for Writes)."
+msgstr ""
+
+#: fdisk/cfdisk.c:2048 fdisk/cfdisk.c:2350 fdisk/fdisksunlabel.c:305
+#: fdisk/fdisksunlabel.c:307
+msgid "Cylinders"
+msgstr ""
+
+#: fdisk/cfdisk.c:2048
+msgid "Change cylinder geometry"
+msgstr ""
+
+#: fdisk/cfdisk.c:2049 fdisk/fdisksunlabel.c:302
+msgid "Heads"
+msgstr ""
+
+#: fdisk/cfdisk.c:2049
+msgid "Change head geometry"
+msgstr ""
+
+#: fdisk/cfdisk.c:2050
+msgid "Change sector geometry"
+msgstr ""
+
+#: fdisk/cfdisk.c:2051
+msgid "Done"
+msgstr ""
+
+#: fdisk/cfdisk.c:2051
+msgid "Done with changing geometry"
+msgstr ""
+
+#: fdisk/cfdisk.c:2064
+msgid "Enter the number of cylinders: "
+msgstr ""
+
+#: fdisk/cfdisk.c:2071 fdisk/cfdisk.c:2614
+msgid "Illegal cylinders value"
+msgstr ""
+
+#: fdisk/cfdisk.c:2077
+msgid "Enter the number of heads: "
+msgstr ""
+
+#: fdisk/cfdisk.c:2084 fdisk/cfdisk.c:2621
+msgid "Illegal heads value"
+msgstr ""
+
+#: fdisk/cfdisk.c:2090
+msgid "Enter the number of sectors per track: "
+msgstr ""
+
+#: fdisk/cfdisk.c:2097 fdisk/cfdisk.c:2628
+msgid "Illegal sectors value"
+msgstr ""
+
+#: fdisk/cfdisk.c:2196
+msgid "Enter filesystem type: "
+msgstr ""
+
+#: fdisk/cfdisk.c:2214
+msgid "Cannot change FS Type to empty"
+msgstr ""
+
+#: fdisk/cfdisk.c:2216
+msgid "Cannot change FS Type to extended"
+msgstr ""
+
+#: fdisk/cfdisk.c:2238 fdisk/fdisksunlabel.c:44
+msgid "Boot"
+msgstr ""
+
+#: fdisk/cfdisk.c:2240
+#, c-format
+msgid "Unk(%02X)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2243 fdisk/cfdisk.c:2246
+msgid ", NC"
+msgstr ""
+
+#: fdisk/cfdisk.c:2251 fdisk/cfdisk.c:2254
+msgid "NC"
+msgstr ""
+
+#: fdisk/cfdisk.c:2262
+msgid "Pri/Log"
+msgstr ""
+
+#: fdisk/cfdisk.c:2336
+#, c-format
+msgid "Disk Drive: %s"
+msgstr "Schijf: %s"
+
+#: fdisk/cfdisk.c:2338
+#, c-format
+msgid "Heads: %d Sectors per Track: %d Cylinders: %d"
+msgstr "%d koppen %d sectoren/spoor %d cylinders"
+
+#: fdisk/cfdisk.c:2342
+msgid "Name"
+msgstr "Naam"
+
+#: fdisk/cfdisk.c:2343
+msgid "Flags"
+msgstr "Vlaggen"
+
+#: fdisk/cfdisk.c:2344
+msgid "Part Type"
+msgstr "type"
+
+#: fdisk/cfdisk.c:2345
+msgid "FS Type"
+msgstr "FS type"
+
+#: fdisk/cfdisk.c:2346
+msgid "[Label]"
+msgstr ""
+
+#: fdisk/cfdisk.c:2348
+msgid " Sectors"
+msgstr " sectoren"
+
+#: fdisk/cfdisk.c:2352
+msgid "Size (MB)"
+msgstr "Grootte (MB)"
+
+#: fdisk/cfdisk.c:2407
+msgid "Bootable"
+msgstr "Startbaar"
+
+#: fdisk/cfdisk.c:2407
+msgid "Toggle bootable flag of the current partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2408
+msgid "Delete"
+msgstr ""
+
+#: fdisk/cfdisk.c:2408
+msgid "Delete the current partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2409
+msgid "Geometry"
+msgstr ""
+
+#: fdisk/cfdisk.c:2409
+msgid "Change disk geometry (experts only)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2410
+msgid "Help"
+msgstr ""
+
+#: fdisk/cfdisk.c:2410
+msgid "Print help screen"
+msgstr ""
+
+#: fdisk/cfdisk.c:2411
+msgid "Maximize"
+msgstr ""
+
+#: fdisk/cfdisk.c:2411
+msgid "Maximize disk usage of the current partition (experts only)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2412
+msgid "New"
+msgstr ""
+
+#: fdisk/cfdisk.c:2412
+msgid "Create new partition from free space"
+msgstr ""
+
+#: fdisk/cfdisk.c:2413
+msgid "Print"
+msgstr ""
+
+#: fdisk/cfdisk.c:2413
+msgid "Print partition table to the screen or to a file"
+msgstr ""
+
+#: fdisk/cfdisk.c:2414
+msgid "Quit"
+msgstr ""
+
+#: fdisk/cfdisk.c:2414
+msgid "Quit program without writing partition table"
+msgstr ""
+
+#: fdisk/cfdisk.c:2415
+msgid "Type"
+msgstr ""
+
+#: fdisk/cfdisk.c:2415
+msgid "Change the filesystem type (DOS, Linux, OS/2 and so on)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2416
+msgid "Units"
+msgstr ""
+
+#: fdisk/cfdisk.c:2416
+msgid "Change units of the partition size display (MB, sect, cyl)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2417
+msgid "Write"
+msgstr ""
+
+#: fdisk/cfdisk.c:2417
+msgid "Write partition table to disk (this might destroy data)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2463
+msgid "Cannot make this partition bootable"
+msgstr ""
+
+#: fdisk/cfdisk.c:2473
+msgid "Cannot delete an empty partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2493 fdisk/cfdisk.c:2495
+msgid "Cannot maximize this partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2503
+msgid "This partition is unusable"
+msgstr ""
+
+#: fdisk/cfdisk.c:2505
+msgid "This partition is already in use"
+msgstr ""
+
+#: fdisk/cfdisk.c:2522
+msgid "Cannot change the type of an empty partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2547 fdisk/cfdisk.c:2553
+msgid "No more partitions"
+msgstr ""
+
+#: fdisk/cfdisk.c:2560
+msgid "Illegal command"
+msgstr ""
+
+#: fdisk/cfdisk.c:2570
+msgid "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+msgstr ""
+
+#. Unfortunately, xgettext does not handle multi-line strings
+#. so, let's use explicit \n's instead
+#: fdisk/cfdisk.c:2577
+#, c-format
+msgid ""
+"\n"
+"Usage:\n"
+"Print version:\n"
+" %s -v\n"
+"Print partition table:\n"
+" %s -P {r|s|t} [options] device\n"
+"Interactive use:\n"
+" %s [options] device\n"
+"\n"
+"Options:\n"
+"-a: Use arrow instead of highlighting;\n"
+"-z: Start with a zero partition table, instead of reading the pt from disk;\n"
+"-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n"
+" the number of heads and the number of sectors/track.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:235
+msgid ""
+"Usage: fdisk [-b SSZ] [-u] [DISK] Change partition table\n"
+" fdisk -l [-b SSZ] [-u] [DISK] List partition table(s)\n"
+" fdisk -s PARTITION Give partition size(s) in blocks\n"
+" fdisk -v Give fdisk version\n"
+"Here DISK is something like /dev/hdb or /dev/sda\n"
+"and PARTITION is something like /dev/hda7\n"
+"-u: give Start and End in sector (instead of cylinder) units\n"
+"-b 2048: (for certain MO drives) use 2048-byte sectors\n"
+msgstr ""
+
+#: fdisk/fdisk.c:245
+msgid "A disk block device is needed.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:248
+msgid ""
+"Given name does not refer to a partition,\n"
+"or maybe not even to a block device.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:252
+msgid "Unable to open %s\n"
+msgstr "Kan het bestand '%s' niet openen\n"
+
+#: fdisk/fdisk.c:255
+msgid "Unable to read %s\n"
+msgstr "Kan het bestand '%s' niet lezen\n"
+
+#: fdisk/fdisk.c:258
+msgid "Unable to seek on %s\n"
+msgstr "Kan het bestand '%s' niet positioneren\n"
+
+#: fdisk/fdisk.c:261
+msgid "Unable to write %s\n"
+msgstr "Kan het bestand '%s' niet schrijven\n"
+
+#: fdisk/fdisk.c:264
+msgid "Unable to allocate any more memory\n"
+msgstr "Kan niet meer geheugen krijgen\n"
+
+#: fdisk/fdisk.c:266
+msgid "Fatal error\n"
+msgstr "Fatale fout\n"
+
+#: fdisk/fdisk.c:277 fdisk/fdisk.c:296 fdisk/fdisk.c:314 fdisk/fdisk.c:321
+#: fdisk/fdisk.c:344 fdisk/fdisk.c:362 fdisk/fdiskbsdlabel.c:105
+#, fuzzy
+msgid "Command action"
+msgstr "Commando Betekenis"
+
+#: fdisk/fdisk.c:278
+msgid " a toggle a read only flag"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:279 fdisk/fdisk.c:323
+msgid " b edit bsd disklabel"
+msgstr ""
+
+#: fdisk/fdisk.c:280
+msgid " c toggle the mountable flag"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:281 fdisk/fdisk.c:300 fdisk/fdisk.c:325
+msgid " d delete a partition"
+msgstr " d Verwijder partitie"
+
+#: fdisk/fdisk.c:282 fdisk/fdisk.c:301 fdisk/fdisk.c:326
+msgid " l list known partition types"
+msgstr " l geef alle bekende partitietypen"
+
+#. sun
+#: fdisk/fdisk.c:283 fdisk/fdisk.c:302 fdisk/fdisk.c:315 fdisk/fdisk.c:327
+#: fdisk/fdisk.c:352 fdisk/fdisk.c:369 fdisk/fdiskbsdlabel.c:110
+msgid " m print this menu"
+msgstr ""
+
+#: fdisk/fdisk.c:284 fdisk/fdisk.c:303 fdisk/fdisk.c:328
+msgid " n add a new partition"
+msgstr " n maak een nieuwe partitie"
+
+#: fdisk/fdisk.c:285 fdisk/fdisk.c:304 fdisk/fdisk.c:316 fdisk/fdisk.c:329
+#, fuzzy
+msgid " o create a new empty DOS partition table"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdisk.c:286 fdisk/fdisk.c:305 fdisk/fdisk.c:330 fdisk/fdisk.c:353
+#: fdisk/fdisk.c:370
+#, fuzzy
+msgid " p print the partition table"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdisk.c:287 fdisk/fdisk.c:306 fdisk/fdisk.c:317 fdisk/fdisk.c:331
+#: fdisk/fdisk.c:354 fdisk/fdisk.c:371 fdisk/fdiskbsdlabel.c:113
+msgid " q quit without saving changes"
+msgstr ""
+
+#: fdisk/fdisk.c:288 fdisk/fdisk.c:307 fdisk/fdisk.c:318 fdisk/fdisk.c:332
+msgid " s create a new empty Sun disklabel"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:289 fdisk/fdisk.c:308 fdisk/fdisk.c:333
+#, fuzzy
+msgid " t change a partition's system id"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdisk.c:290 fdisk/fdisk.c:309 fdisk/fdisk.c:334
+msgid " u change display/entry units"
+msgstr ""
+
+#: fdisk/fdisk.c:291 fdisk/fdisk.c:310 fdisk/fdisk.c:335 fdisk/fdisk.c:357
+#: fdisk/fdisk.c:374
+#, fuzzy
+msgid " v verify the partition table"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdisk.c:292 fdisk/fdisk.c:311 fdisk/fdisk.c:336 fdisk/fdisk.c:358
+#: fdisk/fdisk.c:375
+msgid " w write table to disk and exit"
+msgstr ""
+
+#: fdisk/fdisk.c:293 fdisk/fdisk.c:337
+msgid " x extra functionality (experts only)"
+msgstr ""
+
+#: fdisk/fdisk.c:297
+#, fuzzy
+msgid " a select bootable partition"
+msgstr " d Verwijder de huidige partitie"
+
+#. sgi flavour
+#: fdisk/fdisk.c:298
+msgid " b edit bootfile entry"
+msgstr ""
+
+#. sgi
+#: fdisk/fdisk.c:299
+#, fuzzy
+msgid " c select sgi swap partition"
+msgstr " d Verwijder de huidige partitie"
+
+#: fdisk/fdisk.c:322
+msgid " a toggle a bootable flag"
+msgstr ""
+
+#: fdisk/fdisk.c:324
+msgid " c toggle the dos compatibility flag"
+msgstr ""
+
+#: fdisk/fdisk.c:345
+msgid " a change number of alternate cylinders"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:346 fdisk/fdisk.c:364
+msgid " c change number of cylinders"
+msgstr ""
+
+#: fdisk/fdisk.c:347 fdisk/fdisk.c:365
+#, fuzzy
+msgid " d print the raw data in the partition table"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdisk.c:348
+msgid " e change number of extra sectors per cylinder"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:349 fdisk/fdisk.c:368
+msgid " h change number of heads"
+msgstr ""
+
+#: fdisk/fdisk.c:350
+msgid " i change interleave factor"
+msgstr ""
+
+#. sun
+#: fdisk/fdisk.c:351
+msgid " o change rotation speed (rpm)"
+msgstr ""
+
+#: fdisk/fdisk.c:355 fdisk/fdisk.c:372 fdisk/fdiskbsdlabel.c:115
+msgid " r return to main menu"
+msgstr ""
+
+#: fdisk/fdisk.c:356 fdisk/fdisk.c:373
+msgid " s change number of sectors"
+msgstr ""
+
+#: fdisk/fdisk.c:359
+msgid " y change number of physical cylinders"
+msgstr ""
+
+#: fdisk/fdisk.c:363
+msgid " b move beginning of data in a partition"
+msgstr ""
+
+#: fdisk/fdisk.c:366
+#, fuzzy
+msgid " e list extended partitions"
+msgstr "Geen ruimte voor een uitgebreide partitie"
+
+#. !sun
+#: fdisk/fdisk.c:367
+#, fuzzy
+msgid " g create an IRIX partition table"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdisk.c:463
+msgid "You must set"
+msgstr ""
+
+#: fdisk/fdisk.c:477
+msgid "heads"
+msgstr ""
+
+#: fdisk/fdisk.c:479 fdisk/sfdisk.c:825
+#, fuzzy
+msgid "sectors"
+msgstr "Sectoren"
+
+#: fdisk/fdisk.c:481 fdisk/fdiskbsdlabel.c:441 fdisk/sfdisk.c:825
+#, fuzzy
+msgid "cylinders"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdisk.c:485
+#, c-format
+msgid ""
+"%s%s.\n"
+"You can do this from the extra functions menu.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:486
+msgid " and "
+msgstr ""
+
+#: fdisk/fdisk.c:520
+#, fuzzy
+msgid "Bad offset in primary extended partition\n"
+msgstr "Slechte primaire partitie"
+
+#: fdisk/fdisk.c:524
+#, fuzzy, c-format
+msgid "Warning: deleting partitions after %d\n"
+msgstr "Slechte primaire partitie"
+
+#: fdisk/fdisk.c:545
+#, fuzzy, c-format
+msgid "Warning: extra link pointer in partition table %d\n"
+msgstr "Slechte primaire partitie"
+
+#: fdisk/fdisk.c:553
+#, c-format
+msgid "Warning: ignoring extra data in partition table %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:579
+msgid ""
+"Building a new DOS disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:615
+#, fuzzy
+msgid "You will not be able to write the partition table.\n"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdisk.c:624
+#, c-format
+msgid "Note: sector size is %d (not %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:671
+msgid ""
+"Device contains neither a valid DOS partition table, nor Sun or SGI "
+"disklabel\n"
+msgstr ""
+
+#: fdisk/fdisk.c:687
+#, fuzzy
+msgid "Internal error\n"
+msgstr "Interne fout"
+
+#: fdisk/fdisk.c:697
+#, fuzzy, c-format
+msgid "Ignoring extra extended partition %d\n"
+msgstr "Geen ruimte voor een uitgebreide partitie"
+
+#: fdisk/fdisk.c:704
+#, c-format
+msgid ""
+"Warning: invalid flag 0x%04x of partition table %d will be corrected by "
+"w(rite)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:725
+msgid ""
+"\n"
+"got EOF thrice - exiting..\n"
+msgstr ""
+
+#: fdisk/fdisk.c:762
+msgid "Hex code (type L to list codes): "
+msgstr ""
+
+#: fdisk/fdisk.c:801
+#, c-format
+msgid "%s (%d-%d, default %d): "
+msgstr ""
+
+#: fdisk/fdisk.c:855
+#, c-format
+msgid "Using default value %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:859
+msgid "Value out of range.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:866
+#, fuzzy
+msgid "Partition number"
+msgstr "Partitietabel voor %s\n"
+
+#: fdisk/fdisk.c:874
+#, fuzzy, c-format
+msgid "Warning: partition %d has empty type\n"
+msgstr "Schrijf nu de partitietabel naar schijf..."
+
+#: fdisk/fdisk.c:880
+#, fuzzy
+msgid "cylinder"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdisk.c:880
+#, fuzzy
+msgid "sector"
+msgstr "Sectoren"
+
+#: fdisk/fdisk.c:887
+#, c-format
+msgid "Changing display/entry units to %ss\n"
+msgstr ""
+
+#: fdisk/fdisk.c:897
+#, c-format
+msgid "WARNING: Partition %d is an extended partition\n"
+msgstr ""
+
+#: fdisk/fdisk.c:910
+msgid "DOS Compatibility flag is set\n"
+msgstr ""
+
+#: fdisk/fdisk.c:914
+msgid "DOS Compatibility flag is not set\n"
+msgstr ""
+
+#: fdisk/fdisk.c:999
+#, c-format
+msgid "Partition %d does not exist yet!\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1004
+msgid ""
+"Type 0 means free space to many systems\n"
+"(but not to Linux). Having partitions of\n"
+"type 0 is probably unwise. You can delete\n"
+"a partition using the `d' command.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1013
+msgid ""
+"You cannot change a partition into an extended one or vice versa\n"
+"Delete it first.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1022
+msgid ""
+"Consider leaving partition 3 as Whole disk (5),\n"
+"as SunOS/Solaris expects it and even Linux likes it.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1028
+msgid ""
+"Consider leaving partition 9 as volume header (0),\n"
+"and partition 11 as entire volume (6)as IRIX expects it.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1042
+#, c-format
+msgid "Changed system type of partition %d to %x (%s)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1095
+#, c-format
+msgid "Partition %d has different physical/logical beginnings (non-Linux?):\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1097 fdisk/fdisk.c:1105 fdisk/fdisk.c:1114 fdisk/fdisk.c:1123
+#, c-format
+msgid " phys=(%d, %d, %d) "
+msgstr ""
+
+#: fdisk/fdisk.c:1098 fdisk/fdisk.c:1106
+#, c-format
+msgid "logical=(%d, %d, %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1103
+#, c-format
+msgid "Partition %d has different physical/logical endings:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1112
+#, c-format
+msgid "Partition %i does not start on cylinder boundary:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1115
+#, c-format
+msgid "should be (%d, %d, 1)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1121
+#, c-format
+msgid "Partition %i does not end on cylinder boundary:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1124
+#, c-format
+msgid "should be (%d, %d, %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1131
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * %d bytes\n"
+"\n"
+msgstr ""
+
+#. FIXME! let's see how this shows up with other languagues
+#. acme@conectiva.com.br
+#: fdisk/fdisk.c:1168
+#, c-format
+msgid "%*s Boot Start End Blocks Id System\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1169 fdisk/fdisksgilabel.c:207 fdisk/fdisksunlabel.c:629
+msgid "Device"
+msgstr ""
+
+#: fdisk/fdisk.c:1209
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1211
+#, fuzzy
+msgid "Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n"
+msgstr " # Vlaggen Kop Sect Cyl ID Kop Sect Cyl Sector Sectoren\n"
+
+#: fdisk/fdisk.c:1250
+#, fuzzy, c-format
+msgid "Warning: partition %d contains sector 0\n"
+msgstr "Schrijf nu de partitietabel naar schijf..."
+
+#: fdisk/fdisk.c:1253
+#, c-format
+msgid "Partition %d: head %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1256
+#, c-format
+msgid "Partition %d: sector %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1259
+#, c-format
+msgid "Partitions %d: cylinder %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1263
+#, c-format
+msgid "Partition %d: previous sectors %d disagrees with total %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1293
+#, fuzzy, c-format
+msgid "Warning: bad start-of-data in partition %d\n"
+msgstr "Slechte primaire partitie"
+
+#: fdisk/fdisk.c:1301
+#, fuzzy, c-format
+msgid "Warning: partition %d overlaps partition %d.\n"
+msgstr "Schrijf nu de partitietabel naar schijf..."
+
+#: fdisk/fdisk.c:1319
+#, fuzzy, c-format
+msgid "Warning: partition %d is empty\n"
+msgstr "Schrijf nu de partitietabel naar schijf..."
+
+#: fdisk/fdisk.c:1324
+#, c-format
+msgid "Logical partition %d not entirely in partition %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1330
+#, c-format
+msgid "Total allocated sectors %d greater than the maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1333
+#, c-format
+msgid "%d unallocated sectors\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1345 fdisk/fdisksgilabel.c:684 fdisk/fdisksunlabel.c:479
+#, c-format
+msgid "Partition %d is already defined. Delete it before re-adding it.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1366 fdisk/fdiskbsdlabel.c:252 fdisk/fdisksgilabel.c:706
+#: fdisk/fdisksunlabel.c:494
+#, c-format
+msgid "First %s"
+msgstr ""
+
+#: fdisk/fdisk.c:1381 fdisk/fdisksunlabel.c:519
+#, c-format
+msgid "Sector %d is already allocated\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1407
+msgid "No free sectors available\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1417 fdisk/fdiskbsdlabel.c:256 fdisk/fdisksunlabel.c:529
+#, c-format
+msgid "Last %s or +size or +sizeM or +sizeK"
+msgstr ""
+
+#: fdisk/fdisk.c:1447
+#, fuzzy, c-format
+msgid "Warning: partition %d has an odd number of sectors.\n"
+msgstr "Partitie eindigt voorbij het einde van de schijf"
+
+#: fdisk/fdisk.c:1484 fdisk/fdiskbsdlabel.c:590
+msgid "The maximum number of partitions has been created\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1494
+msgid "You must delete some partition and add an extended partition first\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1498
+#, c-format
+msgid ""
+"Command action\n"
+" %s\n"
+" p primary partition (1-4)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1500
+msgid "l logical (5 or over)"
+msgstr ""
+
+#: fdisk/fdisk.c:1500
+msgid "e extended"
+msgstr ""
+
+#: fdisk/fdisk.c:1517
+#, c-format
+msgid "Invalid partition number for type `%c'\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1549
+#, fuzzy
+msgid ""
+"The partition table has been altered!\n"
+"\n"
+msgstr "Partitietabel is weggeschreven"
+
+#: fdisk/fdisk.c:1551
+#, fuzzy
+msgid "Calling ioctl() to re-read partition table.\n"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdisk.c:1568
+msgid "Syncing disks.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1573
+#, fuzzy, c-format
+msgid ""
+"Re-read table failed with error %d: %s.\n"
+"Reboot your system to ensure the partition table is updated.\n"
+msgstr ""
+"Herstart het systeem om er zeker van te zijn dat de partitietabel correct "
+"aangepast is\n"
+
+#: fdisk/fdisk.c:1579
+#, fuzzy
+msgid ""
+"\n"
+"WARNING: If you have created or modified any DOS 6.x\n"
+"partitions, please see the fdisk manual page for additional\n"
+"information.\n"
+msgstr ""
+"\n"
+"WAARSCHUWING: Mocht U DOS 6.x partities hebben aangemaakt of gewijzigd,\n"
+"lees dan de cfdisk man pagina - vaak is nog een dd commando nodig.\n"
+
+#: fdisk/fdisk.c:1610
+#, fuzzy, c-format
+msgid "Device: %s\n"
+msgstr "Schijf: %s\n"
+
+#: fdisk/fdisk.c:1625
+#, fuzzy, c-format
+msgid "Partition %d has no data area\n"
+msgstr "Partitie eindigt voor sector 0"
+
+#: fdisk/fdisk.c:1631
+msgid "New beginning of data"
+msgstr ""
+
+#: fdisk/fdisk.c:1645
+msgid "Expert command (m for help): "
+msgstr ""
+
+#: fdisk/fdisk.c:1656
+#, fuzzy
+msgid "Number of cylinders"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdisk.c:1677
+msgid "Number of heads"
+msgstr ""
+
+#: fdisk/fdisk.c:1702
+#, fuzzy
+msgid "Number of sectors"
+msgstr " sectoren"
+
+#: fdisk/fdisk.c:1705
+msgid "Warning: setting sector offset for DOS compatiblity\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1767
+#, c-format
+msgid "Disk %s doesn't contain a valid partition table\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1781
+#, fuzzy, c-format
+msgid "Cannot open %s\n"
+msgstr "Kan het bestand '%s' niet openen"
+
+#: fdisk/fdisk.c:1836
+msgid "This kernel finds the sector size itself - -b option ignored\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1839
+msgid ""
+"Warning: the -b (set sector size) option should be used with one specified "
+"device\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1947
+#, fuzzy, c-format
+msgid "Using %s as default device!\n"
+msgstr "%s: dit apparaat is geen floppy\n"
+
+#: fdisk/fdisk.c:1953
+msgid "Command (m for help): "
+msgstr ""
+
+#: fdisk/fdisk.c:1967
+#, c-format
+msgid ""
+"\n"
+"The current boot file is: %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1969
+msgid "Please enter the name of the new boot file: "
+msgstr ""
+
+#: fdisk/fdisk.c:1971
+#, fuzzy
+msgid "Boot file unchanged\n"
+msgstr "De schijfinhoud is gewijzigd.\n"
+
+#: fdisk/fdisk.c:2031
+msgid ""
+"\n"
+"\tSorry, no experts menu for SGI partition tables available.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdiskaixlabel.c:29
+msgid ""
+"\n"
+"\tThere is a valid AIX label on this disk.\n"
+"\tUnfortunately Linux cannot handle these\n"
+"\tdisks at the moment. Nevertheless some\n"
+"\tadvice:\n"
+"\t1. fdisk will destroy its contents on write.\n"
+"\t2. Be sure that this disk is NOT a still vital\n"
+"\t part of a volume group. (Otherwise you may\n"
+"\t erase the other disks as well, if unmirrored.)\n"
+"\t3. Before deleting this physical volume be sure\n"
+"\t to remove the disk logically from your AIX\n"
+"\t machine. (Otherwise you become an AIXpert)."
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:97
+#, c-format
+msgid ""
+"\n"
+"BSD label for device: %s\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:106
+#, fuzzy
+msgid " d delete a BSD partition"
+msgstr " d Verwijder de huidige partitie"
+
+#: fdisk/fdiskbsdlabel.c:107
+msgid " e edit drive data"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:108
+msgid " i install bootstrap"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:109
+msgid " l list known filesystem types"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:111
+#, fuzzy
+msgid " n add a new BSD partition"
+msgstr "Maak een nieuwe primaire partitie"
+
+#: fdisk/fdiskbsdlabel.c:112
+#, fuzzy
+msgid " p print BSD partition table"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/fdiskbsdlabel.c:117
+msgid " s show complete disklabel"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:118
+msgid " t change a partition's filesystem id"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:119
+msgid " w write disklabel to disk"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:121
+msgid " x link BSD partition to non-BSD partition"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:146
+#, fuzzy, c-format
+msgid "Partition %s%d has invalid starting sector 0.\n"
+msgstr "Partitie eindigt voor sector 0"
+
+#: fdisk/fdiskbsdlabel.c:150
+#, c-format
+msgid "Reading disklabel of %s%d at sector %d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:159
+#, fuzzy, c-format
+msgid "There is no *BSD partition on %s.\n"
+msgstr "Heb de partitietabel niet naar schijf geschreven"
+
+#: fdisk/fdiskbsdlabel.c:174
+msgid "BSD disklabel command (m for help): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:286
+#, c-format
+msgid "type: %s\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:288
+#, c-format
+msgid "type: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:289
+#, fuzzy, c-format
+msgid "disk: %.*s\n"
+msgstr "Schijf: %s\n"
+
+#: fdisk/fdiskbsdlabel.c:290
+#, c-format
+msgid "label: %.*s\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:291
+#, fuzzy
+msgid "flags:"
+msgstr "Vlaggen"
+
+#: fdisk/fdiskbsdlabel.c:293
+#, fuzzy
+msgid " removable"
+msgstr "Startbaar"
+
+#: fdisk/fdiskbsdlabel.c:295
+msgid " ecc"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:297
+msgid " badsect"
+msgstr ""
+
+#. On various machines the fields of *lp are short/int/long
+#. In order to avoid problems, we cast them all to long.
+#: fdisk/fdiskbsdlabel.c:301
+#, c-format
+msgid "bytes/sector: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:302
+#, c-format
+msgid "sectors/track: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:303
+#, c-format
+msgid "tracks/cylinder: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:304
+#, c-format
+msgid "sectors/cylinder: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:305
+#, fuzzy, c-format
+msgid "cylinders: %ld\n"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdiskbsdlabel.c:306
+#, c-format
+msgid "rpm: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:307
+#, c-format
+msgid "interleave: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:308
+#, c-format
+msgid "trackskew: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:309
+#, fuzzy, c-format
+msgid "cylinderskew: %d\n"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdiskbsdlabel.c:310
+#, c-format
+msgid "headswitch: %ld\t\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:311
+#, c-format
+msgid "track-to-track seek: %ld\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:312
+msgid "drivedata: "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:321
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%d partitions:\n"
+msgstr "Maak geen partitie"
+
+#: fdisk/fdiskbsdlabel.c:322
+msgid "# size offset fstype [fsize bsize cpg]\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:378
+#, fuzzy, c-format
+msgid "Writing disklabel to %s%d.\n"
+msgstr "Partitietabel voor %s\n"
+
+#: fdisk/fdiskbsdlabel.c:381
+#, fuzzy, c-format
+msgid "Writing disklabel to %s.\n"
+msgstr "Partitietabel voor %s\n"
+
+#: fdisk/fdiskbsdlabel.c:392
+#, c-format
+msgid "%s%d contains no disklabel.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:395
+#, c-format
+msgid "%s contains no disklabel.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:399
+msgid "Do you want to create a disklabel? (y/n) "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:438
+#, fuzzy
+msgid "bytes/sector"
+msgstr "Sectoren"
+
+#: fdisk/fdiskbsdlabel.c:439
+#, fuzzy
+msgid "sectors/track"
+msgstr "Sectoren"
+
+#: fdisk/fdiskbsdlabel.c:440
+#, fuzzy
+msgid "tracks/cylinder"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdiskbsdlabel.c:448
+#, fuzzy
+msgid "sectors/cylinder"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdiskbsdlabel.c:452
+msgid "Must be <= sectors/track * tracks/cylinder (default).\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:454
+msgid "rpm"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:455
+msgid "interleave"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:456
+msgid "trackskew"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:457
+#, fuzzy
+msgid "cylinderskew"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdiskbsdlabel.c:458
+msgid "headswitch"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:459
+msgid "track-to-track seek"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:500
+#, c-format
+msgid "Bootstrap: %sboot -> boot%s (%s): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:526
+msgid "Bootstrap overlaps with disk label!\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:547
+#, c-format
+msgid "Bootstrap installed on %s%d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:549
+#, c-format
+msgid "Bootstrap installed on %s.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:570
+#, c-format
+msgid "Partition (a-%c): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:601
+#, fuzzy
+msgid "This partition already exists.\n"
+msgstr "Partitietabel is weggeschreven"
+
+#: fdisk/fdiskbsdlabel.c:723
+#, fuzzy, c-format
+msgid "Warning: too many partitions (%d, maximum is %d).\n"
+msgstr "Schrijf nu de partitietabel naar schijf..."
+
+#: fdisk/fdiskbsdlabel.c:769
+msgid ""
+"\n"
+"Syncing disks.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:56
+msgid "SGI volhdr"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:57
+msgid "SGI trkrepl"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:58
+msgid "SGI secrepl"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:59
+msgid "SGI raw"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:60
+msgid "SGI bsd"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:61
+msgid "SGI sysv"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:62
+msgid "SGI volume"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:63
+msgid "SGI efs"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:64
+msgid "SGI lvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:65
+msgid "SGI rlvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:66
+msgid "SGI xfs"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:67
+msgid "SGI xlvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:68
+msgid "SGI rxlvol"
+msgstr ""
+
+#. Minix 1.4b and later
+#: fdisk/fdisksgilabel.c:69 fdisk/fdisksunlabel.c:52 fdisk/i386_sys_types.c:52
+msgid "Linux swap"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:70 fdisk/fdisksunlabel.c:53
+msgid "Linux native"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:143
+msgid ""
+"According to MIPS Computer Systems, Inc the Label must not contain more than "
+"512 bytes\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:162
+msgid "Detected sgi disklabel with wrong checksum.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:186
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors\n"
+"%d cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:199
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:205
+#, c-format
+msgid ""
+"----- partitions -----\n"
+"%*s Info Start End Sectors Id System\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:227
+#, c-format
+msgid ""
+"----- bootinfo -----\n"
+"Bootfile: %s\n"
+"----- directory entries -----\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:237
+#, c-format
+msgid "%2d: %-10s sector%5u size%8u\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:298
+msgid ""
+"\n"
+"Invalid Bootfile!\n"
+"\tThe bootfile must be an absolute non-zero pathname,\n"
+"\te.g. \"/unix\" or \"/unix.save\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:305
+msgid ""
+"\n"
+"\tName of Bootfile too long: 16 bytes maximum.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:310
+msgid ""
+"\n"
+"\tBootfile must have a fully qualified pathname.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:315
+msgid ""
+"\n"
+"\tBe aware, that the bootfile is not checked for existence.\n"
+"\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:343
+#, c-format
+msgid ""
+"\n"
+"\tBootfile is changed to \"%s\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:448
+msgid "More than one entire disk entry present.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:456 fdisk/fdisksunlabel.c:455
+#, fuzzy
+msgid "No partitions defined\n"
+msgstr "Maak geen partitie"
+
+#: fdisk/fdisksgilabel.c:463
+msgid "IRIX likes when Partition 11 covers the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:465
+#, c-format
+msgid ""
+"The entire disk partition should start at block 0,\n"
+"not at diskblock %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:469
+#, c-format
+msgid ""
+"The entire disk partition is only %d diskblock large,\n"
+"but the disk is %d diskblocks long.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:476
+msgid "One Partition (#11) should cover the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:488
+#, fuzzy, c-format
+msgid "Partition %d does not start on cylinder boundary.\n"
+msgstr "Partitie eindigt voor sector 0"
+
+#: fdisk/fdisksgilabel.c:495
+#, c-format
+msgid "Partition %d does not end on cylinder boundary.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:503
+#, c-format
+msgid "The Partition %d and %d overlap by %d sectors.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:512 fdisk/fdisksgilabel.c:532
+#, c-format
+msgid "Unused gap of %8d sectors - sectors %8d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:545
+#, fuzzy
+msgid ""
+"\n"
+"The boot partition does not exist.\n"
+msgstr "Partitietabel is weggeschreven"
+
+#: fdisk/fdisksgilabel.c:549
+#, fuzzy
+msgid ""
+"\n"
+"The swap partition does not exist.\n"
+msgstr "Partitietabel is weggeschreven"
+
+#: fdisk/fdisksgilabel.c:554
+msgid ""
+"\n"
+"The swap partition has no swap type.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:558
+msgid "\tYou have chosen an unusual boot file name.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:569
+msgid "Sorry You may change the Tag of non-empty partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:576
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is of type \"SGI volhdr\", the IRIX system will rely on it to\n"
+"retrieve from its directory standalone tools like sash and fx.\n"
+"Only the \"SGI volume\" entire disk section may violate this.\n"
+"Type YES if you are sure about tagging this partition differently.\n"
+msgstr ""
+
+#. rebuild freelist
+#: fdisk/fdisksgilabel.c:621
+msgid "Do You know, You got a partition overlap on the disk?\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:691
+msgid "Attempting to generate entire disk entry automatically.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:698
+msgid "The entire disk is already covered with partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:703
+msgid "You got a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:712 fdisk/fdisksgilabel.c:741
+msgid ""
+"It is highly recommended that eleventh partition\n"
+"covers the entire disk and is of type `SGI volume'\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:728
+msgid "You will get a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:733
+#, c-format
+msgid " Last %s"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:756
+msgid ""
+"Building a new SGI disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content will be unrecoverable lost.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:784
+#, c-format
+msgid "Trying to keep parameters of partition %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:786
+#, c-format
+msgid "ID=%02x\tSTART=%d\tLENGTH=%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:43 fdisk/i386_sys_types.c:6
+msgid "Empty"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:45
+msgid "SunOS root"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:46
+msgid "SunOS swap"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:47
+msgid "SunOS usr"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:48
+msgid "Whole disk"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:49
+msgid "SunOS stand"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:50
+msgid "SunOS var"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:51
+msgid "SunOS home"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:122
+msgid ""
+"Detected sun disklabel with wrong checksum.\n"
+"Probably you'll have to set all the values,\n"
+"e.g. heads, sectors, cylinders and partitions\n"
+"or force a fresh label (s command in main menu)\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:215
+#, c-format
+msgid "Autoconfigure found a %s%s%s\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:242
+msgid ""
+"Building a new sun disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:253
+msgid ""
+"Drive type\n"
+" ? auto configure\n"
+" 0 custom (with hardware detected defaults)"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:263
+msgid "Select type (? for auto, 0 for custom): "
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:275
+msgid "Autoconfigure failed.\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:303
+#, fuzzy
+msgid "Sectors/track"
+msgstr "Sectoren"
+
+#: fdisk/fdisksunlabel.c:310
+#, fuzzy
+msgid "Alternate cylinders"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdisksunlabel.c:313
+#, fuzzy
+msgid "Physical cylinders"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdisksunlabel.c:316 fdisk/fdisksunlabel.c:679
+msgid "Rotation speed (rpm)"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:318 fdisk/fdisksunlabel.c:672
+msgid "Interleave factor"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:321 fdisk/fdisksunlabel.c:665
+#, fuzzy
+msgid "Extra sectors per cylinder"
+msgstr "%ld inodes\n"
+
+#: fdisk/fdisksunlabel.c:334
+msgid "You may change all the disk params from the x menu"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+msgid "3,5\" floppy"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+msgid "Linux custom"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:418
+#, c-format
+msgid "Partition %d doesn't end on cylinder boundary\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:438
+#, fuzzy, c-format
+msgid "Partition %d overlaps with others in sectors %d-%d\n"
+msgstr "Partitie eindigt voor sector 0"
+
+#: fdisk/fdisksunlabel.c:460
+#, c-format
+msgid "Unused gap - sectors 0-%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:462 fdisk/fdisksunlabel.c:466
+#, c-format
+msgid "Unused gap - sectors %d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:489
+msgid ""
+"Other partitions already cover the whole disk.\n"
+"Delete some/shrink them before retry.\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:547
+#, c-format
+msgid ""
+"You haven't covered whole disk with 3rd partition, but your value\n"
+"%d %s covers some other partition. Your entry have been changed\n"
+"to %d %s\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:565
+#, c-format
+msgid ""
+"If you want to maintain SunOS/Solaris compatibility, consider leaving this\n"
+"partition as Whole disk (5), starting at 0, with %u sectors\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:578
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n"
+"there may destroy your partition table and bootblock.\n"
+"Type YES if you're very sure you would like that partition\n"
+"tagged with 82 (Linux swap): "
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:609
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n"
+"%d cylinders, %d alternate cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:623
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:628
+#, c-format
+msgid "%*s Flag Start End Blocks Id System\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:653
+msgid "Number of alternate cylinders"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:686
+msgid "Number of physical cylinders"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:7
+msgid "FAT12"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:8
+msgid "XENIX root"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:9
+msgid "XENIX usr"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:10
+msgid "FAT16 <32M"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:11
+msgid "Extended"
+msgstr ""
+
+#. DOS 3.3+ extended partition
+#: fdisk/i386_sys_types.c:12
+msgid "FAT16"
+msgstr ""
+
+#. DOS 16-bit >=32M
+#: fdisk/i386_sys_types.c:13
+msgid "HPFS/NTFS"
+msgstr ""
+
+#. OS/2 IFS, eg, HPFS or NTFS or QNX
+#: fdisk/i386_sys_types.c:14
+msgid "AIX"
+msgstr ""
+
+#. AIX boot (AIX -- PS/2 port) or SplitDrive
+#: fdisk/i386_sys_types.c:15
+#, fuzzy
+msgid "AIX bootable"
+msgstr "Startbaar"
+
+#. AIX data or Coherent
+#: fdisk/i386_sys_types.c:16
+msgid "OS/2 Boot Manager"
+msgstr ""
+
+#. OS/2 Boot Manager
+#: fdisk/i386_sys_types.c:17
+msgid "Win95 FAT32"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:18
+msgid "Win95 FAT32 (LBA)"
+msgstr ""
+
+#. LBA really is `Extended Int 13h'
+#: fdisk/i386_sys_types.c:19
+msgid "Win95 FAT16 (LBA)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:20
+msgid "Win95 Ext'd (LBA)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:21
+msgid "OPUS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:22
+msgid "Hidden FAT12"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:23
+msgid "Compaq diagnostics"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:24
+msgid "Hidden FAT16 <32M"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:25
+msgid "Hidden FAT16"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:26
+msgid "Hidden HPFS/NTFS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:27
+msgid "AST Windows swapfile"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:28
+msgid "NEC DOS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:29
+#, fuzzy
+msgid "PartitionMagic recovery"
+msgstr "Partitie begint voor sector 0"
+
+#: fdisk/i386_sys_types.c:30
+msgid "Venix 80286"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:31
+msgid "PPC PReP Boot"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:32
+msgid "SFS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:33
+msgid "QNX4.x"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:34
+msgid "QNX4.x 2nd part"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:35
+msgid "QNX4.x 3rd part"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:36
+msgid "OnTrack DM"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:37
+msgid "OnTrack DM6 Aux1"
+msgstr ""
+
+#. (or Novell)
+#: fdisk/i386_sys_types.c:38
+msgid "CP/M"
+msgstr ""
+
+#. CP/M or Microport SysV/AT
+#: fdisk/i386_sys_types.c:39
+msgid "OnTrack DM6 Aux3"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:40
+msgid "OnTrackDM6"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:41
+msgid "EZ-Drive"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:42
+msgid "Golden Bow"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:43
+msgid "Priam Edisk"
+msgstr ""
+
+#. DOS R/O or SpeedStor
+#: fdisk/i386_sys_types.c:44 fdisk/i386_sys_types.c:73
+#: fdisk/i386_sys_types.c:75 fdisk/i386_sys_types.c:76
+#, fuzzy
+msgid "SpeedStor"
+msgstr "Sectoren"
+
+#: fdisk/i386_sys_types.c:45
+msgid "GNU HURD or SysV"
+msgstr ""
+
+#. GNU HURD or Mach or Sys V/386 (such as ISC UNIX)
+#: fdisk/i386_sys_types.c:46
+msgid "Novell Netware 286"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:47
+msgid "Novell Netware 386"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:48
+msgid "DiskSecure Multi-Boot"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:49
+msgid "PC/IX"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:50
+msgid "Old Minix"
+msgstr ""
+
+#. Minix 1.4a and earlier
+#: fdisk/i386_sys_types.c:51
+msgid "Minix / old Linux"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:54
+msgid "OS/2 hidden C: drive"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:55
+msgid "Linux extended"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:56 fdisk/i386_sys_types.c:57
+msgid "NTFS volume set"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:58
+msgid "Amoeba"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:59
+msgid "Amoeba BBT"
+msgstr ""
+
+#. (bad block table)
+#: fdisk/i386_sys_types.c:60
+msgid "IBM Thinkpad hibernation"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:61
+msgid "BSD/386"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:62
+msgid "OpenBSD"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:63
+msgid "NeXTSTEP"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:64
+msgid "BSDI fs"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:65
+msgid "BSDI swap"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:66
+msgid "DRDOS/sec (FAT-12)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:67
+msgid "DRDOS/sec (FAT-16 < 32M)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:68
+msgid "DRDOS/sec (FAT-16)"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:69
+msgid "Syrinx"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:70
+msgid "CP/M / CTOS / ..."
+msgstr ""
+
+#. CP/M or Concurrent CP/M or Concurrent DOS or CTOS
+#: fdisk/i386_sys_types.c:71
+msgid "DOS access"
+msgstr ""
+
+#. DOS access or SpeedStor 12-bit FAT extended partition
+#: fdisk/i386_sys_types.c:72
+msgid "DOS R/O"
+msgstr ""
+
+#. SpeedStor 16-bit FAT extended partition < 1024 cyl.
+#: fdisk/i386_sys_types.c:74
+msgid "BeOS fs"
+msgstr ""
+
+#. SpeedStor large partition
+#: fdisk/i386_sys_types.c:77
+msgid "DOS secondary"
+msgstr ""
+
+#. DOS 3.3+ secondary
+#: fdisk/i386_sys_types.c:78
+msgid "LANstep"
+msgstr ""
+
+#. SpeedStor >1024 cyl. or LANstep
+#: fdisk/i386_sys_types.c:79
+msgid "BBT"
+msgstr ""
+
+#: fdisk/sfdisk.c:148
+#, c-format
+msgid "seek error on %s - cannot seek to %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:153
+#, c-format
+msgid "seek error: wanted 0x%08x%08x, got 0x%08x%08x\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:199
+msgid "out of memory - giving up\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:203 fdisk/sfdisk.c:286
+#, c-format
+msgid "read error on %s - cannot read sector %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:219
+#, c-format
+msgid "ERROR: sector %lu does not have an msdos signature\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:236
+#, c-format
+msgid "write error on %s - cannot write sector %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:274
+#, c-format
+msgid "cannot open partition sector save file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:292
+#, c-format
+msgid "write error on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:310
+#, c-format
+msgid "cannot stat partition restore file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:315
+msgid "partition restore file has wrong size - not restoring\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:319
+msgid "out of memory?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:325
+#, c-format
+msgid "cannot open partition restore file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:331
+#, c-format
+msgid "error reading %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:338
+#, fuzzy, c-format
+msgid "cannot open device %s for writing\n"
+msgstr "Kan schijf niet openen"
+
+#: fdisk/sfdisk.c:350
+#, c-format
+msgid "error writing sector %lu on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:407
+#, c-format
+msgid ""
+"Warning: start=%d - this looks like a partition rather than\n"
+"the entire disk. Using fdisk on it is probably meaningless.\n"
+"[Use the --force option if you really want this]\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:413
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d heads\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:416
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d sectors\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:419
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d cylinders\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:423
+#, c-format
+msgid "Disk %s: cannot get geometry\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:425
+#, c-format
+msgid ""
+"Warning: unlikely number of sectors (%d) - usually at most 63\n"
+"This will give problems with all software that uses C/H/S addressing.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:429
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %lu heads, %lu sectors, %lu cylinders\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:509
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for head: %d (should be in 0-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:514
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for sector: %d (should be in 1-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:519
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for cylinders: %d (should be in "
+"0-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:558
+msgid ""
+"Id Name\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:703
+#, fuzzy
+msgid "Re-reading the partition table ...\n"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/sfdisk.c:709
+msgid ""
+"The command to re-read the partition table failed\n"
+"Reboot your system now, before using mkfs\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:714
+#, c-format
+msgid "Error closing %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:752
+#, fuzzy, c-format
+msgid "%s: no such partition\n"
+msgstr "Slechte logische partitie"
+
+#: fdisk/sfdisk.c:775
+msgid "unrecognized format - using sectors\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:813
+#, fuzzy, c-format
+msgid "# partition table of %s\n"
+msgstr "Partitietabel voor %s\n"
+
+#: fdisk/sfdisk.c:814
+msgid ""
+"unit: sectors\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:824
+#, c-format
+msgid "unimplemented format - using %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:828
+#, c-format
+msgid ""
+"Units = cylinders of %lu bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:831
+msgid " Device Boot Start End #cyls #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:836
+#, c-format
+msgid ""
+"Units = sectors of 512 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:838
+msgid " Device Boot Start End #sectors Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:841
+#, c-format
+msgid ""
+"Units = blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:843
+msgid " Device Boot Start End #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:846
+#, c-format
+msgid ""
+"Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:848
+msgid " Device Boot Start End MB #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:903
+#, c-format
+msgid " start=%9lu"
+msgstr ""
+
+#: fdisk/sfdisk.c:904
+#, c-format
+msgid ", size=%8lu"
+msgstr ""
+
+#: fdisk/sfdisk.c:906
+#, c-format
+msgid ", Id=%2x"
+msgstr ""
+
+#: fdisk/sfdisk.c:908
+#, fuzzy
+msgid ", bootable"
+msgstr "Startbaar"
+
+#: fdisk/sfdisk.c:969
+#, c-format
+msgid "\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:976
+#, c-format
+msgid "\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:979
+#, c-format
+msgid "partition ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:989
+msgid "No partitions found\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1034
+#, fuzzy
+msgid "no partition table present.\n"
+msgstr "Partitietabel is weggeschreven"
+
+#: fdisk/sfdisk.c:1036
+#, c-format
+msgid "strange, only %d partitions defined.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1045
+#, c-format
+msgid "Warning: partition %s has size 0 but is not marked Empty\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1048
+#, c-format
+msgid "Warning: partition %s has size 0 and is bootable\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1051
+#, c-format
+msgid "Warning: partition %s has size 0 and nonzero start\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1062
+#, fuzzy, c-format
+msgid "Warning: partition %s "
+msgstr "Schrijf nu de partitietabel naar schijf..."
+
+#: fdisk/sfdisk.c:1063
+#, c-format
+msgid "is not contained in partition %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1074
+#, c-format
+msgid "Warning: partitions %s "
+msgstr ""
+
+#: fdisk/sfdisk.c:1075
+#, c-format
+msgid "and %s overlap\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1086
+#, fuzzy, c-format
+msgid "Warning: partition %s contains part of "
+msgstr "Schrijf nu de partitietabel naar schijf..."
+
+#: fdisk/sfdisk.c:1087
+#, fuzzy, c-format
+msgid "the partition table (sector %lu),\n"
+msgstr "Partitietabel is weggeschreven"
+
+#: fdisk/sfdisk.c:1088
+msgid "and will destroy it when filled\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1097
+#, c-format
+msgid "Warning: partition %s starts at sector 0\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1101
+#, fuzzy, c-format
+msgid "Warning: partition %s extends past end of disk\n"
+msgstr "Partitie eindigt voorbij het einde van de schijf"
+
+#: fdisk/sfdisk.c:1115
+msgid "Among the primary partitions, at most one can be extended\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1116
+msgid " (although this is not a problem under Linux)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1133
+#, c-format
+msgid "Warning: partition %s does not start at a cylinder boundary\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1139
+#, c-format
+msgid "Warning: partition %s does not end at a cylinder boundary\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1157
+msgid ""
+"Warning: more than one primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1164
+msgid ""
+"Warning: usually one can boot from primary partitions only\n"
+"LILO disregards the `bootable' flag.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1170
+msgid ""
+"Warning: no primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1187
+#, c-format
+msgid ""
+"partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1196
+#, c-format
+msgid "partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1199
+#, c-format
+msgid "partition %s ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1232 fdisk/sfdisk.c:1309
+#, c-format
+msgid "too many partitions - ignoring those past nr (%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1247
+#, fuzzy
+msgid "tree of partitions?\n"
+msgstr "Maak geen partitie"
+
+#: fdisk/sfdisk.c:1351
+msgid "detected Disk Manager - unable to handle that\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1358
+msgid "DM6 signature found - giving up\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1378
+msgid "strange..., an extended partition of size 0?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1385
+msgid "strange..., a BSD partition of size 0?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1417
+#, c-format
+msgid " %s: unrecognized partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1429
+msgid "-n flag was given: Nothing changed\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1442
+msgid "Failed saving the old sectors - aborting\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1447
+#, fuzzy, c-format
+msgid "Failed writing the partition on %s\n"
+msgstr "Heb de partitietabel niet naar schijf geschreven"
+
+#: fdisk/sfdisk.c:1524
+msgid "long or incomplete input line - quitting\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1560
+#, c-format
+msgid "input error: `=' expected after %s field\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1567
+#, c-format
+msgid "input error: unexpected character %c after %s field\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1573
+#, c-format
+msgid "unrecognized input: %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1605
+msgid "number too big\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1609
+msgid "trailing junk after number\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1725
+msgid "no room for partition descriptor\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1758
+msgid "cannot build surrounding extended partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1809
+msgid "too many input fields\n"
+msgstr ""
+
+#. no free blocks left - don't read any further
+#: fdisk/sfdisk.c:1843
+msgid "No room for more\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1862
+#, fuzzy
+msgid "Illegal type\n"
+msgstr "Niet herkende toets"
+
+#: fdisk/sfdisk.c:1894
+#, c-format
+msgid "Warning: exceeds max allowable size (%lu)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1899
+#, fuzzy
+msgid "Warning: empty partition\n"
+msgstr "Slechte primaire partitie"
+
+#: fdisk/sfdisk.c:1913
+#, c-format
+msgid "Warning: bad partition start (earliest %lu)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1926
+msgid "unrecognized bootable flag - choose - or *\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1943 fdisk/sfdisk.c:1956
+msgid "partial c,h,s specification?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1967
+#, fuzzy
+msgid "Extended partition not where expected\n"
+msgstr "Zet de partitie aan het eind van de vrije ruimte"
+
+#: fdisk/sfdisk.c:1999
+msgid "bad input\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2021
+#, fuzzy
+msgid "too many partitions\n"
+msgstr "Slechte primaire partitie"
+
+#: fdisk/sfdisk.c:2054
+msgid ""
+"Input in the following format; absent fields get a default value.\n"
+"<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+"Usually you only need to specify <start> and <size> (and perhaps <type>).\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2074
+msgid "version"
+msgstr ""
+
+#: fdisk/sfdisk.c:2080
+#, fuzzy, c-format
+msgid "Usage: %s [options] device ...\n"
+msgstr "aanroep: %s [ -n ] apparaat\n"
+
+#: fdisk/sfdisk.c:2081
+msgid "device: something like /dev/hda or /dev/sda"
+msgstr ""
+
+#: fdisk/sfdisk.c:2082
+msgid "useful options:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2083
+msgid " -s [or --show-size]: list size of a partition"
+msgstr ""
+
+#: fdisk/sfdisk.c:2084
+msgid " -c [or --id]: print or change partition Id"
+msgstr ""
+
+#: fdisk/sfdisk.c:2085
+msgid " -l [or --list]: list partitions of each device"
+msgstr ""
+
+#: fdisk/sfdisk.c:2086
+msgid " -d [or --dump]: idem, but in a format suitable for later input"
+msgstr ""
+
+#: fdisk/sfdisk.c:2087
+msgid " -i [or --increment]: number cylinders etc. from 1 instead of from 0"
+msgstr ""
+
+#: fdisk/sfdisk.c:2088
+msgid ""
+" -uS, -uB, -uC, -uM: accept/report in units of "
+"sectors/blocks/cylinders/MB"
+msgstr ""
+
+#: fdisk/sfdisk.c:2089
+msgid " -T [or --list-types]:list the known partition types"
+msgstr ""
+
+#: fdisk/sfdisk.c:2090
+msgid " -D [or --DOS]: for DOS-compatibility: waste a little space"
+msgstr ""
+
+#: fdisk/sfdisk.c:2091
+msgid " -R [or --re-read]: make kernel reread partition table"
+msgstr ""
+
+#: fdisk/sfdisk.c:2092
+msgid " -N# : change only the partition with number #"
+msgstr ""
+
+#: fdisk/sfdisk.c:2093
+msgid " -n : do not actually write to disk"
+msgstr ""
+
+#: fdisk/sfdisk.c:2094
+msgid ""
+" -O file : save the sectors that will be overwritten to file"
+msgstr ""
+
+#: fdisk/sfdisk.c:2095
+msgid " -I file : restore these sectors again"
+msgstr ""
+
+#: fdisk/sfdisk.c:2096
+msgid " -v [or --version]: print version"
+msgstr ""
+
+#: fdisk/sfdisk.c:2097
+msgid " -? [or --help]: print this message"
+msgstr ""
+
+#: fdisk/sfdisk.c:2098
+msgid "dangerous options:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2099
+msgid " -g [or --show-geometry]: print the kernel's idea of the geometry"
+msgstr ""
+
+#: fdisk/sfdisk.c:2100
+msgid ""
+" -x [or --show-extended]: also list extended partitions on output\n"
+" or expect descriptors for them on input"
+msgstr ""
+
+#: fdisk/sfdisk.c:2102
+msgid ""
+" -L [or --Linux]: do not complain about things irrelevant for Linux"
+msgstr ""
+
+#: fdisk/sfdisk.c:2103
+msgid " -q [or --quiet]: suppress warning messages"
+msgstr ""
+
+#: fdisk/sfdisk.c:2104
+msgid " You can override the detected geometry using:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2105
+msgid " -C# [or --cylinders #]:set the number of cylinders to use"
+msgstr ""
+
+#: fdisk/sfdisk.c:2106
+msgid " -H# [or --heads #]: set the number of heads to use"
+msgstr ""
+
+#: fdisk/sfdisk.c:2107
+msgid " -S# [or --sectors #]: set the number of sectors to use"
+msgstr ""
+
+#: fdisk/sfdisk.c:2108
+msgid "You can disable all consistency checking with:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2109
+msgid " -f [or --force]: do what I say, even if it is stupid"
+msgstr ""
+
+#: fdisk/sfdisk.c:2115
+msgid "Usage:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2116
+#, c-format
+msgid "%s device\t\t list active partitions on device\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2117
+#, c-format
+msgid "%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2118
+#, c-format
+msgid "%s -An device\t activate partition n, inactivate the other ones\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2237
+msgid "no command?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2360
+#, fuzzy, c-format
+msgid "total: %d blocks\n"
+msgstr "%ld blokken\n"
+
+#: fdisk/sfdisk.c:2397
+msgid "usage: sfdisk --print-id device partition-number\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2399
+msgid "usage: sfdisk --change-id device partition-number Id\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2401
+msgid "usage: sfdisk --id device partition-number [Id]\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2408
+msgid "can specify only one device (except with -l or -s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2433
+#, fuzzy, c-format
+msgid "cannot open %s %s\n"
+msgstr "Kan het bestand '%s' niet openen"
+
+#: fdisk/sfdisk.c:2433
+msgid "read-write"
+msgstr ""
+
+#: fdisk/sfdisk.c:2433
+msgid "for reading"
+msgstr ""
+
+#: fdisk/sfdisk.c:2458
+#, c-format
+msgid "%s: OK\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2475
+#, c-format
+msgid "%s: %d cylinders, %d heads, %d sectors/track\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2478
+#, c-format
+msgid "%s: unknown geometry\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2493
+#, c-format
+msgid "BLKGETSIZE ioctl failed for %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2570
+#, c-format
+msgid "bad active byte: 0x%x instead of 0x80\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2587 fdisk/sfdisk.c:2640 fdisk/sfdisk.c:2670
+msgid ""
+"Done\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2596
+#, c-format
+msgid ""
+"You have %d active primary partitions. This does not matter for LILO,\n"
+"but the DOS MBR will only boot a disk with 1 active partition.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2610
+#, c-format
+msgid "partition %s has id %x and is not hidden\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2666
+#, c-format
+msgid "Bad Id %x\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2681
+msgid "This disk is currently in use.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2698
+#, c-format
+msgid "Fatal error: cannot find %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2701
+#, fuzzy, c-format
+msgid "Warning: %s is not a block device\n"
+msgstr "%s: dit apparaat is geen floppy\n"
+
+#: fdisk/sfdisk.c:2706
+msgid "Checking that no-one is using this disk right now ...\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2708
+msgid ""
+"\n"
+"This disk is currently in use - repartitioning is probably a bad idea.Umount "
+"all file systems, and swapoff all swap partitions on this disk.Use the "
+"--no-reread flag to suppress this check.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2712
+msgid "Use the --force flag to overrule all checks.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2716
+msgid "OK"
+msgstr ""
+
+#: fdisk/sfdisk.c:2725
+msgid "Old situation:\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2729
+#, c-format
+msgid "Partition %d does not exist, cannot change it\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2737
+msgid "New situation:\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2742
+msgid ""
+"I don't like these partitions - nothing changed.\n"
+"(If you really want this, use the --force option.)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2745
+msgid "I don't like this - probably you should answer No\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2750
+msgid "Are you satisfied with this? [ynq] "
+msgstr ""
+
+#: fdisk/sfdisk.c:2752
+msgid "Do you want to write this to disk? [ynq] "
+msgstr ""
+
+#: fdisk/sfdisk.c:2757
+msgid ""
+"\n"
+"sfdisk: premature end of input\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2759
+msgid "Quitting - nothing changed\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2765
+#, fuzzy
+msgid "Please answer one of y,n,q\n"
+msgstr "Antwoord `ja' of `nee'"
+
+#: fdisk/sfdisk.c:2773
+#, fuzzy
+msgid ""
+"Successfully wrote the new partition table\n"
+"\n"
+msgstr "Geef alleen de partitietabel"
+
+#: fdisk/sfdisk.c:2779
+msgid ""
+"If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
+"to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
+"(See fdisk(8).)\n"
+msgstr ""
+
+#: games/banner.c:1051
+msgid "usage: banner [-w width]\n"
+msgstr ""
+
+#: games/banner.c:1071
+msgid "Message: "
+msgstr ""
+
+#: games/banner.c:1105
+#, c-format
+msgid "The character '%c' is not in my character set"
+msgstr ""
+
+#: games/banner.c:1113
+#, c-format
+msgid "Message '%s' is OK\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:229
+msgid "Try `getopt --help' for more information.\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:295
+msgid "empty long option after -l or --long argument"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:315
+msgid "unknown shell after -s or --shell argument"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:320
+msgid "Usage: getopt optstring parameters\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:321
+msgid " getopt [options] [--] optstring parameters\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:322
+msgid " getopt [options] -o|--options optstring [options] [--]\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:323
+msgid " parameters\n"
+msgstr " parameters\n"
+
+#: getopt-1.0.3b/getopt.c:324
+msgid ""
+" -a, --alternative Allow long options starting with single -\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:325
+msgid " -h, --help This small usage guide\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:326
+msgid " -l, --longoptions=longopts Long options to be recognized\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:327
+msgid ""
+" -n, --name=progname The name under which errors are reported\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:328
+msgid " -o, --options=optstring Short options to be recognized\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:329
+msgid " -q, --quiet Disable error reporting by getopt(3)\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:330
+msgid " -Q, --quiet-output No normal output\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:331
+msgid " -s, --shell=shell Set shell quoting conventions\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:332
+msgid " -T, --test Test for getopt(1) version\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:333
+msgid " -V, --version Output version information\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:387 getopt-1.0.3b/getopt.c:445
+msgid "missing optstring argument"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:433
+msgid "getopt (enhanced) 1.0.3\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:439
+msgid "internal error, contact the author."
+msgstr ""
+
+#: login-utils/agetty.c:300
+msgid "calling open_tty\n"
+msgstr ""
+
+#. Initialize the termio settings (raw mode, eight-bit, blocking i/o).
+#: login-utils/agetty.c:313
+msgid "calling termio_init\n"
+msgstr ""
+
+#: login-utils/agetty.c:318
+msgid "writing init string\n"
+msgstr ""
+
+#. Optionally detect the baud rate from the modem status message.
+#: login-utils/agetty.c:328
+msgid "before autobaud\n"
+msgstr ""
+
+#: login-utils/agetty.c:340
+msgid "waiting for cr-lf\n"
+msgstr ""
+
+#: login-utils/agetty.c:344
+#, c-format
+msgid "read %c\n"
+msgstr ""
+
+#. Read the login name.
+#: login-utils/agetty.c:353
+msgid "reading login name\n"
+msgstr ""
+
+#: login-utils/agetty.c:374
+#, c-format
+msgid "%s: can't exec %s: %m"
+msgstr ""
+
+#: login-utils/agetty.c:394
+msgid "can't malloc initstring"
+msgstr ""
+
+#: login-utils/agetty.c:456
+#, c-format
+msgid "bad timeout value: %s"
+msgstr ""
+
+#: login-utils/agetty.c:465
+msgid "after getopt loop\n"
+msgstr ""
+
+#: login-utils/agetty.c:483
+msgid "exiting parseargs\n"
+msgstr ""
+
+#: login-utils/agetty.c:496
+msgid "entered parse_speeds\n"
+msgstr ""
+
+#: login-utils/agetty.c:499
+#, c-format
+msgid "bad speed: %s"
+msgstr ""
+
+#: login-utils/agetty.c:501
+msgid "too many alternate speeds"
+msgstr ""
+
+#: login-utils/agetty.c:503
+msgid "exiting parsespeeds\n"
+msgstr ""
+
+#: login-utils/agetty.c:576
+#, c-format
+msgid "%s: open for update: %m"
+msgstr ""
+
+#: login-utils/agetty.c:592
+#, c-format
+msgid "%s: no utmp entry"
+msgstr ""
+
+#: login-utils/agetty.c:621
+#, c-format
+msgid "/dev: chdir() failed: %m"
+msgstr ""
+
+#: login-utils/agetty.c:625
+#, c-format
+msgid "/dev/%s: not a character device"
+msgstr ""
+
+#. ignore close(2) errors
+#: login-utils/agetty.c:632
+msgid "open(2)\n"
+msgstr ""
+
+#: login-utils/agetty.c:634
+#, c-format
+msgid "/dev/%s: cannot open as standard input: %m"
+msgstr ""
+
+#: login-utils/agetty.c:644
+#, c-format
+msgid "%s: not open for read/write"
+msgstr ""
+
+#. Set up standard output and standard error file descriptors.
+#: login-utils/agetty.c:648
+msgid "duping\n"
+msgstr ""
+
+#. set up stdout and stderr
+#: login-utils/agetty.c:650
+#, c-format
+msgid "%s: dup problem: %m"
+msgstr ""
+
+#: login-utils/agetty.c:712
+msgid "term_io 2\n"
+msgstr ""
+
+#: login-utils/agetty.c:894
+msgid "user"
+msgstr ""
+
+#: login-utils/agetty.c:894
+msgid "users"
+msgstr ""
+
+#: login-utils/agetty.c:982
+#, c-format
+msgid "%s: read: %m"
+msgstr ""
+
+#: login-utils/agetty.c:1028
+#, c-format
+msgid "%s: input overrun"
+msgstr ""
+
+#: login-utils/agetty.c:1152
+#, c-format
+msgid ""
+"Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] "
+"baud_rate,... line [termtype]\n"
+"or\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line "
+"baud_rate,... [termtype]\n"
+msgstr ""
+
+#: login-utils/checktty.c:46
+#, c-format
+msgid "badlogin: %s\n"
+msgstr ""
+
+#: login-utils/checktty.c:52
+#, c-format
+msgid "sleepexit %d\n"
+msgstr ""
+
+#: login-utils/checktty.c:108 login-utils/checktty.c:130
+msgid "login: memory low, login may fail\n"
+msgstr ""
+
+#: login-utils/checktty.c:109
+msgid "can't malloc for ttyclass"
+msgstr ""
+
+#: login-utils/checktty.c:131
+msgid "can't malloc for grplist"
+msgstr ""
+
+#. there was a default rule, but user didn't match, reject!
+#: login-utils/checktty.c:424
+#, c-format
+msgid "Login on %s from %s denied by default.\n"
+msgstr ""
+
+#. if we get here, /etc/usertty exists, there's a line
+#. matching our username, but it doesn't contain the
+#. name of the tty where the user is trying to log in.
+#. So deny access!
+#: login-utils/checktty.c:435
+#, c-format
+msgid "Login on %s from %s denied.\n"
+msgstr ""
+
+#: login-utils/chfn.c:139 login-utils/chsh.c:118
+#, c-format
+msgid "%s: you (user %d) don't exist.\n"
+msgstr ""
+
+#: login-utils/chfn.c:146 login-utils/chsh.c:125
+#, c-format
+msgid "%s: user \"%s\" does not exist.\n"
+msgstr ""
+
+#: login-utils/chfn.c:151 login-utils/chsh.c:130
+#, c-format
+msgid "%s: can only change local entries; use yp%s instead.\n"
+msgstr ""
+
+#: login-utils/chfn.c:163
+#, c-format
+msgid "Changing finger information for %s.\n"
+msgstr ""
+
+#: login-utils/chfn.c:169 login-utils/chfn.c:173 login-utils/chfn.c:180
+#: login-utils/chfn.c:184 login-utils/chsh.c:154 login-utils/chsh.c:158
+#: login-utils/chsh.c:165 login-utils/chsh.c:169
+msgid "Password error."
+msgstr ""
+
+#: login-utils/chfn.c:193 login-utils/chsh.c:178 login-utils/login.c:650
+#: login-utils/newgrp.c:47 login-utils/simpleinit.c:219 mount/lomount.c:196
+#: mount/lomount.c:202 mount/losetup.c:115 mount/losetup.c:121
+msgid "Password: "
+msgstr ""
+
+#: login-utils/chfn.c:196 login-utils/chsh.c:181
+msgid "Incorrect password."
+msgstr ""
+
+#: login-utils/chfn.c:207
+msgid "Finger information not changed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:310
+#, c-format
+msgid "Usage: %s [ -f full-name ] [ -o office ] "
+msgstr ""
+
+#: login-utils/chfn.c:311
+msgid ""
+"[ -p office-phone ]\n"
+"\t[ -h home-phone ] "
+msgstr ""
+
+#: login-utils/chfn.c:312
+msgid "[ --help ] [ --version ]\n"
+msgstr ""
+
+#: login-utils/chfn.c:381 login-utils/chsh.c:294
+msgid ""
+"\n"
+"Aborted.\n"
+msgstr ""
+
+#: login-utils/chfn.c:414
+msgid "field is too long.\n"
+msgstr ""
+
+#: login-utils/chfn.c:422
+#, c-format
+msgid "'%c' is not allowed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:427
+msgid "Control characters are not allowed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:492
+msgid "Finger information *NOT* changed. Try again later.\n"
+msgstr ""
+
+#: login-utils/chfn.c:495
+msgid "Finger information changed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:509 login-utils/chsh.c:412 sys-utils/cytune.c:315
+msgid "malloc failed"
+msgstr ""
+
+#: login-utils/chsh.c:141
+#, c-format
+msgid "%s: Your shell is not in /etc/shells, shell change denied\n"
+msgstr ""
+
+#: login-utils/chsh.c:148
+#, c-format
+msgid "Changing shell for %s.\n"
+msgstr ""
+
+#: login-utils/chsh.c:189
+msgid "New shell"
+msgstr ""
+
+#: login-utils/chsh.c:196
+msgid "Shell not changed.\n"
+msgstr "Shell ongewijzigd.\n"
+
+#: login-utils/chsh.c:203
+msgid "Shell *NOT* changed. Try again later.\n"
+msgstr "Shell *NIET* gewijzigd. Probeer later nog eens.\n"
+
+#: login-utils/chsh.c:206
+msgid "Shell changed.\n"
+msgstr "Shell gewijzigd.\n"
+
+#: login-utils/chsh.c:274
+#, c-format
+msgid "Usage: %s [ -s shell ] "
+msgstr ""
+
+#: login-utils/chsh.c:275
+msgid "[ --list-shells ] [ --help ] [ --version ]\n"
+msgstr ""
+
+#: login-utils/chsh.c:276
+msgid " [ username ]\n"
+msgstr ""
+
+#: login-utils/chsh.c:320
+#, c-format
+msgid "%s: shell must be a full path name.\n"
+msgstr ""
+
+#: login-utils/chsh.c:324
+#, c-format
+msgid "%s: \"%s\" does not exist.\n"
+msgstr ""
+
+#: login-utils/chsh.c:328
+#, c-format
+msgid "%s: \"%s\" is not executable.\n"
+msgstr ""
+
+#: login-utils/chsh.c:335
+#, c-format
+msgid "%s: '%c' is not allowed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:339
+#, c-format
+msgid "%s: Control characters are not allowed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:346
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells\n"
+msgstr ""
+
+#: login-utils/chsh.c:348
+#, c-format
+msgid "%s: \"%s\" is not listed in /etc/shells.\n"
+msgstr ""
+
+#: login-utils/chsh.c:350
+#, c-format
+msgid "%s: use -l option to see list\n"
+msgstr ""
+
+#: login-utils/chsh.c:356
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells.\n"
+msgstr ""
+
+#: login-utils/chsh.c:357
+#, c-format
+msgid "Use %s -l to see list.\n"
+msgstr ""
+
+#: login-utils/chsh.c:378
+msgid "No known shells.\n"
+msgstr ""
+
+#: login-utils/cryptocard.c:70
+msgid "couldn't open /dev/urandom"
+msgstr ""
+
+#: login-utils/cryptocard.c:75
+msgid "couldn't read random data from /dev/urandom"
+msgstr ""
+
+#: login-utils/cryptocard.c:98
+#, c-format
+msgid "can't open %s for reading"
+msgstr ""
+
+#: login-utils/cryptocard.c:102
+#, c-format
+msgid "can't stat(%s)"
+msgstr ""
+
+#: login-utils/cryptocard.c:108
+#, c-format
+msgid "%s doesn't have the correct filemodes"
+msgstr ""
+
+#: login-utils/cryptocard.c:113
+#, c-format
+msgid "can't read data from %s"
+msgstr ""
+
+#: login-utils/islocal.c:36
+#, c-format
+msgid "Can't read %s, exiting."
+msgstr ""
+
+#: login-utils/last.c:138
+msgid "usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n"
+msgstr ""
+
+#: login-utils/last.c:215
+#, c-format
+msgid "last: %s: "
+msgstr ""
+
+#: login-utils/last.c:270
+msgid " still logged in"
+msgstr ""
+
+#: login-utils/last.c:291
+#, c-format
+msgid ""
+"\n"
+"wtmp begins %10.10s %5.5s \n"
+msgstr ""
+
+#: login-utils/last.c:352 login-utils/last.c:372 login-utils/last.c:427
+msgid "last: malloc failure.\n"
+msgstr ""
+
+#: login-utils/last.c:401
+msgid "last: gethostname"
+msgstr ""
+
+#: login-utils/last.c:454
+#, c-format
+msgid ""
+"\n"
+"interrupted %10.10s %5.5s \n"
+msgstr ""
+
+#: login-utils/login.c:349
+msgid "login: -h for super-user only.\n"
+msgstr ""
+
+#: login-utils/login.c:374
+msgid "usage: login [-fp] [username]\n"
+msgstr ""
+
+#: login-utils/login.c:476
+#, c-format
+msgid "login: PAM Failure, aborting: %s\n"
+msgstr ""
+
+#: login-utils/login.c:478
+#, c-format
+msgid "Couldn't initialize PAM: %s"
+msgstr ""
+
+#: login-utils/login.c:518
+#, c-format
+msgid "FAILED LOGIN %d FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:520
+msgid ""
+"Login incorrect\n"
+"\n"
+msgstr ""
+
+#: login-utils/login.c:529
+#, c-format
+msgid "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:533
+#, c-format
+msgid "FAILED LOGIN SESSION FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:536
+msgid ""
+"\n"
+"Login incorrect\n"
+msgstr ""
+
+#: login-utils/login.c:585
+msgid "Illegal username"
+msgstr "Niet-toegestane gebruikersnaam"
+
+#: login-utils/login.c:628
+#, c-format
+msgid "%s login refused on this terminal.\n"
+msgstr ""
+
+#: login-utils/login.c:633
+#, c-format
+msgid "LOGIN %s REFUSED FROM %s ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:637
+#, c-format
+msgid "LOGIN %s REFUSED ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:689
+msgid "Login incorrect\n"
+msgstr ""
+
+#: login-utils/login.c:711
+msgid ""
+"Too many users logged on already.\n"
+"Try again later.\n"
+msgstr ""
+
+#: login-utils/login.c:715
+msgid "You have too many processes running.\n"
+msgstr ""
+
+#: login-utils/login.c:761
+msgid "Warning: no Kerberos tickets issued\n"
+msgstr ""
+
+#: login-utils/login.c:773
+msgid "Sorry -- your password has expired.\n"
+msgstr ""
+
+#: login-utils/login.c:779
+#, c-format
+msgid "Warning: your password expires on %s %d, %d\n"
+msgstr ""
+
+#: login-utils/login.c:787
+msgid "Sorry -- your account has expired.\n"
+msgstr ""
+
+#: login-utils/login.c:793
+#, c-format
+msgid "Warning: your account expires on %s %d, %d\n"
+msgstr ""
+
+#: login-utils/login.c:1012
+#, c-format
+msgid "DIALUP AT %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1019
+#, c-format
+msgid "ROOT LOGIN ON %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1022
+#, c-format
+msgid "ROOT LOGIN ON %s"
+msgstr ""
+
+#: login-utils/login.c:1025
+#, c-format
+msgid "LOGIN ON %s BY %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1028
+#, c-format
+msgid "LOGIN ON %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1039
+#, c-format
+msgid "You have %smail.\n"
+msgstr ""
+
+#: login-utils/login.c:1040
+msgid "new "
+msgstr ""
+
+#. error in fork()
+#: login-utils/login.c:1057
+#, c-format
+msgid "login: failure forking: %s"
+msgstr ""
+
+#: login-utils/login.c:1072
+msgid "setuid() failed"
+msgstr ""
+
+#: login-utils/login.c:1078
+#, c-format
+msgid "No directory %s!\n"
+msgstr ""
+
+#: login-utils/login.c:1082
+msgid "Logging in with home = \"/\".\n"
+msgstr ""
+
+#: login-utils/login.c:1090
+msgid "login: no memory for shell script.\n"
+msgstr ""
+
+#: login-utils/login.c:1116
+#, c-format
+msgid "login: couldn't exec shell script: %s.\n"
+msgstr ""
+
+#: login-utils/login.c:1119
+#, c-format
+msgid "login: no shell: %s.\n"
+msgstr ""
+
+#: login-utils/login.c:1135
+#, c-format
+msgid ""
+"\n"
+"%s login: "
+msgstr ""
+
+#: login-utils/login.c:1146
+msgid "login name much too long.\n"
+msgstr ""
+
+#: login-utils/login.c:1147
+msgid "NAME too long"
+msgstr ""
+
+#: login-utils/login.c:1154
+msgid "login names may not start with '-'.\n"
+msgstr ""
+
+#: login-utils/login.c:1164
+msgid "too many bare linefeeds.\n"
+msgstr ""
+
+#: login-utils/login.c:1165
+msgid "EXCESSIVE linefeeds"
+msgstr ""
+
+#: login-utils/login.c:1176
+#, c-format
+msgid "Login timed out after %d seconds\n"
+msgstr ""
+
+#: login-utils/login.c:1276
+#, c-format
+msgid "Last login: %.*s "
+msgstr ""
+
+#: login-utils/login.c:1280
+#, c-format
+msgid "from %.*s\n"
+msgstr ""
+
+#: login-utils/login.c:1283
+#, c-format
+msgid "on %.*s\n"
+msgstr ""
+
+#: login-utils/login.c:1306
+#, c-format
+msgid "LOGIN FAILURE FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1309
+#, c-format
+msgid "LOGIN FAILURE ON %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1313
+#, c-format
+msgid "%d LOGIN FAILURES FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1316
+#, c-format
+msgid "%d LOGIN FAILURES ON %s, %s"
+msgstr ""
+
+#: login-utils/mesg.c:89
+msgid "is y\n"
+msgstr ""
+
+#: login-utils/mesg.c:92
+msgid "is n\n"
+msgstr ""
+
+#: login-utils/mesg.c:112
+msgid "usage: mesg [y | n]\n"
+msgstr ""
+
+#: login-utils/newgrp.c:67
+msgid "newgrp: Who are you?"
+msgstr ""
+
+#: login-utils/newgrp.c:75 login-utils/newgrp.c:85
+msgid "newgrp: setgid"
+msgstr ""
+
+#: login-utils/newgrp.c:80
+msgid "newgrp: No such group."
+msgstr ""
+
+#: login-utils/newgrp.c:89
+msgid "newgrp: Permission denied"
+msgstr ""
+
+#: login-utils/newgrp.c:96
+msgid "newgrp: setuid"
+msgstr ""
+
+#: login-utils/newgrp.c:102
+msgid "No shell"
+msgstr ""
+
+#: login-utils/passwd.c:165
+msgid "The password must have at least 6 characters, try again.\n"
+msgstr ""
+
+#: login-utils/passwd.c:178
+msgid "The password must contain characters out of two of the following\n"
+msgstr ""
+
+#: login-utils/passwd.c:179
+msgid "classes: upper and lower case letters, digits and non alphanumeric\n"
+msgstr ""
+
+#: login-utils/passwd.c:180
+msgid "characters. See passwd(1) for more information.\n"
+msgstr ""
+
+#: login-utils/passwd.c:185
+msgid "You cannot reuse the old password.\n"
+msgstr ""
+
+#: login-utils/passwd.c:190
+msgid "Please don't use something like your username as password!\n"
+msgstr ""
+
+#: login-utils/passwd.c:201 login-utils/passwd.c:208
+msgid "Please don't use something like your realname as password!\n"
+msgstr ""
+
+#: login-utils/passwd.c:225
+msgid "Usage: passwd [username [password]]\n"
+msgstr ""
+
+#: login-utils/passwd.c:226
+msgid "Only root may use the one and two argument forms.\n"
+msgstr ""
+
+#: login-utils/passwd.c:282
+msgid "Usage: passwd [-foqsvV] [user [password]]\n"
+msgstr ""
+
+#: login-utils/passwd.c:302
+#, c-format
+msgid "Can't exec %s: %s\n"
+msgstr ""
+
+#: login-utils/passwd.c:313
+msgid "Cannot find login name"
+msgstr ""
+
+#: login-utils/passwd.c:320 login-utils/passwd.c:327
+msgid "Only root can change the password for others.\n"
+msgstr ""
+
+#: login-utils/passwd.c:335
+msgid "Too many arguments.\n"
+msgstr ""
+
+#: login-utils/passwd.c:340
+#, c-format
+msgid "Can't find username anywhere. Is `%s' really a user?"
+msgstr ""
+
+#: login-utils/passwd.c:344
+msgid "Sorry, I can only change local passwords. Use yppasswd instead."
+msgstr ""
+
+#: login-utils/passwd.c:350
+msgid "UID and username does not match, imposter!"
+msgstr ""
+
+#: login-utils/passwd.c:355
+#, c-format
+msgid "Changing password for %s\n"
+msgstr ""
+
+#: login-utils/passwd.c:359
+msgid "Enter old password: "
+msgstr ""
+
+#: login-utils/passwd.c:361
+msgid "Illegal password, imposter."
+msgstr ""
+
+#: login-utils/passwd.c:373
+msgid "Enter new password: "
+msgstr ""
+
+#: login-utils/passwd.c:375
+msgid "Password not changed."
+msgstr ""
+
+#: login-utils/passwd.c:385
+msgid "Re-type new password: "
+msgstr ""
+
+#: login-utils/passwd.c:388
+msgid "You misspelled it. Password not changed."
+msgstr ""
+
+#: login-utils/passwd.c:403
+#, c-format
+msgid "password changed, user %s"
+msgstr ""
+
+#: login-utils/passwd.c:406
+msgid "ROOT PASSWORD CHANGED"
+msgstr ""
+
+#: login-utils/passwd.c:408
+#, c-format
+msgid "password changed by root, user %s"
+msgstr ""
+
+#: login-utils/passwd.c:415
+msgid "calling setpwnam to set password.\n"
+msgstr ""
+
+#: login-utils/passwd.c:419
+msgid "Password *NOT* changed. Try again later.\n"
+msgstr ""
+
+#: login-utils/passwd.c:425
+msgid "Password changed.\n"
+msgstr ""
+
+#: login-utils/shutdown.c:85
+msgid "Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n"
+msgstr ""
+
+#: login-utils/shutdown.c:103
+msgid "Shutdown process aborted"
+msgstr ""
+
+#: login-utils/shutdown.c:125
+#, c-format
+msgid "%s: Only root can shut a system down.\n"
+msgstr ""
+
+#: login-utils/shutdown.c:219
+msgid "That must be tomorrow, "
+msgstr ""
+
+#: login-utils/shutdown.c:220
+msgid "can't you wait till then?\n"
+msgstr ""
+
+#: login-utils/shutdown.c:271
+msgid "for maintenance; bounce, bounce"
+msgstr ""
+
+#: login-utils/shutdown.c:275
+#, c-format
+msgid "timeout = %d, quiet = %d, reboot = %d\n"
+msgstr ""
+
+#: login-utils/shutdown.c:300
+msgid "The system is being shut down within 5 minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:304
+msgid "Login is therefore prohibited."
+msgstr ""
+
+#: login-utils/shutdown.c:325
+#, c-format
+msgid "%s by %s: %s"
+msgstr ""
+
+#: login-utils/shutdown.c:326
+msgid "rebooted"
+msgstr ""
+
+#: login-utils/shutdown.c:326
+msgid "halted"
+msgstr ""
+
+#. RB_AUTOBOOT
+#: login-utils/shutdown.c:369
+msgid ""
+"\n"
+"Why am I still alive after reboot?"
+msgstr ""
+
+#: login-utils/shutdown.c:371
+msgid ""
+"\n"
+"Now you can turn off the power..."
+msgstr ""
+
+#: login-utils/shutdown.c:386
+msgid "Calling kernel power-off facility...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:389
+#, c-format
+msgid "Error powering off\t%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:397
+#, c-format
+msgid "Executing the program \"%s\" ...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:400
+#, c-format
+msgid "Error executing\t%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:423
+#, c-format
+msgid "URGENT: broadcast message from %s:"
+msgstr ""
+
+#: login-utils/shutdown.c:429
+msgid "System going down IMMEDIATELY!\n"
+msgstr ""
+
+#: login-utils/shutdown.c:432
+#, c-format
+msgid "System going down in %d hour%s %d minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:435
+#, c-format
+msgid "System going down in %d minute%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:441
+#, c-format
+msgid "\t... %s ...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:498
+msgid "Cannot fork for swapoff. Shrug!"
+msgstr ""
+
+#: login-utils/shutdown.c:506
+msgid "Cannot exec swapoff, "
+msgstr ""
+
+#: login-utils/shutdown.c:507
+msgid "hoping umount will do the trick."
+msgstr ""
+
+#: login-utils/shutdown.c:525
+msgid "Cannot fork for umount, trying manually."
+msgstr ""
+
+#: login-utils/shutdown.c:531
+msgid "Cannot exec "
+msgstr ""
+
+#: login-utils/shutdown.c:531
+msgid ", trying umount."
+msgstr ""
+
+#: login-utils/shutdown.c:533
+msgid "Cannot exec umount, giving up on umount."
+msgstr ""
+
+#: login-utils/shutdown.c:538
+msgid "Unmounting any remaining filesystems..."
+msgstr ""
+
+#: login-utils/shutdown.c:574
+#, c-format
+msgid "shutdown: Couldn't umount %s\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:79
+msgid "Booting to single user mode.\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:83
+msgid "exec of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:87
+msgid "fork of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:226
+msgid ""
+"\n"
+"Wrong password.\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:252
+msgid "exec rc failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:255
+msgid "open of rc file failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:261
+msgid "fork of rc shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:273
+msgid "fork failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:302 text-utils/more.c:1469
+msgid "exec failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:324
+#, fuzzy
+msgid "cannot open inittab\n"
+msgstr "Kan schijf niet openen"
+
+#: login-utils/simpleinit.c:362
+msgid "no TERM or cannot stat tty\n"
+msgstr ""
+
+#: login-utils/ttymsg.c:79
+msgid "too many iov's (change code in wall/ttymsg.c)"
+msgstr ""
+
+#. A slash is an attempt to break security...
+#: login-utils/ttymsg.c:83
+#, c-format
+msgid "'/' in \"%s\""
+msgstr ""
+
+#: login-utils/ttymsg.c:88
+msgid "excessively long line arg"
+msgstr ""
+
+#: login-utils/ttymsg.c:142
+msgid "cannot fork"
+msgstr ""
+
+#: login-utils/ttymsg.c:145
+#, c-format
+msgid "fork: %s"
+msgstr ""
+
+#: login-utils/ttymsg.c:172
+#, c-format
+msgid "%s: BAD ERROR"
+msgstr ""
+
+#: login-utils/vipw.c:147
+#, c-format
+msgid "%s: the %s file is busy.\n"
+msgstr ""
+
+#: login-utils/vipw.c:163
+#, c-format
+msgid "%s: the %s file is busy (%s present)\n"
+msgstr ""
+
+#: login-utils/vipw.c:168
+#, c-format
+msgid "%s: can't link %s: %s\n"
+msgstr ""
+
+#: login-utils/vipw.c:188
+#, c-format
+msgid "%s: can't unlock %s: %s (your changes are still in %s)\n"
+msgstr ""
+
+#: login-utils/vipw.c:212
+#, c-format
+msgid "%s: Cannot fork\n"
+msgstr ""
+
+#: login-utils/vipw.c:252
+#, fuzzy, c-format
+msgid "%s: %s unchanged\n"
+msgstr "De schijfinhoud is gewijzigd.\n"
+
+#: login-utils/vipw.c:295
+#, c-format
+msgid "%s: no changes made\n"
+msgstr ""
+
+#: login-utils/wall.c:104
+msgid "usage: wall [file]\n"
+msgstr ""
+
+#: login-utils/wall.c:115
+#, c-format
+msgid "wall: cannot read %s.\n"
+msgstr ""
+
+#: login-utils/wall.c:132
+#, c-format
+msgid "wall: %s\n"
+msgstr ""
+
+#: login-utils/wall.c:154
+msgid "wall: can't open temporary file.\n"
+msgstr ""
+
+#: login-utils/wall.c:181
+#, c-format
+msgid "Broadcast Message from %s@%s"
+msgstr ""
+
+#: login-utils/wall.c:191
+#, c-format
+msgid "wall: can't read %s.\n"
+msgstr ""
+
+#: login-utils/wall.c:216
+msgid "wall: can't stat temporary file.\n"
+msgstr ""
+
+#: login-utils/wall.c:225
+msgid "wall: can't read temporary file.\n"
+msgstr ""
+
+#: misc-utils/cal.c:198
+msgid "illegal month value: use 1-12"
+msgstr ""
+
+#: misc-utils/cal.c:202
+msgid "illegal year value: use 1-9999"
+msgstr ""
+
+#: misc-utils/cal.c:498
+msgid "usage: cal [-mjy] [[month] year]\n"
+msgstr ""
+
+#: misc-utils/ddate.c:184
+#, c-format
+msgid "usage: %s [+format] [day month year]\n"
+msgstr ""
+
+#. handle St. Tib's Day
+#: misc-utils/ddate.c:230
+msgid "St. Tib's Day"
+msgstr ""
+
+#: misc-utils/kill.c:199
+#, c-format
+msgid "%s: unknown signal %s\n"
+msgstr ""
+
+#: misc-utils/kill.c:261
+#, c-format
+msgid "%s: can't find process \"%s\"\n"
+msgstr ""
+
+#: misc-utils/kill.c:303
+#, c-format
+msgid "%s: unknown signal %s; valid signals:\n"
+msgstr ""
+
+#: misc-utils/kill.c:343
+#, c-format
+msgid "usage: %s [ -s signal | -p ] [ -a ] pid ...\n"
+msgstr ""
+
+#: misc-utils/kill.c:344
+#, c-format
+msgid " %s -l [ signal ]\n"
+msgstr ""
+
+#: misc-utils/logger.c:135
+#, c-format
+msgid "logger: %s: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:232
+#, c-format
+msgid "logger: unknown facility name: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:244
+#, c-format
+msgid "logger: unknown priority name: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:271
+msgid "logger: [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n"
+msgstr ""
+
+#: misc-utils/look.c:170 misc-utils/setterm.c:1153 text-utils/more.c:1782
+#: text-utils/more.c:1793
+msgid "Out of memory"
+msgstr ""
+
+#: misc-utils/look.c:340
+msgid "usage: look [-dfa] [-t char] string [file]\n"
+msgstr ""
+
+#: misc-utils/look.c:365
+msgid "look: "
+msgstr ""
+
+#: misc-utils/mcookie.c:95 misc-utils/mcookie.c:120
+#, fuzzy, c-format
+msgid "Could not open %s\n"
+msgstr "Kan het bestand '%s' niet openen"
+
+#: misc-utils/mcookie.c:103 misc-utils/mcookie.c:117
+#, c-format
+msgid "Got %d bytes from %s\n"
+msgstr ""
+
+#: misc-utils/namei.c:107
+#, c-format
+msgid "namei: unable to get current directory - %s\n"
+msgstr ""
+
+#: misc-utils/namei.c:118
+#, c-format
+msgid "namei: unable to chdir to %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:128
+msgid "usage: namei [-mx] pathname [pathname ...]\n"
+msgstr ""
+
+#: misc-utils/namei.c:157
+msgid "namei: could not chdir to root!\n"
+msgstr ""
+
+#: misc-utils/namei.c:164
+msgid "namei: could not stat root!\n"
+msgstr ""
+
+#: misc-utils/namei.c:219
+#, c-format
+msgid " ? could not chdir into %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:248
+#, c-format
+msgid " ? problems reading symlink %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:258
+msgid " *** EXCEEDED UNIX LIMIT OF SYMLINKS ***"
+msgstr ""
+
+#: misc-utils/namei.c:294
+#, c-format
+msgid "namei: unknown file type 0%06o on file %s\n"
+msgstr ""
+
+#: misc-utils/script.c:108
+msgid "usage: script [-a] [file]\n"
+msgstr ""
+
+#: misc-utils/script.c:128
+#, c-format
+msgid "Script started, file is %s\n"
+msgstr ""
+
+#: misc-utils/script.c:197
+#, c-format
+msgid "Script started on %s"
+msgstr ""
+
+#: misc-utils/script.c:263
+#, c-format
+msgid ""
+"\n"
+"Script done on %s"
+msgstr ""
+
+#: misc-utils/script.c:268
+#, c-format
+msgid "Script done, file is %s\n"
+msgstr ""
+
+#: misc-utils/script.c:280
+msgid "openpty failed\n"
+msgstr ""
+
+#: misc-utils/script.c:314
+msgid "Out of pty's\n"
+msgstr ""
+
+#. Print error message about arguments, and the command's syntax.
+#: misc-utils/setterm.c:745
+#, c-format
+msgid "%s: Argument error, usage\n"
+msgstr ""
+
+#: misc-utils/setterm.c:747
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:748
+msgid " [ -term terminal_name ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:749
+msgid " [ -reset ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:750
+msgid " [ -initialize ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:751
+msgid " [ -cursor [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:753
+msgid " [ -snow [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:754
+msgid " [ -softscroll [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:755
+msgid " [ -keyboard pc|olivetti|dutch|extended ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:757
+msgid " [ -repeat [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:758
+msgid " [ -appcursorkeys [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:759
+msgid " [ -linewrap [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:760
+msgid " [ -default ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:761
+msgid " [ -foreground black|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:762 misc-utils/setterm.c:764
+msgid "|red|magenta|yellow|white|default ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:763
+msgid " [ -background black|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:765
+msgid " [ -ulcolor black|grey|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:766 misc-utils/setterm.c:768 misc-utils/setterm.c:770
+#: misc-utils/setterm.c:772
+msgid "|red|magenta|yellow|white ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:767
+msgid " [ -ulcolor bright blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:769
+msgid " [ -hbcolor black|grey|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:771
+msgid " [ -hbcolor bright blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:774
+msgid " [ -standout [ attr ] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:776
+msgid " [ -inversescreen [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:777
+msgid " [ -bold [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:778
+msgid " [ -half-bright [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:779
+msgid " [ -blink [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:780
+msgid " [ -reverse [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:781
+msgid " [ -underline [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:782
+msgid " [ -store ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:783
+msgid " [ -clear [all|rest] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:784
+msgid " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr ""
+
+#: misc-utils/setterm.c:785
+msgid " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr ""
+
+#: misc-utils/setterm.c:786
+msgid " [ -regtabs [1-160] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:787
+msgid " [ -blank [0-60] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:788
+msgid " [ -dump [1-NR_CONSOLES] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:789
+msgid " [ -append [1-NR_CONSOLES] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:790
+msgid " [ -file dumpfilename ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:791
+msgid " [ -msg [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:792
+msgid " [ -msglevel [0-8] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:793
+msgid " [ -powersave [on|vsync|hsync|powerdown|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:794
+msgid " [ -powerdown [0-60] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:795
+msgid " [ -blength [0-2000] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:796
+msgid " [ -bfreq freqnumber ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:841
+msgid "keyboard.pc"
+msgstr ""
+
+#: misc-utils/setterm.c:844
+msgid "keyboard.olivetti"
+msgstr ""
+
+#: misc-utils/setterm.c:847
+msgid "keyboard.dutch"
+msgstr ""
+
+#: misc-utils/setterm.c:850
+msgid "keyboard.extended"
+msgstr ""
+
+#: misc-utils/setterm.c:884
+msgid "snow.on"
+msgstr ""
+
+#: misc-utils/setterm.c:886
+msgid "snow.off"
+msgstr ""
+
+#: misc-utils/setterm.c:892
+msgid "softscroll.on"
+msgstr ""
+
+#: misc-utils/setterm.c:894
+msgid "softscroll.off"
+msgstr ""
+
+#: misc-utils/setterm.c:1069
+msgid "cannot (un)set powersave mode\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1108 misc-utils/setterm.c:1116
+#, c-format
+msgid "klogctl error: %s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1157
+#, c-format
+msgid "Error reading %s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1172
+msgid "Error writing screendump\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1186
+#, c-format
+msgid "couldn't read %s, and cannot ioctl dump\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1251
+#, c-format
+msgid "%s: $TERM is not defined.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:119
+msgid "usage: tsort [ inputfile ]\n"
+msgstr ""
+
+#: misc-utils/tsort.c:156
+msgid "tsort: odd data count.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:321
+msgid "tsort: cycle in data.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:334
+msgid "tsort: internal error -- could not find cycle.\n"
+msgstr ""
+
+#: misc-utils/whereis.c:158
+msgid "whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n"
+msgstr ""
+
+#: misc-utils/write.c:101
+msgid "write: can't find your tty's name\n"
+msgstr ""
+
+#: misc-utils/write.c:112
+msgid "write: you have write permission turned off.\n"
+msgstr ""
+
+#: misc-utils/write.c:133
+#, c-format
+msgid "write: %s is not logged in on %s.\n"
+msgstr ""
+
+#: misc-utils/write.c:141
+#, c-format
+msgid "write: %s has messages disabled on %s\n"
+msgstr ""
+
+#: misc-utils/write.c:148
+msgid "usage: write user [tty]\n"
+msgstr ""
+
+#: misc-utils/write.c:247
+#, c-format
+msgid "write: %s is not logged in\n"
+msgstr ""
+
+#: misc-utils/write.c:256
+#, c-format
+msgid "write: %s has messages disabled\n"
+msgstr ""
+
+#: misc-utils/write.c:260
+#, c-format
+msgid "write: %s is logged in more than once; writing to %s\n"
+msgstr ""
+
+#: misc-utils/write.c:327
+#, c-format
+msgid "Message from %s@%s on %s at %s ..."
+msgstr ""
+
+#: mount/fstab.c:113
+#, c-format
+msgid "warning: error reading %s: %s"
+msgstr ""
+
+#: mount/fstab.c:140 mount/fstab.c:162
+#, c-format
+msgid "warning: can't open %s: %s"
+msgstr ""
+
+#: mount/fstab.c:144
+#, c-format
+msgid "mount: could not open %s - using %s instead\n"
+msgstr ""
+
+#. MOUNTLOCK_LINKTARGET does not exist (as a file)
+#. and we cannot create it. Read-only filesystem?
+#. Too many files open in the system? Filesystem full?
+#: mount/fstab.c:346
+#, c-format
+msgid "can't create lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:358
+#, c-format
+msgid "can't link lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:369
+#, c-format
+msgid "can't open lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:383
+#, c-format
+msgid "Can't lock lock file %s: %s\n"
+msgstr ""
+
+#: mount/fstab.c:392
+#, c-format
+msgid "can't lock lock file %s: %s"
+msgstr ""
+
+#: mount/fstab.c:394
+msgid "timed out"
+msgstr ""
+
+#: mount/fstab.c:438
+#, c-format
+msgid "cannot open %s (%s) - mtab not updated"
+msgstr ""
+
+#: mount/fstab.c:445
+#, c-format
+msgid "can't open %s (%s) - mtab not updated"
+msgstr ""
+
+#: mount/fstab.c:470
+msgid "mount: warning: cannot change mounted device with a remount\n"
+msgstr ""
+
+#: mount/fstab.c:475
+msgid "mount: warning: cannot change filesystem type with a remount\n"
+msgstr ""
+
+#: mount/fstab.c:482 mount/fstab.c:486
+#, c-format
+msgid "error writing %s: %s"
+msgstr ""
+
+#: mount/fstab.c:491
+#, c-format
+msgid "error changing mode of %s: %s\n"
+msgstr ""
+
+#: mount/fstab.c:496
+#, c-format
+msgid "can't rename %s to %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:75
+#, c-format
+msgid "loop: can't open device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:80
+#, c-format
+msgid "loop: can't get info on device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:85 mount/losetup.c:74
+#, c-format
+msgid "%s: [%04x]:%ld (%s) offset %d, %s encryption\n"
+msgstr ""
+
+#: mount/lomount.c:139
+msgid "mount: could not find any device /dev/loop#"
+msgstr ""
+
+#: mount/lomount.c:143
+msgid ""
+"mount: Could not find any loop device.\n"
+" Maybe /dev/loop# has a wrong major number?"
+msgstr ""
+
+#: mount/lomount.c:147
+#, c-format
+msgid ""
+"mount: Could not find any loop device, and, according to %s,\n"
+" this kernel does not know about the loop device.\n"
+" (If so, then recompile or `insmod loop.o'.)"
+msgstr ""
+
+#: mount/lomount.c:152
+msgid ""
+"mount: Could not find any loop device. Maybe this kernel does not know\n"
+" about the loop device (then recompile or `insmod loop.o'), or\n"
+" maybe /dev/loop# has the wrong major number?"
+msgstr ""
+
+#: mount/lomount.c:156
+msgid "mount: could not find any free loop device"
+msgstr ""
+
+#: mount/lomount.c:187 mount/losetup.c:106
+#, c-format
+msgid "Unsupported encryption type %s\n"
+msgstr ""
+
+#: mount/lomount.c:206 mount/losetup.c:125
+msgid "Init (up to 16 hex digits): "
+msgstr ""
+
+#: mount/lomount.c:213 mount/losetup.c:132
+#, c-format
+msgid "Non-hex digit '%c'.\n"
+msgstr ""
+
+#: mount/lomount.c:219 mount/losetup.c:138
+#, c-format
+msgid "Don't know how to get key for encryption system %d\n"
+msgstr ""
+
+#: mount/lomount.c:235
+#, c-format
+msgid "set_loop(%s,%s,%d): success\n"
+msgstr ""
+
+#: mount/lomount.c:245
+#, c-format
+msgid "loop: can't delete device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:255
+#, c-format
+msgid "del_loop(%s): success\n"
+msgstr ""
+
+#: mount/lomount.c:263
+msgid "This mount was compiled without loop support. Please recompile.\n"
+msgstr ""
+
+#: mount/losetup.c:70
+msgid "Cannot get loop info"
+msgstr ""
+
+#: mount/losetup.c:174
+#, c-format
+msgid ""
+"usage:\n"
+" %s loop_device # give info\n"
+" %s -d loop_device # delete\n"
+" %s [ -e encryption ] [ -o offset ] loop_device file # setup\n"
+msgstr ""
+
+#: mount/losetup.c:231
+msgid "No loop support was available at compile time. Please recompile.\n"
+msgstr ""
+
+#: mount/mntent.c:165
+#, c-format
+msgid "[mntent]: warning: no final newline at the end of %s\n"
+msgstr ""
+
+#: mount/mntent.c:214
+#, c-format
+msgid "[mntent]: line %d in %s is bad%s\n"
+msgstr ""
+
+#: mount/mntent.c:217
+msgid "; rest of file ignored"
+msgstr ""
+
+#: mount/mount.c:319
+#, c-format
+msgid "mount: according to mtab, %s is already mounted on %s"
+msgstr ""
+
+#: mount/mount.c:322
+#, c-format
+msgid "mount: according to mtab, %s is mounted on %s"
+msgstr ""
+
+#: mount/mount.c:342
+#, c-format
+msgid "mount: can't open %s for writing: %s"
+msgstr ""
+
+#: mount/mount.c:355 mount/mount.c:597
+#, c-format
+msgid "mount: error writing %s: %s"
+msgstr ""
+
+#: mount/mount.c:360
+#, c-format
+msgid "mount: error changing mode of %s: %s"
+msgstr ""
+
+#: mount/mount.c:434
+msgid "mount failed"
+msgstr ""
+
+#: mount/mount.c:436
+#, c-format
+msgid "mount: only root can mount %s on %s"
+msgstr ""
+
+#: mount/mount.c:461
+msgid "mount: loop device specified twice"
+msgstr ""
+
+#: mount/mount.c:467
+msgid "mount: type specified twice"
+msgstr ""
+
+#: mount/mount.c:479
+msgid "mount: skipping the setup of a loop device\n"
+msgstr ""
+
+#: mount/mount.c:488
+#, c-format
+msgid "mount: going to use the loop device %s\n"
+msgstr ""
+
+#: mount/mount.c:492
+msgid "mount: failed setting up loop device\n"
+msgstr ""
+
+#: mount/mount.c:496
+msgid "mount: setup loop device successfully\n"
+msgstr ""
+
+#: mount/mount.c:509
+msgid "mount: this version was compiled without support for the type `nfs'"
+msgstr ""
+
+#: mount/mount.c:557 mount/mount.c:969
+#, c-format
+msgid "mount: cannot fork: %s"
+msgstr ""
+
+#: mount/mount.c:593
+#, c-format
+msgid "mount: can't open %s: %s"
+msgstr ""
+
+#: mount/mount.c:619
+msgid "mount: you must specify the filesystem type"
+msgstr ""
+
+#: mount/mount.c:626 mount/mount.c:660
+#, c-format
+msgid "mount: mount point %s is not a directory"
+msgstr ""
+
+#: mount/mount.c:628
+msgid "mount: permission denied"
+msgstr ""
+
+#: mount/mount.c:630
+msgid "mount: must be superuser to use mount"
+msgstr ""
+
+#. heuristic: if /proc/version exists, then probably proc is mounted
+#. proc mounted?
+#: mount/mount.c:634 mount/mount.c:638
+#, c-format
+msgid "mount: %s is busy"
+msgstr ""
+
+#. no
+#. yes, don't mention it
+#: mount/mount.c:640
+msgid "mount: proc already mounted"
+msgstr ""
+
+#: mount/mount.c:642
+#, c-format
+msgid "mount: %s already mounted or %s busy"
+msgstr ""
+
+#: mount/mount.c:648
+#, c-format
+msgid "mount: mount point %s does not exist"
+msgstr ""
+
+#: mount/mount.c:650
+#, c-format
+msgid "mount: mount point %s is a symbolic link to nowhere"
+msgstr ""
+
+#: mount/mount.c:653
+#, c-format
+msgid "mount: special device %s does not exist"
+msgstr ""
+
+#: mount/mount.c:666
+#, c-format
+msgid "mount: %s not mounted already, or bad option"
+msgstr ""
+
+#: mount/mount.c:668
+#, c-format
+msgid ""
+"mount: wrong fs type, bad option, bad superblock on %s,\n"
+" or too many mounted file systems"
+msgstr ""
+
+#: mount/mount.c:683
+msgid "mount table full"
+msgstr ""
+
+#: mount/mount.c:685
+#, c-format
+msgid "mount: %s: can't read superblock"
+msgstr ""
+
+#: mount/mount.c:688
+#, c-format
+msgid "mount: %s has wrong major or minor number"
+msgstr ""
+
+#: mount/mount.c:693
+#, c-format
+msgid "mount: fs type %s not supported by kernel"
+msgstr ""
+
+#: mount/mount.c:705
+#, c-format
+msgid "mount: probably you meant %s"
+msgstr ""
+
+#: mount/mount.c:707
+msgid "mount: maybe you meant iso9660 ?"
+msgstr ""
+
+#: mount/mount.c:710
+#, c-format
+msgid "mount: %s has wrong device number or fs type %s not supported"
+msgstr ""
+
+#. strange ...
+#: mount/mount.c:715
+#, c-format
+msgid "mount: %s is not a block device, and stat fails?"
+msgstr ""
+
+#: mount/mount.c:717
+#, c-format
+msgid ""
+"mount: the kernel does not recognize %s as a block device\n"
+" (maybe `insmod driver'?)"
+msgstr ""
+
+#: mount/mount.c:720
+#, c-format
+msgid "mount: %s is not a block device (maybe try `-o loop'?)"
+msgstr ""
+
+#: mount/mount.c:723
+#, c-format
+msgid "mount: %s is not a block device"
+msgstr ""
+
+#: mount/mount.c:726
+#, c-format
+msgid "mount: %s is not a valid block device"
+msgstr ""
+
+#: mount/mount.c:730
+#, c-format
+msgid "mount: block device %s is not permitted on its filesystem"
+msgstr ""
+
+#: mount/mount.c:747
+#, c-format
+msgid "mount: %s%s is write-protected, mounting read-only"
+msgstr ""
+
+#: mount/mount.c:748
+msgid "block device "
+msgstr ""
+
+#: mount/mount.c:834
+#, c-format
+msgid "mount: consider mounting %s by %s\n"
+msgstr ""
+
+#: mount/mount.c:835
+msgid "UUID"
+msgstr ""
+
+#: mount/mount.c:835
+#, fuzzy
+msgid "label"
+msgstr "Tabel"
+
+#: mount/mount.c:837 mount/mount.c:1151
+msgid "mount: no such partition found"
+msgstr ""
+
+#: mount/mount.c:845
+msgid "mount: no type was given - I'll assume nfs because of the colon\n"
+msgstr ""
+
+#.
+#. * Retry in the background.
+#.
+#: mount/mount.c:861
+#, c-format
+msgid "mount: backgrounding \"%s\"\n"
+msgstr ""
+
+#: mount/mount.c:872
+#, c-format
+msgid "mount: giving up \"%s\"\n"
+msgstr ""
+
+#: mount/mount.c:921
+#, c-format
+msgid "mount: %s already mounted on %s\n"
+msgstr ""
+
+#: mount/mount.c:1030
+msgid ""
+"Usage: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-t vfstypes]\n"
+" mount [-nfrsvw] [-o options] special | node\n"
+" mount [-nfrsvw] [-t vfstype] [-o options] special node\n"
+" A special device can be indicated by -L label or -U uuid ."
+msgstr ""
+
+#: mount/mount.c:1136
+msgid "mount: only root can do that"
+msgstr ""
+
+#: mount/mount.c:1141
+#, c-format
+msgid "mount: no %s found - creating it..\n"
+msgstr ""
+
+#: mount/mount.c:1153
+#, c-format
+msgid "mount: mounting %s\n"
+msgstr ""
+
+#: mount/mount.c:1162
+msgid "not mounted anything"
+msgstr ""
+
+#: mount/mount.c:1175
+#, c-format
+msgid "mount: cannot find %s in %s"
+msgstr ""
+
+#: mount/mount.c:1189
+#, c-format
+msgid "mount: can't find %s in %s or %s"
+msgstr ""
+
+#: mount/mount_by_label.c:141
+msgid "mount: bad UUID"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:186
+#, c-format
+msgid "mount: you didn't specify a filesystem type for %s\n"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:189
+#, c-format
+msgid " I will try type %s\n"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:191
+#, c-format
+msgid " I will try all types mentioned in %s or %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:157
+msgid "mount: excessively long host:dir argument\n"
+msgstr ""
+
+#: mount/nfsmount.c:170
+msgid "mount: warning: multiple hostnames not supported\n"
+msgstr ""
+
+#: mount/nfsmount.c:174
+msgid "mount: directory to mount not in host:dir format\n"
+msgstr ""
+
+#: mount/nfsmount.c:185 mount/nfsmount.c:420
+#, c-format
+msgid "mount: can't get address for %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:191
+msgid "mount: got bad hp->h_length\n"
+msgstr ""
+
+#: mount/nfsmount.c:208
+msgid "mount: excessively long option argument\n"
+msgstr ""
+
+#: mount/nfsmount.c:299
+msgid "Warning: Unrecognized proto= option.\n"
+msgstr ""
+
+#: mount/nfsmount.c:306
+msgid "Warning: Option namlen is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:310
+#, c-format
+msgid "unknown nfs mount parameter: %s=%d\n"
+msgstr ""
+
+#: mount/nfsmount.c:345
+msgid "Warning: option nolock is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:348
+#, c-format
+msgid "unknown nfs mount option: %s%s\n"
+msgstr ""
+
+#: mount/nfsmount.c:349
+msgid "no"
+msgstr ""
+
+#: mount/nfsmount.c:426
+msgid "mount: got bad hp->h_length?\n"
+msgstr ""
+
+#: mount/nfsmount.c:528
+#, c-format
+msgid "mount: %s:%s failed, reason given by server: %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:539
+msgid "NFS over TCP is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:546
+msgid "nfs socket"
+msgstr ""
+
+#: mount/nfsmount.c:550
+msgid "nfs bindresvport"
+msgstr ""
+
+#: mount/nfsmount.c:561
+msgid "used portmapper to find NFS port\n"
+msgstr ""
+
+#: mount/nfsmount.c:565
+#, c-format
+msgid "using port %d for nfs deamon\n"
+msgstr ""
+
+#: mount/nfsmount.c:576
+msgid "nfs connect"
+msgstr ""
+
+#: mount/nfsmount.c:665
+#, c-format
+msgid "unknown nfs status return value: %d"
+msgstr ""
+
+#: mount/sundries.c:40 mount/sundries.c:55
+msgid "not enough memory"
+msgstr ""
+
+#: mount/sundries.c:65
+msgid "bug in xstrndup call"
+msgstr ""
+
+#: mount/swapon.c:49
+#, c-format
+msgid ""
+"usage: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p priority] special ...\n"
+" %s [-s]\n"
+msgstr ""
+
+#: mount/swapon.c:86
+#, c-format
+msgid "%s on %s\n"
+msgstr ""
+
+#: mount/swapon.c:90
+#, c-format
+msgid "swapon: cannot stat %s: %s\n"
+msgstr ""
+
+#: mount/swapon.c:95
+#, c-format
+msgid "swapon: warning: %s has insecure permissions %04o, 0600 suggested\n"
+msgstr ""
+
+#: mount/swapon.c:103
+#, c-format
+msgid "swapon: Skipping file %s - it appears to have holes.\n"
+msgstr ""
+
+#: mount/swapon.c:204
+#, fuzzy, c-format
+msgid "%s: cannot open %s: %s\n"
+msgstr "Kan het bestand '%s' niet openen"
+
+#: mount/umount.c:65
+msgid "umount: compiled without support for -f\n"
+msgstr ""
+
+#: mount/umount.c:115
+#, c-format
+msgid "host: %s, directory: %s\n"
+msgstr ""
+
+#: mount/umount.c:132
+#, c-format
+msgid "umount: can't get address for %s\n"
+msgstr ""
+
+#: mount/umount.c:137
+msgid "umount: got bad hostp->h_length\n"
+msgstr ""
+
+#: mount/umount.c:175
+#, c-format
+msgid "umount: %s: invalid block device"
+msgstr ""
+
+#: mount/umount.c:177
+#, c-format
+msgid "umount: %s: not mounted"
+msgstr ""
+
+#: mount/umount.c:179
+#, c-format
+msgid "umount: %s: can't write superblock"
+msgstr ""
+
+#. Let us hope fstab has a line "proc /proc ..."
+#. and not "none /proc ..."
+#: mount/umount.c:183
+#, c-format
+msgid "umount: %s: device is busy"
+msgstr ""
+
+#: mount/umount.c:185
+#, c-format
+msgid "umount: %s: not found"
+msgstr ""
+
+#: mount/umount.c:187
+#, c-format
+msgid "umount: %s: must be superuser to umount"
+msgstr ""
+
+#: mount/umount.c:189
+#, c-format
+msgid "umount: %s: block devices not permitted on fs"
+msgstr ""
+
+#: mount/umount.c:191
+#, c-format
+msgid "umount: %s: %s"
+msgstr ""
+
+#: mount/umount.c:235
+msgid "no umount2, trying umount...\n"
+msgstr ""
+
+#: mount/umount.c:248
+#, c-format
+msgid "could not umount %s - trying %s instead\n"
+msgstr ""
+
+#: mount/umount.c:264
+#, c-format
+msgid "umount: %s busy - remounted read-only\n"
+msgstr ""
+
+#: mount/umount.c:272
+#, c-format
+msgid "umount: could not remount %s read-only\n"
+msgstr ""
+
+#: mount/umount.c:280
+#, c-format
+msgid "%s umounted\n"
+msgstr ""
+
+#: mount/umount.c:363
+msgid "umount: cannot find list of filesystems to unmount"
+msgstr ""
+
+#: mount/umount.c:392
+msgid ""
+"Usage: umount [-hV]\n"
+" umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n"
+" umount [-f] [-r] [-n] [-v] special | node...\n"
+msgstr ""
+
+#: mount/umount.c:453
+msgid "umount: only root can do that"
+msgstr ""
+
+#: mount/umount.c:468
+#, c-format
+msgid "Trying to umount %s\n"
+msgstr ""
+
+#: mount/umount.c:472
+#, c-format
+msgid "Could not find %s in mtab\n"
+msgstr ""
+
+#: mount/umount.c:476
+#, c-format
+msgid "umount: %s is not mounted (according to mtab)"
+msgstr ""
+
+#: mount/umount.c:478
+#, c-format
+msgid "umount: it seems %s is mounted multiple times"
+msgstr ""
+
+#: mount/umount.c:480
+#, c-format
+msgid "umount: %s is not in the fstab (and you are not root)"
+msgstr ""
+
+#: mount/umount.c:486
+#, c-format
+msgid "umount: %s mount disagrees with the fstab"
+msgstr ""
+
+#: mount/umount.c:505
+#, c-format
+msgid "umount: only root can unmount %s from %s"
+msgstr ""
+
+#: mount/umount.c:515
+#, c-format
+msgid "umount: only %s can unmount %s from %s"
+msgstr ""
+
+#: sys-utils/ctrlaltdel.c:26
+msgid "You must be root to set the Ctrl-Alt-Del behaviour.\n"
+msgstr ""
+
+#: sys-utils/ctrlaltdel.c:41
+msgid "Usage: ctrlaltdel hard|soft\n"
+msgstr ""
+
+#: sys-utils/cytune.c:116
+#, c-format
+msgid ""
+"File %s, For threshold value %lu, Maximum characters in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+
+#: sys-utils/cytune.c:127
+#, c-format
+msgid ""
+"File %s, For threshold value %lu and timrout value %lu, Maximum characters "
+"in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+
+#: sys-utils/cytune.c:194
+#, c-format
+msgid "Invalid interval value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:202
+#, c-format
+msgid "Invalid set value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:210
+#, c-format
+msgid "Invalid default value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:218
+#, c-format
+msgid "Invalid set time value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:226
+#, c-format
+msgid "Invalid default time value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:243
+#, c-format
+msgid ""
+"Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) "
+"[-g|-G] file [file...]\n"
+msgstr ""
+
+#: sys-utils/cytune.c:254 sys-utils/cytune.c:270 sys-utils/cytune.c:287
+#: sys-utils/cytune.c:332
+#, fuzzy, c-format
+msgid "Can't open %s: %s\n"
+msgstr "Kan het bestand '%s' niet openen"
+
+#: sys-utils/cytune.c:260
+#, c-format
+msgid "Can't set %s to threshold %d: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:276
+#, c-format
+msgid "Can't set %s to time threshold %d: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:291 sys-utils/cytune.c:342 sys-utils/cytune.c:370
+#, c-format
+msgid "Can't get threshold for %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:296 sys-utils/cytune.c:347 sys-utils/cytune.c:375
+#, c-format
+msgid "Can't get timeout for %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:300
+#, c-format
+msgid "%s: %ld %s threshold and %ld %s timeout\n"
+msgstr ""
+
+#: sys-utils/cytune.c:302 sys-utils/cytune.c:304
+msgid "current"
+msgstr ""
+
+#: sys-utils/cytune.c:302 sys-utils/cytune.c:304
+msgid "default"
+msgstr ""
+
+#: sys-utils/cytune.c:321
+msgid "Can't set signal handler"
+msgstr ""
+
+#: sys-utils/cytune.c:325 sys-utils/cytune.c:356
+msgid "gettimeofday failed"
+msgstr ""
+
+#: sys-utils/cytune.c:336 sys-utils/cytune.c:365
+#, c-format
+msgid "Can't issue CYGETMON on %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:405
+#, c-format
+msgid "%s: %lu ints, %lu/%lu chars; "
+msgstr ""
+
+#: sys-utils/cytune.c:406
+#, c-format
+msgid "fifo: %lu thresh, %lu tmout, "
+msgstr ""
+
+#: sys-utils/cytune.c:407
+#, c-format
+msgid "%lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:412
+#, c-format
+msgid " %f int/sec; %f rec, %f send (char/sec)\n"
+msgstr ""
+
+#: sys-utils/cytune.c:417
+#, c-format
+msgid ""
+"%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:422
+#, c-format
+msgid " %f int/sec; %f rec (char/sec)\n"
+msgstr ""
+
+#: sys-utils/dmesg.c:38
+#, c-format
+msgid "Usage: %s [-c] [-n level] [-s bufsize]\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:46
+#, c-format
+msgid "usage: %s [shm | msg | sem] id\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:70
+#, c-format
+msgid "usage: %s [-shm | -msg | -sem] id\n"
+msgstr ""
+
+#: sys-utils/ipcrm.c:73
+msgid "resource deleted\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:91
+#, c-format
+msgid "usage : %s -asmq -tclup \n"
+msgstr ""
+
+#: sys-utils/ipcs.c:92
+#, c-format
+msgid "\t%s [-s -m -q] -i id\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:93
+#, c-format
+msgid "\t%s -h for help.\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:99
+#, c-format
+msgid "%s provides information on ipc facilities for"
+msgstr ""
+
+#: sys-utils/ipcs.c:100
+msgid " which you have read access.\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:101
+msgid ""
+"Resource Specification:\n"
+"\t-m : shared_mem\n"
+"\t-q : messages\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:102
+msgid ""
+"\t-s : semaphores\n"
+"\t-a : all (default)\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:103
+msgid ""
+"Output Format:\n"
+"\t-t : time\n"
+"\t-p : pid\n"
+"\t-c : creator\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:104
+msgid ""
+"\t-l : limits\n"
+"\t-u : summary\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:105
+msgid "-i id [-s -q -m] : details on resource identified by id\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:237 sys-utils/ipcs.c:439
+msgid "kernel not configured for shared memory\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:243
+msgid "------ Shared Memory Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:246
+#, c-format
+msgid "max number of segments = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:247
+#, c-format
+msgid "max seg size (kbytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:248
+#, c-format
+msgid "max total shared memory (kbytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:249
+#, c-format
+msgid "min seg size (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:253
+msgid "------ Shared Memory Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:254
+#, c-format
+msgid "segments allocated %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:255
+#, c-format
+msgid "pages allocated %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:256
+#, c-format
+msgid "pages resident %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:257
+#, c-format
+msgid "pages swapped %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:258
+#, c-format
+msgid "Swap performance: %ld attempts\t %ld successes\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:263
+msgid "------ Shared Memory Segment Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:264 sys-utils/ipcs.c:370 sys-utils/ipcs.c:462
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:271 sys-utils/ipcs.c:276
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:377
+msgid "shmid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:282 sys-utils/ipcs.c:371
+#: sys-utils/ipcs.c:386 sys-utils/ipcs.c:463 sys-utils/ipcs.c:480
+msgid "perms"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cuid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cgid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "uid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:463
+msgid "gid"
+msgstr ""
+
+#: sys-utils/ipcs.c:269
+msgid "------ Shared Memory Attach/Detach/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:270
+#, c-format
+msgid "%-10s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:271 sys-utils/ipcs.c:276 sys-utils/ipcs.c:282
+#: sys-utils/ipcs.c:377 sys-utils/ipcs.c:386 sys-utils/ipcs.c:469
+#: sys-utils/ipcs.c:474 sys-utils/ipcs.c:480
+msgid "owner"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "attached"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "detached"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "changed"
+msgstr ""
+
+#: sys-utils/ipcs.c:275
+msgid "------ Shared Memory Creator/Last-op --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276 sys-utils/ipcs.c:474
+#, c-format
+msgid "%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "cpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "lpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:280
+msgid "------ Shared Memory Segments --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:386 sys-utils/ipcs.c:479
+msgid "key"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "bytes"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "nattch"
+msgstr ""
+
+#: sys-utils/ipcs.c:282 sys-utils/ipcs.c:386
+msgid "status"
+msgstr ""
+
+#: sys-utils/ipcs.c:302 sys-utils/ipcs.c:303 sys-utils/ipcs.c:304
+#: sys-utils/ipcs.c:407 sys-utils/ipcs.c:408 sys-utils/ipcs.c:500
+#: sys-utils/ipcs.c:501 sys-utils/ipcs.c:502
+msgid "Not set"
+msgstr ""
+
+#: sys-utils/ipcs.c:324
+msgid "dest"
+msgstr ""
+
+#: sys-utils/ipcs.c:325
+msgid "locked"
+msgstr ""
+
+#: sys-utils/ipcs.c:345
+msgid "kernel not configured for semaphores\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:351
+msgid "------ Semaphore Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:355
+#, c-format
+msgid "max number of arrays = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:356
+#, c-format
+msgid "max semaphores per array = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:357
+#, c-format
+msgid "max semaphores system wide = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:358
+#, c-format
+msgid "max ops per semop call = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:359
+#, c-format
+msgid "semaphore max value = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:363
+msgid "------ Semaphore Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:364
+#, c-format
+msgid "used arrays = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:365
+#, c-format
+msgid "allocated semaphores = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:369
+msgid "------ Semaphore Arrays Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:371 sys-utils/ipcs.c:386
+msgid "semid"
+msgstr ""
+
+#: sys-utils/ipcs.c:375
+msgid "------ Shared Memory Operation/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:376
+#, c-format
+msgid "%-8s%-10s %-26.24s %-26.24s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-op"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-changed"
+msgstr ""
+
+#: sys-utils/ipcs.c:384
+msgid "------ Semaphore Arrays --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:385
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:386
+msgid "nsems"
+msgstr ""
+
+#: sys-utils/ipcs.c:447
+msgid "------ Messages: Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:448
+#, c-format
+msgid "max queues system wide = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:449
+#, c-format
+msgid "max size of message (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:450
+#, c-format
+msgid "default max size of queue (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:454
+msgid "------ Messages: Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:455
+#, c-format
+msgid "allocated queues = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:456
+#, c-format
+msgid "used headers = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:457
+#, c-format
+msgid "used space = %d bytes\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:461
+msgid "------ Message Queues: Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:463 sys-utils/ipcs.c:469 sys-utils/ipcs.c:474
+#: sys-utils/ipcs.c:479
+msgid "msqid"
+msgstr ""
+
+#: sys-utils/ipcs.c:467
+msgid "------ Message Queues Send/Recv/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:468
+#, c-format
+msgid "%-8s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "send"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "recv"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "change"
+msgstr ""
+
+#: sys-utils/ipcs.c:473
+msgid "------ Message Queues PIDs --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:474
+msgid "lspid"
+msgstr ""
+
+#: sys-utils/ipcs.c:474
+msgid "lrpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:478
+msgid "------ Message Queues --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:479
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-12s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "used-bytes"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "messages"
+msgstr ""
+
+#: sys-utils/ipcs.c:539
+#, c-format
+msgid ""
+"\n"
+"Shared memory Segment shmid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:540
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:542
+#, c-format
+msgid "mode=%#o\taccess_perms=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:543
+#, c-format
+msgid "bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:546
+#, c-format
+msgid "att_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:547 sys-utils/ipcs.c:549 sys-utils/ipcs.c:598
+msgid "Not set\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:548
+#, c-format
+msgid "det_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:550
+#, c-format
+msgid "change_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:566
+#, c-format
+msgid ""
+"\n"
+"Message Queue msqid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:567
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:569
+#, c-format
+msgid "cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:572
+#, c-format
+msgid "send_time=%srcv_time=%schange_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:573 sys-utils/ipcs.c:574 sys-utils/ipcs.c:575
+msgid "Not Set\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:592
+#, c-format
+msgid ""
+"\n"
+"Semaphore Array semid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:593
+#, c-format
+msgid "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:595
+#, c-format
+msgid "mode=%#o, access_perms=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:596
+#, c-format
+msgid "nsems = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:597
+#, c-format
+msgid "otime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:599
+#, c-format
+msgid "ctime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "semnum"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+#, fuzzy
+msgid "value"
+msgstr "Tabel"
+
+#: sys-utils/ipcs.c:601
+msgid "ncount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "zcount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "pid"
+msgstr ""
+
+#: sys-utils/kbdrate.c:126
+#, c-format
+msgid "util-linux kbdrate %s \n"
+msgstr ""
+
+#: sys-utils/kbdrate.c:159 sys-utils/kbdrate.c:206
+#, c-format
+msgid "Typematic Rate set to %.1f cps (delay = %d mS)\n"
+msgstr ""
+
+#: sys-utils/kbdrate.c:182
+#, fuzzy
+msgid "Cannot open /dev/port"
+msgstr "Kan schijf niet openen"
+
+#: sys-utils/rdev.c:68
+msgid "usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]"
+msgstr ""
+
+#: sys-utils/rdev.c:69
+msgid ""
+" rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device"
+msgstr ""
+
+#: sys-utils/rdev.c:70
+msgid " rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2"
+msgstr ""
+
+#: sys-utils/rdev.c:71
+msgid " rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)"
+msgstr ""
+
+#: sys-utils/rdev.c:72
+msgid " rdev -s /dev/fd0 /dev/hda2 set the SWAP device"
+msgstr ""
+
+#: sys-utils/rdev.c:73
+msgid " rdev -r /dev/fd0 627 set the RAMDISK size"
+msgstr ""
+
+#: sys-utils/rdev.c:74
+msgid " rdev -v /dev/fd0 1 set the bootup VIDEOMODE"
+msgstr ""
+
+#: sys-utils/rdev.c:75
+msgid " rdev -o N ... use the byte offset N"
+msgstr ""
+
+#: sys-utils/rdev.c:76
+msgid " rootflags ... same as rdev -R"
+msgstr ""
+
+#: sys-utils/rdev.c:77
+msgid " swapdev ... same as rdev -s"
+msgstr ""
+
+#: sys-utils/rdev.c:78
+msgid " ramsize ... same as rdev -r"
+msgstr ""
+
+#: sys-utils/rdev.c:79
+msgid " vidmode ... same as rdev -v"
+msgstr ""
+
+#: sys-utils/rdev.c:80
+msgid ""
+"Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,..."
+msgstr ""
+
+#: sys-utils/rdev.c:81
+msgid " use -R 1 to mount root readonly, -R 0 for read/write."
+msgstr ""
+
+#: sys-utils/readprofile.c:50
+#, c-format
+msgid ""
+"%s: Usage: \"%s [options]\n"
+"\t -m <mapfile> (default = \"%s\")\n"
+"\t -p <pro-file> (default = \"%s\")\n"
+"\t -i print only info about the sampling step\n"
+"\t -v print verbose data\n"
+"\t -a print all symbols, even if count is 0\n"
+"\t -r reset all the counters (root only)\n"
+"\t -V print version and exit\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:113
+#, c-format
+msgid "%s Version %s\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:125
+msgid "anything\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:154
+#, c-format
+msgid "Sampling_step: %i\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:167 sys-utils/readprofile.c:193
+#, c-format
+msgid "%s: %s(%i): wrong map line\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:180
+#, c-format
+msgid "%s: can't find \"_stext\" in %s\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:221
+#, fuzzy
+msgid "total"
+msgstr "Startbaar"
+
+#: sys-utils/renice.c:66
+msgid "usage: renice priority [ [ -p ] pids ] "
+msgstr ""
+
+#: sys-utils/renice.c:67
+msgid "[ [ -g ] pgrps ] [ [ -u ] users ]\n"
+msgstr ""
+
+#: sys-utils/renice.c:93
+#, c-format
+msgid "renice: %s: unknown user\n"
+msgstr ""
+
+#: sys-utils/renice.c:101
+#, c-format
+msgid "renice: %s: bad value\n"
+msgstr ""
+
+#: sys-utils/renice.c:121
+msgid "getpriority"
+msgstr ""
+
+#: sys-utils/renice.c:126
+msgid "setpriority"
+msgstr ""
+
+#: sys-utils/renice.c:129
+#, c-format
+msgid "%d: old priority %d, new priority %d\n"
+msgstr ""
+
+#: sys-utils/setsid.c:23
+#, c-format
+msgid "usage: %s program [arg ...]\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:77
+#, c-format
+msgid ""
+"Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
+" -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s ]\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:89
+msgid "malloc error"
+msgstr ""
+
+#: sys-utils/tunelp.c:100
+msgid "sscanf error"
+msgstr ""
+
+#: sys-utils/tunelp.c:140
+#, c-format
+msgid "%s: %s not an lp device.\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:239
+#, c-format
+msgid "%s status is %d"
+msgstr ""
+
+#: sys-utils/tunelp.c:240
+msgid ", busy"
+msgstr ""
+
+#: sys-utils/tunelp.c:241
+msgid ", ready"
+msgstr ""
+
+#: sys-utils/tunelp.c:242
+msgid ", out of paper"
+msgstr ""
+
+#: sys-utils/tunelp.c:243
+msgid ", on-line"
+msgstr ""
+
+#: sys-utils/tunelp.c:244
+msgid ", error"
+msgstr ""
+
+#: sys-utils/tunelp.c:261
+msgid "LPGETIRQ error"
+msgstr ""
+
+#: sys-utils/tunelp.c:267
+#, c-format
+msgid "%s using IRQ %d\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:269
+#, c-format
+msgid "%s using polling\n"
+msgstr ""
+
+#: text-utils/col.c:154
+#, c-format
+msgid "col: bad -l argument %s.\n"
+msgstr ""
+
+#: text-utils/col.c:515
+msgid "usage: col [-bfx] [-l nline]\n"
+msgstr ""
+
+#: text-utils/col.c:521
+msgid "col: write error.\n"
+msgstr ""
+
+#: text-utils/col.c:528
+#, c-format
+msgid "col: warning: can't back up %s.\n"
+msgstr ""
+
+#: text-utils/col.c:529
+msgid "past first line"
+msgstr ""
+
+#: text-utils/col.c:529
+msgid "-- line already flushed"
+msgstr ""
+
+#: text-utils/colcrt.c:93
+#, c-format
+msgid "usage: %s [ - ] [ -2 ] [ file ... ]\n"
+msgstr ""
+
+#: text-utils/column.c:276
+msgid "line too long"
+msgstr ""
+
+#: text-utils/column.c:311
+msgid "usage: column [-tx] [-c columns] [file ...]\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:80
+msgid "hexdump: bad length value.\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:91
+msgid "hexdump: bad skip value.\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:129
+msgid ""
+"hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"
+msgstr ""
+
+#: text-utils/more.c:247
+msgid "usage: "
+msgstr ""
+
+#: text-utils/more.c:249
+msgid " [-dfln] [+linenum | +/pattern] name1 name2 ...\n"
+msgstr ""
+
+#: text-utils/more.c:423
+#, c-format
+msgid ""
+"\n"
+"*** %s: directory ***\n"
+"\n"
+msgstr ""
+
+#. simple ELF detection
+#: text-utils/more.c:462
+#, c-format
+msgid ""
+"\n"
+"******** %s: Not a text file ********\n"
+"\n"
+msgstr ""
+
+#: text-utils/more.c:566
+msgid "[Use q or Q to quit]"
+msgstr ""
+
+#: text-utils/more.c:752
+msgid "--More--"
+msgstr ""
+
+#: text-utils/more.c:754
+#, c-format
+msgid "(Next file: %s)"
+msgstr ""
+
+#: text-utils/more.c:760
+#, fuzzy
+msgid "[Press space to continue, 'q' to quit.]"
+msgstr "Sla een toets aan om verder te gaan"
+
+#: text-utils/more.c:1058
+#, c-format
+msgid "...back %d page"
+msgstr ""
+
+#: text-utils/more.c:1104
+#, c-format
+msgid "...skipping %d line"
+msgstr ""
+
+#: text-utils/more.c:1145
+msgid ""
+"\n"
+"***Back***\n"
+"\n"
+msgstr ""
+
+#: text-utils/more.c:1183
+#, fuzzy
+msgid "Can't open help file"
+msgstr "Kan het bestand '%s' niet openen"
+
+#: text-utils/more.c:1204 text-utils/more.c:1208
+msgid "[Press 'h' for instructions.]"
+msgstr ""
+
+#: text-utils/more.c:1243
+#, c-format
+msgid "\"%s\" line %d"
+msgstr ""
+
+#: text-utils/more.c:1245
+#, c-format
+msgid "[Not a file] line %d"
+msgstr ""
+
+#: text-utils/more.c:1329
+msgid " Overflow\n"
+msgstr ""
+
+#: text-utils/more.c:1376
+msgid "...skipping\n"
+msgstr ""
+
+#: text-utils/more.c:1406
+msgid "Regular expression botch"
+msgstr ""
+
+#: text-utils/more.c:1418
+msgid ""
+"\n"
+"Pattern not found\n"
+msgstr ""
+
+#: text-utils/more.c:1421
+msgid "Pattern not found"
+msgstr ""
+
+#: text-utils/more.c:1483
+msgid "can't fork\n"
+msgstr ""
+
+#: text-utils/more.c:1522
+msgid ""
+"\n"
+"...Skipping "
+msgstr ""
+
+#: text-utils/more.c:1526
+msgid "...Skipping "
+msgstr ""
+
+#: text-utils/more.c:1527
+msgid "to file "
+msgstr ""
+
+#: text-utils/more.c:1527
+msgid "back to file "
+msgstr ""
+
+#: text-utils/more.c:1765
+msgid "Line too long"
+msgstr ""
+
+#: text-utils/more.c:1809
+msgid "No previous command to substitute for"
+msgstr ""
+
+#: text-utils/odsyntax.c:133
+msgid "od: od(1) has been deprecated for hexdump(1).\n"
+msgstr ""
+
+#: text-utils/odsyntax.c:136
+#, c-format
+msgid "od: hexdump(1) compatibility doesn't support the -%c option%s\n"
+msgstr ""
+
+#: text-utils/odsyntax.c:137
+msgid "; see strings(1)."
+msgstr ""
+
+#: text-utils/parse.c:63
+#, c-format
+msgid "hexdump: can't read %s.\n"
+msgstr ""
+
+#: text-utils/parse.c:68
+msgid "hexdump: line too long.\n"
+msgstr ""
+
+#: text-utils/parse.c:406
+msgid "hexdump: byte count with multiple conversion characters.\n"
+msgstr ""
+
+#: text-utils/parse.c:490
+#, c-format
+msgid "hexdump: bad byte count for conversion character %s.\n"
+msgstr ""
+
+#: text-utils/parse.c:497
+msgid "hexdump: %%s requires a precision or a byte count.\n"
+msgstr ""
+
+#: text-utils/parse.c:503
+#, c-format
+msgid "hexdump: bad format {%s}\n"
+msgstr ""
+
+#: text-utils/parse.c:509
+msgid "hexdump: bad conversion character %%%s.\n"
+msgstr ""
+
+#: text-utils/rev.c:109
+msgid "Unable to allocate bufferspace\n"
+msgstr ""
+
+#: text-utils/rev.c:167
+msgid "usage: rev [file ...]\n"
+msgstr ""
+
+#: text-utils/ul.c:125
+#, c-format
+msgid "usage: %s [ -i ] [ -tTerm ] file...\n"
+msgstr ""
+
+#: text-utils/ul.c:136
+msgid "trouble reading terminfo"
+msgstr ""
+
+#: text-utils/ul.c:223
+#, c-format
+msgid "Unknown escape sequence in input: %o, %o\n"
+msgstr ""
+
+#: text-utils/ul.c:372
+msgid "Unable to allocate buffer.\n"
+msgstr ""
+
+#: text-utils/ul.c:529
+msgid "Input line too long.\n"
+msgstr ""
+
+#: text-utils/ul.c:542
+msgid "Out of memory when growing buffer.\n"
+msgstr ""
diff --git a/po/po2tbl.sed b/po/po2tbl.sed
new file mode 100644
index 000000000..b3bcca4d7
--- /dev/null
+++ b/po/po2tbl.sed
@@ -0,0 +1,102 @@
+# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets
+# Copyright (C) 1995 Free Software Foundation, Inc.
+# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+1 {
+ i\
+/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\
+\
+#if HAVE_CONFIG_H\
+# include <config.h>\
+#endif\
+\
+#include "libgettext.h"\
+\
+const struct _msg_ent _msg_tbl[] = {
+ h
+ s/.*/0/
+ x
+}
+#
+# Write msgid entries in C array form.
+#
+/^msgid/ {
+ s/msgid[ ]*\(".*"\)/ {\1/
+ tb
+# Append the next line
+ :b
+ N
+# Look whether second part is continuation line.
+ s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/
+# Yes, then branch.
+ ta
+# Because we assume that the input file correctly formed the line
+# just read cannot be again be a msgid line. So it's safe to ignore
+# it.
+ s/\(.*\)\n.*/\1/
+ bc
+# We found a continuation line. But before printing insert '\'.
+ :a
+ s/\(.*\)\(\n.*\)/\1\\\2/
+ P
+# We cannot use D here.
+ s/.*\n\(.*\)/\1/
+# Some buggy seds do not clear the `successful substitution since last ``t'''
+# flag on `N', so we do a `t' here to clear it.
+ tb
+# Not reached
+ :c
+ x
+# The following nice solution is by
+# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+ td
+# Increment a decimal number in pattern space.
+# First hide trailing `9' digits.
+ :d
+ s/9\(_*\)$/_\1/
+ td
+# Assure at least one digit is available.
+ s/^\(_*\)$/0\1/
+# Increment the last digit.
+ s/8\(_*\)$/9\1/
+ s/7\(_*\)$/8\1/
+ s/6\(_*\)$/7\1/
+ s/5\(_*\)$/6\1/
+ s/4\(_*\)$/5\1/
+ s/3\(_*\)$/4\1/
+ s/2\(_*\)$/3\1/
+ s/1\(_*\)$/2\1/
+ s/0\(_*\)$/1\1/
+# Convert the hidden `9' digits to `0's.
+ s/_/0/g
+ x
+ G
+ s/\(.*\)\n\([0-9]*\)/\1, \2},/
+ s/\(.*\)"$/\1/
+ p
+}
+#
+# Last line.
+#
+$ {
+ i\
+};\
+
+ g
+ s/0*\(.*\)/int _msg_tbl_length = \1;/p
+}
+d
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 000000000..f423be796
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,7519 @@
+# util-linux 2.9h translation to brazilian portuguese (pt_BR)
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Arnaldo Carvalho de Melo <acme@conectiva.com.br>, 1999.
+# Ricardo Stefani <ricardos@francanet.com.br>, 1999
+# Marcus Moreira <marcusms@frb.br>
+# Paulo Henrique R Pinheiro <nulo@sul.com.br>
+#
+# Free redistribution is permitted.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: util-linux 2.9h\n"
+"POT-Creation-Date: 1999-03-20 12:27-0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Arnaldo Carvalho de Melo <acme@conectiva.com.br>\n"
+"Language-Team: pt_BR <pt@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: mime\n"
+
+#: disk-utils/fdformat.c:33
+msgid "Formatting ... "
+msgstr "Formatando... "
+
+#: disk-utils/fdformat.c:51 disk-utils/fdformat.c:86
+msgid "done\n"
+msgstr "feito\n"
+
+#: disk-utils/fdformat.c:62
+msgid "Verifying ... "
+msgstr "Verificando... "
+
+#: disk-utils/fdformat.c:73
+msgid "Read: "
+msgstr ""
+
+#: disk-utils/fdformat.c:75
+#, c-format
+msgid "Problem reading cylinder %d, expected %d, read %d\n"
+msgstr ""
+
+#: disk-utils/fdformat.c:81
+#, c-format
+msgid ""
+"bad data in cyl %d\n"
+"Continuing ... "
+msgstr ""
+
+#: disk-utils/fdformat.c:96
+#, c-format
+msgid "usage: %s [ -n ] device\n"
+msgstr "Uso: %s [ -n ] dispositivo ...\n"
+
+#: disk-utils/fdformat.c:122
+#, c-format
+msgid "%s: not a floppy device\n"
+msgstr "%s: năo é um dispositivo de disco flexível\n"
+
+#: disk-utils/fdformat.c:128
+msgid "Could not determine current format type"
+msgstr "Năo foi possível determinar o tipo corrente do formato"
+
+#: disk-utils/fdformat.c:129
+#, c-format
+msgid "%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"
+msgstr "%s, %d trilhas, %d setores/trilha. Capacidade total: %d Kb.\n"
+
+#: disk-utils/fdformat.c:130
+msgid "Double"
+msgstr "Dupla face"
+
+#: disk-utils/fdformat.c:130
+msgid "Single"
+msgstr "Face única"
+
+#: disk-utils/fsck.minix.c:288
+#, c-format
+msgid "%s is mounted.\t "
+msgstr "%s está montado.\t "
+
+#: disk-utils/fsck.minix.c:290
+msgid "Do you really want to continue"
+msgstr "Vocę quer realmente continuar"
+
+#: disk-utils/fsck.minix.c:294
+msgid "check aborted.\n"
+msgstr "verificaçăo abortada.\n"
+
+#: disk-utils/fsck.minix.c:311 disk-utils/fsck.minix.c:331
+msgid "Zone nr < FIRSTZONE in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:313 disk-utils/fsck.minix.c:333
+msgid "Zone nr >= ZONES in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:318 disk-utils/fsck.minix.c:338
+msgid "Remove block"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:356
+msgid "Read error: unable to seek to block in file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:362
+msgid "Read error: bad block in file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:378
+msgid ""
+"Internal error: trying to write bad block\n"
+"Write request ignored\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:386
+msgid "Write error: bad block in file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:607
+msgid "Warning: Firstzone != Norm_firstzone\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:612 disk-utils/mkfs.minix.c:528
+#, c-format
+msgid "%ld inodes\n"
+msgstr "%ld inodos\n"
+
+#: disk-utils/fsck.minix.c:613 disk-utils/mkfs.minix.c:529
+#, c-format
+msgid "%ld blocks\n"
+msgstr "%ld blocos\n"
+
+#: disk-utils/fsck.minix.c:614 disk-utils/mkfs.minix.c:530
+#, c-format
+msgid "Firstdatazone=%ld (%ld)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:615 disk-utils/mkfs.minix.c:531
+#, c-format
+msgid "Zonesize=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:616
+#, c-format
+msgid "Maxsize=%ld\n"
+msgstr "TamMáximo=%ld\n"
+
+#: disk-utils/fsck.minix.c:617
+#, c-format
+msgid "Filesystem state=%d\n"
+msgstr "Estado do sistema de arquivos=%d\n"
+
+#: disk-utils/fsck.minix.c:618
+#, c-format
+msgid ""
+"namelen=%d\n"
+"\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:632 disk-utils/fsck.minix.c:684
+#, c-format
+msgid "Inode %d marked not used, but used for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:637 disk-utils/fsck.minix.c:688
+msgid "Mark in use"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:659 disk-utils/fsck.minix.c:708
+#, c-format
+msgid " has mode %05o\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:665 disk-utils/fsck.minix.c:713
+msgid "Warning: inode count too big.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:749 disk-utils/fsck.minix.c:783
+msgid "Block has been used before. Now in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:752 disk-utils/fsck.minix.c:786
+#: disk-utils/fsck.minix.c:1114 disk-utils/fsck.minix.c:1123
+#: disk-utils/fsck.minix.c:1167 disk-utils/fsck.minix.c:1176
+msgid "Clear"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:761 disk-utils/fsck.minix.c:795
+#, c-format
+msgid "Block %d in file `"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:763 disk-utils/fsck.minix.c:797
+msgid "' is marked not in use."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:764 disk-utils/fsck.minix.c:798
+msgid "Correct"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:948 disk-utils/fsck.minix.c:1012
+msgid " contains a bad inode number for file '"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:950 disk-utils/fsck.minix.c:1014
+msgid " Remove"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:964 disk-utils/fsck.minix.c:1028
+msgid ": bad directory: '.' isn't first\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:971 disk-utils/fsck.minix.c:1036
+msgid ": bad directory: '..' isn't second\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1071
+msgid ": bad directory: size<32"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1090
+msgid ": bad directory: size < 32"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1113 disk-utils/fsck.minix.c:1166
+#, c-format
+msgid "Inode %d mode not cleared."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1122 disk-utils/fsck.minix.c:1175
+#, c-format
+msgid "Inode %d not used, marked used in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1128 disk-utils/fsck.minix.c:1181
+#, c-format
+msgid "Inode %d used, marked unused in the bitmap."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1134 disk-utils/fsck.minix.c:1186
+#, c-format
+msgid "Inode %d (mode = %07o), i_nlinks=%d, counted=%d."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1136 disk-utils/fsck.minix.c:1188
+msgid "Set i_nlinks to count"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1148 disk-utils/fsck.minix.c:1200
+#, c-format
+msgid "Zone %d: marked in use, no file uses it."
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1149 disk-utils/fsck.minix.c:1201
+msgid "Unmark"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1153 disk-utils/fsck.minix.c:1205
+#, c-format
+msgid "Zone %d: %sin use, counted=%d\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1154 disk-utils/fsck.minix.c:1206
+msgid "not "
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1182
+msgid "Set"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1296
+#, c-format
+msgid "%s is clean, no check.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1300
+#, c-format
+msgid "Forcing filesystem check on %s.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1302
+#, c-format
+msgid "Filesystem on %s is dirty, needs checking.\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1331
+msgid ""
+"\n"
+"%6ld inodes used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1336
+msgid "%6ld zones used (%ld%%)\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1338
+#, c-format
+msgid ""
+"\n"
+"%6d regular files\n"
+"%6d directories\n"
+"%6d character device files\n"
+"%6d block device files\n"
+"%6d links\n"
+"%6d symbolic links\n"
+"------\n"
+"%6d files\n"
+msgstr ""
+
+#: disk-utils/fsck.minix.c:1351
+msgid ""
+"----------------------------\n"
+"FILE SYSTEM HAS BEEN CHANGED\n"
+"----------------------------\n"
+msgstr ""
+
+#: disk-utils/mkfs.c:66
+msgid "Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n"
+msgstr ""
+"Uso: mkfs [-V] [-t tipoSistArq] [opçőes-sistArq] dispositivo [tamanho]\n"
+
+#: disk-utils/mkfs.c:80 fdisk/cfdisk.c:324 getopt-1.0.3b/getopt.c:85
+#: getopt-1.0.3b/getopt.c:95 login-utils/wall.c:221 mount/sundries.c:192
+#, c-format
+msgid "%s: Out of memory!\n"
+msgstr "%s: faltou memória!\n"
+
+#: disk-utils/mkfs.c:89
+msgid "mkfs version "
+msgstr "mkfs versăo "
+
+#: disk-utils/mkfs.minix.c:186
+#, c-format
+msgid "Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:210
+#, c-format
+msgid "%s is mounted; will not make a filesystem here!"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:271
+msgid "seek to boot block failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:273
+msgid "unable to clear boot sector"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:275
+msgid "seek failed in write_tables"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:277
+msgid "unable to write super-block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:279
+msgid "unable to write inode map"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:281
+msgid "unable to write zone map"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:283
+msgid "unable to write inodes"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:290
+msgid "seek failed in write_block"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:292
+msgid "write failed in write_block"
+msgstr ""
+
+#. Could make triple indirect block here
+#: disk-utils/mkfs.minix.c:300 disk-utils/mkfs.minix.c:374
+#: disk-utils/mkfs.minix.c:425
+msgid "too many bad blocks"
+msgstr "número excessivo de blocos ruins"
+
+#: disk-utils/mkfs.minix.c:308
+msgid "not enough good blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:517
+msgid "unable to allocate buffers for maps"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:526
+msgid "unable to allocate buffer for inodes"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:532
+#, c-format
+msgid ""
+"Maxsize=%ld\n"
+"\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:546
+msgid "seek failed during testing of blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:554
+msgid "Weird values in do_check: probably bugs\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:585
+msgid "seek failed in check_blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:594
+msgid "bad blocks before data-area: cannot make fs"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:600 disk-utils/mkfs.minix.c:622
+#, c-format
+msgid "%d bad blocks\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:602 disk-utils/mkfs.minix.c:624
+msgid "one bad block\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:614
+msgid "can't open file of bad blocks"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:637 disk-utils/mkfs.minix.c:640
+msgid "bad inode size"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:669
+#, c-format
+msgid "%s: not compiled with minix v2 support\n"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:685
+msgid "strtol error: number of blocks not specified"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:717
+#, c-format
+msgid "unable to open %s"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:719
+#, c-format
+msgid "unable to stat %s"
+msgstr ""
+
+#: disk-utils/mkfs.minix.c:723
+#, c-format
+msgid "will not try to make filesystem on '%s'"
+msgstr ""
+
+#: disk-utils/mkswap.c:99
+#, c-format
+msgid "Assuming pages of size %d\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:191
+#, c-format
+msgid "%d bad page%s\n"
+msgstr "%d páginas inválida%s\n"
+
+#: disk-utils/mkswap.c:191 login-utils/shutdown.c:433
+#: login-utils/shutdown.c:436
+msgid "s"
+msgstr ""
+
+#: disk-utils/mkswap.c:294
+#, c-format
+msgid "%s: error: Nowhere to set up swap on?\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:313
+#, c-format
+msgid "%s: error: unknown version %d\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:319
+#, c-format
+msgid "%s: error: swap area needs to be at least %ldkB\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:326
+#, c-format
+msgid "%s: warning: truncating swap area to %ldkB\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:353
+#, c-format
+msgid ""
+"%s: Device '%s' contains a valid Sun disklabel.\n"
+"This probably means creating v0 swap would destroy your partition table\n"
+"No swap created. If you really want to create swap v0 on that device, use\n"
+"the -f option to force it.\n"
+msgstr ""
+
+#: disk-utils/mkswap.c:378
+#, c-format
+msgid "Setting up swapspace version %d, size = %ld bytes\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:30
+#, c-format
+msgid "Invalid number: %s\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:80
+#, c-format
+msgid "Syntax error: '%s'\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:90
+#, c-format
+msgid "No such parameter set: '%s'\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:100
+#, c-format
+msgid "usage: %s [ -p ] dev name\n"
+msgstr "Uso: %s [ -p ] dispositivo\n"
+
+#: disk-utils/setfdprm.c:101
+#, c-format
+msgid ""
+" %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:104
+#, c-format
+msgid " %s [ -c | -y | -n | -d ] dev\n"
+msgstr ""
+
+#: disk-utils/setfdprm.c:106
+#, c-format
+msgid " %s [ -c | -y | -n ] dev\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:349 fdisk/cfdisk.c:1764
+msgid "Unusable"
+msgstr ""
+
+#: fdisk/cfdisk.c:351 fdisk/cfdisk.c:1766
+msgid "Free Space"
+msgstr "Espaço Livre"
+
+#: fdisk/cfdisk.c:354
+msgid "Linux ext2"
+msgstr ""
+
+#. also Solaris
+#: fdisk/cfdisk.c:356 fdisk/i386_sys_types.c:53
+msgid "Linux"
+msgstr ""
+
+#: fdisk/cfdisk.c:359
+msgid "OS/2 HPFS"
+msgstr ""
+
+#: fdisk/cfdisk.c:361
+msgid "OS/2 IFS"
+msgstr ""
+
+#: fdisk/cfdisk.c:365
+msgid "NTFS"
+msgstr ""
+
+#: fdisk/cfdisk.c:376
+msgid "Disk has been changed.\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:377
+msgid "Reboot the system to ensure the partition table is correctly updated.\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:380
+msgid ""
+"\n"
+"WARNING: If you have created or modified any\n"
+"DOS 6.x partitions, please see the cfdisk manual\n"
+"page for additional information.\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:475
+msgid "FATAL ERROR"
+msgstr ""
+
+#: fdisk/cfdisk.c:484
+msgid "Press any key to exit fdisk"
+msgstr ""
+
+#: fdisk/cfdisk.c:520 fdisk/cfdisk.c:528
+msgid "Cannot seek on disk drive"
+msgstr ""
+
+#: fdisk/cfdisk.c:522
+msgid "Cannot read disk drive"
+msgstr ""
+
+#: fdisk/cfdisk.c:530
+msgid "Cannot write disk drive"
+msgstr ""
+
+#: fdisk/cfdisk.c:767
+msgid "Too many parts"
+msgstr "Número excessivo de partiçőes"
+
+#: fdisk/cfdisk.c:772
+msgid "Partition begins before sector 0"
+msgstr ""
+
+#: fdisk/cfdisk.c:777
+msgid "Partition ends before sector 0"
+msgstr ""
+
+#: fdisk/cfdisk.c:782
+msgid "Partition begins after end-of-disk"
+msgstr "A partiçăo começa depois do fim do disco"
+
+#: fdisk/cfdisk.c:787
+msgid "Partition ends after end-of-disk"
+msgstr "A partiçăo se estende até depois do fim do disco"
+
+#: fdisk/cfdisk.c:835
+msgid ""
+"!!!! Internal error creating logical drive with no extended partition !!!!"
+msgstr ""
+
+#: fdisk/cfdisk.c:846 fdisk/cfdisk.c:858
+msgid ""
+"Cannot create logical drive here -- would create two extended partitions"
+msgstr ""
+
+#: fdisk/cfdisk.c:1002
+msgid "Menu item too long. Menu may look odd."
+msgstr ""
+
+#: fdisk/cfdisk.c:1051
+msgid "Menu without direction. Defaulting horizontal."
+msgstr ""
+
+#: fdisk/cfdisk.c:1166
+msgid "Illegal key"
+msgstr ""
+
+#: fdisk/cfdisk.c:1189
+msgid "Press a key to continue"
+msgstr "Pressione uma tecla para continuar"
+
+#: fdisk/cfdisk.c:1236 fdisk/cfdisk.c:1735 fdisk/cfdisk.c:2261
+#: fdisk/cfdisk.c:2263
+msgid "Primary"
+msgstr "Primária"
+
+#: fdisk/cfdisk.c:1236
+msgid "Create a new primary partition"
+msgstr "Cria uma nova partiçăo primária"
+
+#: fdisk/cfdisk.c:1237 fdisk/cfdisk.c:1735 fdisk/cfdisk.c:2260
+#: fdisk/cfdisk.c:2263
+msgid "Logical"
+msgstr "Lógica"
+
+#: fdisk/cfdisk.c:1237
+msgid "Create a new logical partition"
+msgstr "Cria uma nova partiçăo lógica"
+
+#: fdisk/cfdisk.c:1238 fdisk/cfdisk.c:1291 fdisk/cfdisk.c:1947
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: fdisk/cfdisk.c:1238 fdisk/cfdisk.c:1291
+msgid "Don't create a partition"
+msgstr "Năo crie a partiçăo"
+
+#: fdisk/cfdisk.c:1254
+msgid "!!! Internal error !!!"
+msgstr "!!! Erro interno !!!"
+
+#: fdisk/cfdisk.c:1257
+msgid "Size (in MB): "
+msgstr "Tamanho (em MB): "
+
+#: fdisk/cfdisk.c:1289
+msgid "Beginning"
+msgstr "Início"
+
+#: fdisk/cfdisk.c:1289
+msgid "Add partition at beginning of free space"
+msgstr "Adicionar uma partiçăo no início do espaço livre"
+
+#: fdisk/cfdisk.c:1290
+msgid "End"
+msgstr "Fim"
+
+#: fdisk/cfdisk.c:1290
+msgid "Add partition at end of free space"
+msgstr ""
+
+#: fdisk/cfdisk.c:1308
+msgid "No room to create the extended partition"
+msgstr "Espaço insuficiente para criaçăo de partiçăo estendida"
+
+#: fdisk/cfdisk.c:1354
+msgid "Cannot open disk drive"
+msgstr ""
+
+#: fdisk/cfdisk.c:1356 fdisk/cfdisk.c:1546
+msgid "Opened disk read-only - you have no permission to write"
+msgstr ""
+
+#: fdisk/cfdisk.c:1386
+msgid "Cannot read disk drive geometry"
+msgstr "Năo foi possível ler a geometria do disco"
+
+#: fdisk/cfdisk.c:1408
+msgid "Bad primary partition"
+msgstr "Partiçăo primária inválida"
+
+#: fdisk/cfdisk.c:1438
+msgid "Bad logical partition"
+msgstr "Partiçăo lógica inválida"
+
+#: fdisk/cfdisk.c:1558
+msgid "Warning!! This may destroy data on your disk!"
+msgstr ""
+
+#: fdisk/cfdisk.c:1562
+msgid "Are you sure you want write the partition table to disk? (yes or no): "
+msgstr ""
+
+#: fdisk/cfdisk.c:1571
+msgid "Did not write partition table to disk"
+msgstr "A tabela de partiçőes NĂO foi gravada no disco"
+
+#: fdisk/cfdisk.c:1579
+msgid "Please enter `yes' or `no'"
+msgstr ""
+
+#: fdisk/cfdisk.c:1583
+msgid "Writing partition table to disk..."
+msgstr "Gravando tabela de partiçőes no disco..."
+
+#: fdisk/cfdisk.c:1608 fdisk/cfdisk.c:1612
+msgid "Wrote partition table to disk"
+msgstr "A tabela de partiçőes foi gravada no disco"
+
+#: fdisk/cfdisk.c:1610
+msgid ""
+"Wrote partition table, but re-read table failed. Reboot to update table."
+msgstr ""
+
+#: fdisk/cfdisk.c:1620
+msgid ""
+"Not precisely one primary partition is bootable. DOS MBR cannot boot this."
+msgstr ""
+
+#: fdisk/cfdisk.c:1678 fdisk/cfdisk.c:1796 fdisk/cfdisk.c:1888
+msgid "Enter filename or press RETURN to display on screen: "
+msgstr ""
+
+#: fdisk/cfdisk.c:1686 fdisk/cfdisk.c:1804 fdisk/cfdisk.c:1896
+#, c-format
+msgid "Cannot open file '%s'"
+msgstr ""
+
+#: fdisk/cfdisk.c:1697
+#, c-format
+msgid "Disk Drive: %s\n"
+msgstr "Disco: %s\n"
+
+#: fdisk/cfdisk.c:1699
+msgid "Sector 0:\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1706
+#, c-format
+msgid "Sector %d:\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1726
+msgid " None "
+msgstr ""
+
+#: fdisk/cfdisk.c:1728
+msgid " Pri/Log"
+msgstr ""
+
+#: fdisk/cfdisk.c:1730
+msgid " Primary"
+msgstr ""
+
+#: fdisk/cfdisk.c:1732
+msgid " Logical"
+msgstr ""
+
+#. odd flag on end
+#. type id
+#. type name
+#: fdisk/cfdisk.c:1770 fdisk/fdisk.c:1045 fdisk/fdisk.c:1194
+#: fdisk/fdisksgilabel.c:224 fdisk/fdisksunlabel.c:644 fdisk/sfdisk.c:551
+msgid "Unknown"
+msgstr ""
+
+#: fdisk/cfdisk.c:1776
+#, c-format
+msgid "Boot (%02X)"
+msgstr ""
+
+#: fdisk/cfdisk.c:1778 fdisk/cfdisk.c:2269
+#, c-format
+msgid "Unknown (%02X)"
+msgstr ""
+
+#: fdisk/cfdisk.c:1780
+#, c-format
+msgid "None (%02X)"
+msgstr ""
+
+#: fdisk/cfdisk.c:1815 fdisk/cfdisk.c:1907
+#, c-format
+msgid "Partition Table for %s\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1817
+msgid " First Last\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1818
+msgid ""
+" # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1819
+msgid ""
+"-- ------- -------- --------- ------ --------- ---------------------- "
+"---------\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1909
+msgid " ---Starting--- ----Ending---- Start Number of\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1910
+msgid " # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1911
+msgid "-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n"
+msgstr ""
+
+#: fdisk/cfdisk.c:1944
+msgid "Raw"
+msgstr ""
+
+#: fdisk/cfdisk.c:1944
+msgid "Print the table using raw data format"
+msgstr ""
+
+#: fdisk/cfdisk.c:1945 fdisk/cfdisk.c:2050
+msgid "Sectors"
+msgstr ""
+
+#: fdisk/cfdisk.c:1945
+msgid "Print the table ordered by sectors"
+msgstr ""
+
+#: fdisk/cfdisk.c:1946
+msgid "Table"
+msgstr ""
+
+#: fdisk/cfdisk.c:1946
+msgid "Just print the partition table"
+msgstr ""
+
+#: fdisk/cfdisk.c:1947
+msgid "Don't print the table"
+msgstr ""
+
+#: fdisk/cfdisk.c:1976
+msgid "Help Screen for cfdisk "
+msgstr ""
+
+#: fdisk/cfdisk.c:1978
+msgid "This is cfdisk, a curses based disk partitioning program, which"
+msgstr ""
+
+#: fdisk/cfdisk.c:1979
+msgid "allows you to create, delete and modify partitions on your hard"
+msgstr ""
+
+#: fdisk/cfdisk.c:1980
+msgid "disk drive."
+msgstr ""
+
+#: fdisk/cfdisk.c:1982
+msgid "Copyright (C) 1994-1998 Kevin E. Martin & aeb"
+msgstr ""
+
+#: fdisk/cfdisk.c:1984
+msgid "Command Meaning"
+msgstr ""
+
+#: fdisk/cfdisk.c:1985
+msgid "------- -------"
+msgstr ""
+
+#: fdisk/cfdisk.c:1986
+msgid " b Toggle bootable flag of the current partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:1987
+msgid " d Delete the current partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:1988
+msgid " g Change cylinders, heads, sectors-per-track parameters"
+msgstr ""
+
+#: fdisk/cfdisk.c:1989
+msgid " WARNING: This option should only be used by people who"
+msgstr ""
+
+#: fdisk/cfdisk.c:1990
+msgid " know what they are doing."
+msgstr ""
+
+#: fdisk/cfdisk.c:1991
+msgid " h Print this screen"
+msgstr ""
+
+#: fdisk/cfdisk.c:1992
+msgid " m Maximize disk usage of the current partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:1993
+msgid " Note: This may make the partition incompatible with"
+msgstr ""
+
+#: fdisk/cfdisk.c:1994
+msgid " DOS, OS/2, ..."
+msgstr ""
+
+#: fdisk/cfdisk.c:1995
+msgid " n Create new partition from free space"
+msgstr ""
+
+#: fdisk/cfdisk.c:1996
+msgid " p Print partition table to the screen or to a file"
+msgstr ""
+
+#: fdisk/cfdisk.c:1997
+msgid " There are several different formats for the partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:1998
+msgid " that you can choose from:"
+msgstr ""
+
+#: fdisk/cfdisk.c:1999
+msgid " r - Raw data (exactly what would be written to disk)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2000
+msgid " s - Table ordered by sectors"
+msgstr ""
+
+#: fdisk/cfdisk.c:2001
+msgid " t - Table in raw format"
+msgstr ""
+
+#: fdisk/cfdisk.c:2002
+msgid " q Quit program without writing partition table"
+msgstr ""
+
+#: fdisk/cfdisk.c:2003
+msgid " t Change the filesystem type"
+msgstr ""
+
+#: fdisk/cfdisk.c:2004
+msgid " u Change units of the partition size display"
+msgstr ""
+
+#: fdisk/cfdisk.c:2005
+msgid " Rotates through Mb, sectors and cylinders"
+msgstr ""
+
+#: fdisk/cfdisk.c:2006
+msgid " W Write partition table to disk (must enter upper case W)"
+msgstr ""
+
+#: fdisk/cfdisk.c:2007
+msgid " Since this might destroy data on the disk, you must"
+msgstr ""
+
+#: fdisk/cfdisk.c:2008
+msgid " either confirm or deny the write by entering `yes' or"
+msgstr ""
+
+#: fdisk/cfdisk.c:2009
+msgid " `no'"
+msgstr ""
+
+#: fdisk/cfdisk.c:2010
+msgid "Up Arrow Move cursor to the previous partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2011
+msgid "Down Arrow Move cursor to the next partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2012
+msgid "CTRL-L Redraws the screen"
+msgstr ""
+
+#: fdisk/cfdisk.c:2013
+msgid " ? Print this screen"
+msgstr ""
+
+#: fdisk/cfdisk.c:2015
+msgid "Note: All of the commands can be entered with either upper or lower"
+msgstr ""
+
+#: fdisk/cfdisk.c:2016
+msgid "case letters (except for Writes)."
+msgstr ""
+
+#: fdisk/cfdisk.c:2048 fdisk/cfdisk.c:2350 fdisk/fdisksunlabel.c:305
+#: fdisk/fdisksunlabel.c:307
+msgid "Cylinders"
+msgstr "Cilindros"
+
+#: fdisk/cfdisk.c:2048
+msgid "Change cylinder geometry"
+msgstr "Mudar geometria dos cilindros"
+
+#: fdisk/cfdisk.c:2049 fdisk/fdisksunlabel.c:302
+msgid "Heads"
+msgstr "Cabeças"
+
+#: fdisk/cfdisk.c:2049
+msgid "Change head geometry"
+msgstr "Mudar geometria dos cilindros"
+
+#: fdisk/cfdisk.c:2050
+msgid "Change sector geometry"
+msgstr "Mudar geometria dos setores"
+
+#: fdisk/cfdisk.c:2051
+msgid "Done"
+msgstr "Feito"
+
+#: fdisk/cfdisk.c:2051
+msgid "Done with changing geometry"
+msgstr "A mudança da geometria foi feita"
+
+#: fdisk/cfdisk.c:2064
+msgid "Enter the number of cylinders: "
+msgstr "Informe o número de cilindros: "
+
+#: fdisk/cfdisk.c:2071 fdisk/cfdisk.c:2614
+msgid "Illegal cylinders value"
+msgstr ""
+
+#: fdisk/cfdisk.c:2077
+msgid "Enter the number of heads: "
+msgstr "Informe o número de cabeças: "
+
+#: fdisk/cfdisk.c:2084 fdisk/cfdisk.c:2621
+msgid "Illegal heads value"
+msgstr ""
+
+#: fdisk/cfdisk.c:2090
+msgid "Enter the number of sectors per track: "
+msgstr "Informe o número de setores por trilha: "
+
+#: fdisk/cfdisk.c:2097 fdisk/cfdisk.c:2628
+msgid "Illegal sectors value"
+msgstr "Valor de setores inválido"
+
+#: fdisk/cfdisk.c:2196
+msgid "Enter filesystem type: "
+msgstr "Informe o tipo do sistema de arquivos: "
+
+#: fdisk/cfdisk.c:2214
+msgid "Cannot change FS Type to empty"
+msgstr "Năo foi possível mudar o tipo de SA para vazio"
+
+#: fdisk/cfdisk.c:2216
+msgid "Cannot change FS Type to extended"
+msgstr ""
+
+#: fdisk/cfdisk.c:2238 fdisk/fdisksunlabel.c:44
+msgid "Boot"
+msgstr "Inicial."
+
+#: fdisk/cfdisk.c:2240
+#, c-format
+msgid "Unk(%02X)"
+msgstr "Desc(%02X)"
+
+#: fdisk/cfdisk.c:2243 fdisk/cfdisk.c:2246
+msgid ", NC"
+msgstr ""
+
+#: fdisk/cfdisk.c:2251 fdisk/cfdisk.c:2254
+msgid "NC"
+msgstr ""
+
+#: fdisk/cfdisk.c:2262
+msgid "Pri/Log"
+msgstr "Pri/Lóg"
+
+#: fdisk/cfdisk.c:2336
+#, c-format
+msgid "Disk Drive: %s"
+msgstr "Disco: %s"
+
+#: fdisk/cfdisk.c:2338
+#, c-format
+msgid "Heads: %d Sectors per Track: %d Cylinders: %d"
+msgstr "Cabeças: %d Setores por Trilha: %d Cilindros: %d"
+
+#: fdisk/cfdisk.c:2342
+msgid "Name"
+msgstr "Nome"
+
+#: fdisk/cfdisk.c:2343
+msgid "Flags"
+msgstr "Opçőes"
+
+#: fdisk/cfdisk.c:2344
+msgid "Part Type"
+msgstr "Tipo Part."
+
+#: fdisk/cfdisk.c:2345
+msgid "FS Type"
+msgstr "Tipo SA"
+
+#: fdisk/cfdisk.c:2346
+msgid "[Label]"
+msgstr "[Rótulo]"
+
+#: fdisk/cfdisk.c:2348
+msgid " Sectors"
+msgstr " Setores"
+
+#: fdisk/cfdisk.c:2352
+msgid "Size (MB)"
+msgstr "Tam. (MB)"
+
+#: fdisk/cfdisk.c:2407
+msgid "Bootable"
+msgstr "Inicial."
+
+#: fdisk/cfdisk.c:2407
+msgid "Toggle bootable flag of the current partition"
+msgstr "Configura a partiçăo corrente como inicializável"
+
+#: fdisk/cfdisk.c:2408
+msgid "Delete"
+msgstr "Remova"
+
+#: fdisk/cfdisk.c:2408
+msgid "Delete the current partition"
+msgstr "Remover partiçăo corrente"
+
+#: fdisk/cfdisk.c:2409
+msgid "Geometry"
+msgstr "Geometria"
+
+#: fdisk/cfdisk.c:2409
+msgid "Change disk geometry (experts only)"
+msgstr "Mudar geometria do disco (somente para experts)"
+
+#: fdisk/cfdisk.c:2410
+msgid "Help"
+msgstr "Ajuda"
+
+#: fdisk/cfdisk.c:2410
+msgid "Print help screen"
+msgstr "Mostrar tela de ajuda"
+
+#: fdisk/cfdisk.c:2411
+msgid "Maximize"
+msgstr "Maximize"
+
+#: fdisk/cfdisk.c:2411
+msgid "Maximize disk usage of the current partition (experts only)"
+msgstr ""
+"Maximizar o uso de disco para a partiçăo corrente (somente para experts)"
+
+#: fdisk/cfdisk.c:2412
+msgid "New"
+msgstr "Nova"
+
+#: fdisk/cfdisk.c:2412
+msgid "Create new partition from free space"
+msgstr "Criar nova partiçăo a partir do espaço livre"
+
+#: fdisk/cfdisk.c:2413
+msgid "Print"
+msgstr "Mostre"
+
+#: fdisk/cfdisk.c:2413
+msgid "Print partition table to the screen or to a file"
+msgstr "Mostrar tabela de particőes na tela ou para um arquivo"
+
+#: fdisk/cfdisk.c:2414
+msgid "Quit"
+msgstr "Saia"
+
+#: fdisk/cfdisk.c:2414
+msgid "Quit program without writing partition table"
+msgstr "Sair do programa sem gravar a tabela de partiçőes"
+
+#: fdisk/cfdisk.c:2415
+msgid "Type"
+msgstr "Tipo"
+
+#: fdisk/cfdisk.c:2415
+msgid "Change the filesystem type (DOS, Linux, OS/2 and so on)"
+msgstr "Mudar o tipo do sistema de arquivos (DOS, Linux, OS/2 e outros)"
+
+#: fdisk/cfdisk.c:2416
+msgid "Units"
+msgstr "Unidades"
+
+#: fdisk/cfdisk.c:2416
+msgid "Change units of the partition size display (MB, sect, cyl)"
+msgstr ""
+"Mudar unidades mostradas para o tamanho das partiçőes (MB, setores, "
+"cilindros)"
+
+#: fdisk/cfdisk.c:2417
+msgid "Write"
+msgstr "Grave"
+
+#: fdisk/cfdisk.c:2417
+msgid "Write partition table to disk (this might destroy data)"
+msgstr "Gravar tabela de partiçőes no disco (isto poderá destruir dados)"
+
+#: fdisk/cfdisk.c:2463
+msgid "Cannot make this partition bootable"
+msgstr ""
+
+#: fdisk/cfdisk.c:2473
+msgid "Cannot delete an empty partition"
+msgstr "Năo foi possível remover uma partiçăo vazia"
+
+#: fdisk/cfdisk.c:2493 fdisk/cfdisk.c:2495
+msgid "Cannot maximize this partition"
+msgstr "Năo foi possível maximizar esta partiçăo"
+
+#: fdisk/cfdisk.c:2503
+msgid "This partition is unusable"
+msgstr ""
+
+#: fdisk/cfdisk.c:2505
+msgid "This partition is already in use"
+msgstr ""
+
+#: fdisk/cfdisk.c:2522
+msgid "Cannot change the type of an empty partition"
+msgstr ""
+
+#: fdisk/cfdisk.c:2547 fdisk/cfdisk.c:2553
+msgid "No more partitions"
+msgstr "Sem mais partiçőes"
+
+#: fdisk/cfdisk.c:2560
+msgid "Illegal command"
+msgstr "Comando inválido"
+
+#: fdisk/cfdisk.c:2570
+msgid "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+msgstr "Copyright (C) 1994-1999 Kevin E. Martin & aeb\n"
+
+#. Unfortunately, xgettext does not handle multi-line strings
+#. so, let's use explicit \n's instead
+#: fdisk/cfdisk.c:2577
+#, c-format
+msgid ""
+"\n"
+"Usage:\n"
+"Print version:\n"
+" %s -v\n"
+"Print partition table:\n"
+" %s -P {r|s|t} [options] device\n"
+"Interactive use:\n"
+" %s [options] device\n"
+"\n"
+"Options:\n"
+"-a: Use arrow instead of highlighting;\n"
+"-z: Start with a zero partition table, instead of reading the pt from disk;\n"
+"-c C -h H -s S: Override the kernel's idea of the number of cylinders,\n"
+" the number of heads and the number of sectors/track.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:235
+msgid ""
+"Usage: fdisk [-b SSZ] [-u] [DISK] Change partition table\n"
+" fdisk -l [-b SSZ] [-u] [DISK] List partition table(s)\n"
+" fdisk -s PARTITION Give partition size(s) in blocks\n"
+" fdisk -v Give fdisk version\n"
+"Here DISK is something like /dev/hdb or /dev/sda\n"
+"and PARTITION is something like /dev/hda7\n"
+"-u: give Start and End in sector (instead of cylinder) units\n"
+"-b 2048: (for certain MO drives) use 2048-byte sectors\n"
+msgstr ""
+
+#: fdisk/fdisk.c:245
+msgid "A disk block device is needed.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:248
+msgid ""
+"Given name does not refer to a partition,\n"
+"or maybe not even to a block device.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:252
+#, c-format
+msgid "Unable to open %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:255
+#, c-format
+msgid "Unable to read %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:258
+#, c-format
+msgid "Unable to seek on %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:261
+#, c-format
+msgid "Unable to write %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:264
+msgid "Unable to allocate any more memory\n"
+msgstr ""
+
+#: fdisk/fdisk.c:266
+msgid "Fatal error\n"
+msgstr ""
+
+#: fdisk/fdisk.c:277 fdisk/fdisk.c:296 fdisk/fdisk.c:314 fdisk/fdisk.c:321
+#: fdisk/fdisk.c:344 fdisk/fdisk.c:362 fdisk/fdiskbsdlabel.c:105
+msgid "Command action"
+msgstr "Comando - açăo"
+
+#: fdisk/fdisk.c:278
+msgid " a toggle a read only flag"
+msgstr " a configura a opçăo de somente leitura"
+
+#. sun
+#: fdisk/fdisk.c:279 fdisk/fdisk.c:323
+msgid " b edit bsd disklabel"
+msgstr " b edita rótulo BSD no disco"
+
+#: fdisk/fdisk.c:280
+msgid " c toggle the mountable flag"
+msgstr " c configura a opçăo \"montável\""
+
+#. sun
+#: fdisk/fdisk.c:281 fdisk/fdisk.c:300 fdisk/fdisk.c:325
+msgid " d delete a partition"
+msgstr " d remova uma partiçăo"
+
+#: fdisk/fdisk.c:282 fdisk/fdisk.c:301 fdisk/fdisk.c:326
+msgid " l list known partition types"
+msgstr " l lista os tipos de partiçăo conhecidos"
+
+#. sun
+#: fdisk/fdisk.c:283 fdisk/fdisk.c:302 fdisk/fdisk.c:315 fdisk/fdisk.c:327
+#: fdisk/fdisk.c:352 fdisk/fdisk.c:369 fdisk/fdiskbsdlabel.c:110
+msgid " m print this menu"
+msgstr " m mostra este menu"
+
+#: fdisk/fdisk.c:284 fdisk/fdisk.c:303 fdisk/fdisk.c:328
+msgid " n add a new partition"
+msgstr " n cria uma nova partiçăo"
+
+#: fdisk/fdisk.c:285 fdisk/fdisk.c:304 fdisk/fdisk.c:316 fdisk/fdisk.c:329
+msgid " o create a new empty DOS partition table"
+msgstr " o cria uma nova tabela de partiçőes DOS vazia"
+
+#: fdisk/fdisk.c:286 fdisk/fdisk.c:305 fdisk/fdisk.c:330 fdisk/fdisk.c:353
+#: fdisk/fdisk.c:370
+msgid " p print the partition table"
+msgstr " p mostra a tabela de partiçőes"
+
+#: fdisk/fdisk.c:287 fdisk/fdisk.c:306 fdisk/fdisk.c:317 fdisk/fdisk.c:331
+#: fdisk/fdisk.c:354 fdisk/fdisk.c:371 fdisk/fdiskbsdlabel.c:113
+msgid " q quit without saving changes"
+msgstr " q sai sem salvar as mudanças"
+
+#: fdisk/fdisk.c:288 fdisk/fdisk.c:307 fdisk/fdisk.c:318 fdisk/fdisk.c:332
+msgid " s create a new empty Sun disklabel"
+msgstr " s cria um novo rotúlo de disco Sun vazio"
+
+#. sun
+#: fdisk/fdisk.c:289 fdisk/fdisk.c:308 fdisk/fdisk.c:333
+msgid " t change a partition's system id"
+msgstr " t muda a identificaçăo da partiçăo para o sistema"
+
+#: fdisk/fdisk.c:290 fdisk/fdisk.c:309 fdisk/fdisk.c:334
+msgid " u change display/entry units"
+msgstr " u muda as unidades das entradas mostradas"
+
+#: fdisk/fdisk.c:291 fdisk/fdisk.c:310 fdisk/fdisk.c:335 fdisk/fdisk.c:357
+#: fdisk/fdisk.c:374
+msgid " v verify the partition table"
+msgstr " v verifica a tabela de partiçőes"
+
+#: fdisk/fdisk.c:292 fdisk/fdisk.c:311 fdisk/fdisk.c:336 fdisk/fdisk.c:358
+#: fdisk/fdisk.c:375
+msgid " w write table to disk and exit"
+msgstr " w grava a tabela para o disco e sai"
+
+#: fdisk/fdisk.c:293 fdisk/fdisk.c:337
+msgid " x extra functionality (experts only)"
+msgstr " x funcionalidade adicional (somente para experts)"
+
+#: fdisk/fdisk.c:297
+msgid " a select bootable partition"
+msgstr " a torna a partiçăo inicializável"
+
+#. sgi flavour
+#: fdisk/fdisk.c:298
+msgid " b edit bootfile entry"
+msgstr " b edita uma entrada de arquivo de inicializaçăo"
+
+#. sgi
+#: fdisk/fdisk.c:299
+msgid " c select sgi swap partition"
+msgstr " c seleciona uma partiçăo de troca sgi"
+
+#: fdisk/fdisk.c:322
+msgid " a toggle a bootable flag"
+msgstr " a configura a opçăo \"inicializável\""
+
+#: fdisk/fdisk.c:324
+msgid " c toggle the dos compatibility flag"
+msgstr ""
+
+# DÚVIDA!!!!
+#: fdisk/fdisk.c:345
+msgid " a change number of alternate cylinders"
+msgstr " a mudar número de cilindros alternativos"
+
+# ^^^^^^^^^^^^
+#. sun
+#: fdisk/fdisk.c:346 fdisk/fdisk.c:364
+msgid " c change number of cylinders"
+msgstr " c mudar número de cilindros"
+
+#: fdisk/fdisk.c:347 fdisk/fdisk.c:365
+msgid " d print the raw data in the partition table"
+msgstr " d mostre os dados brutos (sem formataçăo) da tabela de partiçőes"
+
+#: fdisk/fdisk.c:348
+msgid " e change number of extra sectors per cylinder"
+msgstr " e mudar número de setores extras por cilindro"
+
+#. sun
+#: fdisk/fdisk.c:349 fdisk/fdisk.c:368
+msgid " h change number of heads"
+msgstr " h mudar número de cabeças"
+
+#: fdisk/fdisk.c:350
+msgid " i change interleave factor"
+msgstr " i mudar fator de \"interleave\""
+
+#. sun
+#: fdisk/fdisk.c:351
+msgid " o change rotation speed (rpm)"
+msgstr " o mudar velocidade rotacional (rpm)"
+
+#: fdisk/fdisk.c:355 fdisk/fdisk.c:372 fdisk/fdiskbsdlabel.c:115
+msgid " r return to main menu"
+msgstr " r voltar ao menu principal"
+
+#: fdisk/fdisk.c:356 fdisk/fdisk.c:373
+msgid " s change number of sectors"
+msgstr " s mudar número de setores"
+
+#: fdisk/fdisk.c:359
+msgid " y change number of physical cylinders"
+msgstr " y mudar número de cilindros físicos"
+
+#: fdisk/fdisk.c:363
+msgid " b move beginning of data in a partition"
+msgstr " b mover inicio dos dados em uma partiçăo"
+
+#: fdisk/fdisk.c:366
+msgid " e list extended partitions"
+msgstr " e listar partiçőes estendidas"
+
+#. !sun
+#: fdisk/fdisk.c:367
+msgid " g create an IRIX partition table"
+msgstr " g criar uma tabela de partiçőes IRIX"
+
+#: fdisk/fdisk.c:463
+msgid "You must set"
+msgstr ""
+
+#: fdisk/fdisk.c:477
+msgid "heads"
+msgstr "cabeças"
+
+#: fdisk/fdisk.c:479 fdisk/sfdisk.c:825
+msgid "sectors"
+msgstr "setores"
+
+#: fdisk/fdisk.c:481 fdisk/fdiskbsdlabel.c:441 fdisk/sfdisk.c:825
+msgid "cylinders"
+msgstr "cilindros"
+
+#: fdisk/fdisk.c:485
+#, c-format
+msgid ""
+"%s%s.\n"
+"You can do this from the extra functions menu.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:486
+msgid " and "
+msgstr ""
+
+#: fdisk/fdisk.c:520
+msgid "Bad offset in primary extended partition\n"
+msgstr "Deslocamento (offset) inválido em uma partiçăo primária estendida\n"
+
+#: fdisk/fdisk.c:524
+#, c-format
+msgid "Warning: deleting partitions after %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:545
+#, c-format
+msgid "Warning: extra link pointer in partition table %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:553
+#, c-format
+msgid "Warning: ignoring extra data in partition table %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:579
+msgid ""
+"Building a new DOS disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:615
+msgid "You will not be able to write the partition table.\n"
+msgstr "Vocę năo poderá gravar a tabela de partiçőes.\n"
+
+#: fdisk/fdisk.c:624
+#, c-format
+msgid "Note: sector size is %d (not %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:671
+msgid ""
+"Device contains neither a valid DOS partition table, nor Sun or SGI "
+"disklabel\n"
+msgstr ""
+
+#: fdisk/fdisk.c:687
+msgid "Internal error\n"
+msgstr "Erro interno\n"
+
+#: fdisk/fdisk.c:697
+#, c-format
+msgid "Ignoring extra extended partition %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:704
+#, c-format
+msgid ""
+"Warning: invalid flag 0x%04x of partition table %d will be corrected by "
+"w(rite)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:725
+msgid ""
+"\n"
+"got EOF thrice - exiting..\n"
+msgstr ""
+
+#: fdisk/fdisk.c:762
+msgid "Hex code (type L to list codes): "
+msgstr ""
+
+#: fdisk/fdisk.c:801
+#, c-format
+msgid "%s (%d-%d, default %d): "
+msgstr ""
+
+#: fdisk/fdisk.c:855
+#, c-format
+msgid "Using default value %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:859
+msgid "Value out of range.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:866
+msgid "Partition number"
+msgstr ""
+
+#: fdisk/fdisk.c:874
+#, c-format
+msgid "Warning: partition %d has empty type\n"
+msgstr ""
+
+#: fdisk/fdisk.c:880
+msgid "cylinder"
+msgstr "cilindro"
+
+#: fdisk/fdisk.c:880
+msgid "sector"
+msgstr "setor"
+
+#: fdisk/fdisk.c:887
+#, c-format
+msgid "Changing display/entry units to %ss\n"
+msgstr ""
+
+#: fdisk/fdisk.c:897
+#, c-format
+msgid "WARNING: Partition %d is an extended partition\n"
+msgstr ""
+
+#: fdisk/fdisk.c:910
+msgid "DOS Compatibility flag is set\n"
+msgstr ""
+
+#: fdisk/fdisk.c:914
+msgid "DOS Compatibility flag is not set\n"
+msgstr ""
+
+#: fdisk/fdisk.c:999
+#, c-format
+msgid "Partition %d does not exist yet!\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1004
+msgid ""
+"Type 0 means free space to many systems\n"
+"(but not to Linux). Having partitions of\n"
+"type 0 is probably unwise. You can delete\n"
+"a partition using the `d' command.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1013
+msgid ""
+"You cannot change a partition into an extended one or vice versa\n"
+"Delete it first.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1022
+msgid ""
+"Consider leaving partition 3 as Whole disk (5),\n"
+"as SunOS/Solaris expects it and even Linux likes it.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1028
+msgid ""
+"Consider leaving partition 9 as volume header (0),\n"
+"and partition 11 as entire volume (6)as IRIX expects it.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1042
+#, c-format
+msgid "Changed system type of partition %d to %x (%s)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1095
+#, c-format
+msgid "Partition %d has different physical/logical beginnings (non-Linux?):\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1097 fdisk/fdisk.c:1105 fdisk/fdisk.c:1114 fdisk/fdisk.c:1123
+#, c-format
+msgid " phys=(%d, %d, %d) "
+msgstr ""
+
+#: fdisk/fdisk.c:1098 fdisk/fdisk.c:1106
+#, c-format
+msgid "logical=(%d, %d, %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1103
+#, c-format
+msgid "Partition %d has different physical/logical endings:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1112
+#, c-format
+msgid "Partition %i does not start on cylinder boundary:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1115
+#, c-format
+msgid "should be (%d, %d, 1)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1121
+#, c-format
+msgid "Partition %i does not end on cylinder boundary:\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1124
+#, c-format
+msgid "should be (%d, %d, %d)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1131
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * %d bytes\n"
+"\n"
+msgstr ""
+
+#. FIXME! let's see how this shows up with other languagues
+#. acme@conectiva.com.br
+#: fdisk/fdisk.c:1168
+#, c-format
+msgid "%*s Boot Start End Blocks Id System\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1169 fdisk/fdisksgilabel.c:207 fdisk/fdisksunlabel.c:629
+msgid "Device"
+msgstr ""
+
+#: fdisk/fdisk.c:1209
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %d heads, %d sectors, %d cylinders\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1211
+msgid "Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1250
+#, c-format
+msgid "Warning: partition %d contains sector 0\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1253
+#, c-format
+msgid "Partition %d: head %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1256
+#, c-format
+msgid "Partition %d: sector %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1259
+#, c-format
+msgid "Partitions %d: cylinder %d greater than maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1263
+#, c-format
+msgid "Partition %d: previous sectors %d disagrees with total %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1293
+#, c-format
+msgid "Warning: bad start-of-data in partition %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1301
+#, c-format
+msgid "Warning: partition %d overlaps partition %d.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1319
+#, c-format
+msgid "Warning: partition %d is empty\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1324
+#, c-format
+msgid "Logical partition %d not entirely in partition %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1330
+#, c-format
+msgid "Total allocated sectors %d greater than the maximum %d\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1333
+#, c-format
+msgid "%d unallocated sectors\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1345 fdisk/fdisksgilabel.c:684 fdisk/fdisksunlabel.c:479
+#, c-format
+msgid "Partition %d is already defined. Delete it before re-adding it.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1366 fdisk/fdiskbsdlabel.c:252 fdisk/fdisksgilabel.c:706
+#: fdisk/fdisksunlabel.c:494
+#, c-format
+msgid "First %s"
+msgstr ""
+
+#: fdisk/fdisk.c:1381 fdisk/fdisksunlabel.c:519
+#, c-format
+msgid "Sector %d is already allocated\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1407
+msgid "No free sectors available\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1417 fdisk/fdiskbsdlabel.c:256 fdisk/fdisksunlabel.c:529
+#, c-format
+msgid "Last %s or +size or +sizeM or +sizeK"
+msgstr ""
+
+#: fdisk/fdisk.c:1447
+#, c-format
+msgid "Warning: partition %d has an odd number of sectors.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1484 fdisk/fdiskbsdlabel.c:590
+msgid "The maximum number of partitions has been created\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1494
+msgid "You must delete some partition and add an extended partition first\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1498
+#, c-format
+msgid ""
+"Command action\n"
+" %s\n"
+" p primary partition (1-4)\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1500
+msgid "l logical (5 or over)"
+msgstr ""
+
+#: fdisk/fdisk.c:1500
+msgid "e extended"
+msgstr "e estendida"
+
+#: fdisk/fdisk.c:1517
+#, c-format
+msgid "Invalid partition number for type `%c'\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1549
+msgid ""
+"The partition table has been altered!\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1551
+msgid "Calling ioctl() to re-read partition table.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1568
+msgid "Syncing disks.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1573
+#, c-format
+msgid ""
+"Re-read table failed with error %d: %s.\n"
+"Reboot your system to ensure the partition table is updated.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1579
+msgid ""
+"\n"
+"WARNING: If you have created or modified any DOS 6.x\n"
+"partitions, please see the fdisk manual page for additional\n"
+"information.\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1610
+#, c-format
+msgid "Device: %s\n"
+msgstr "Dispositivo: %s\n"
+
+#: fdisk/fdisk.c:1625
+#, c-format
+msgid "Partition %d has no data area\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1631
+msgid "New beginning of data"
+msgstr ""
+
+#: fdisk/fdisk.c:1645
+msgid "Expert command (m for help): "
+msgstr ""
+
+#: fdisk/fdisk.c:1656
+msgid "Number of cylinders"
+msgstr "Número de cilindros"
+
+#: fdisk/fdisk.c:1677
+msgid "Number of heads"
+msgstr "Número de cabeças"
+
+#: fdisk/fdisk.c:1702
+msgid "Number of sectors"
+msgstr "Número de setores"
+
+#: fdisk/fdisk.c:1705
+msgid "Warning: setting sector offset for DOS compatiblity\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1767
+#, c-format
+msgid "Disk %s doesn't contain a valid partition table\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1781
+#, c-format
+msgid "Cannot open %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1836
+msgid "This kernel finds the sector size itself - -b option ignored\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1839
+msgid ""
+"Warning: the -b (set sector size) option should be used with one specified "
+"device\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1947
+#, c-format
+msgid "Using %s as default device!\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1953
+msgid "Command (m for help): "
+msgstr "Comando (tecle m para obter ajuda): "
+
+#: fdisk/fdisk.c:1967
+#, c-format
+msgid ""
+"\n"
+"The current boot file is: %s\n"
+msgstr ""
+
+#: fdisk/fdisk.c:1969
+msgid "Please enter the name of the new boot file: "
+msgstr ""
+
+#: fdisk/fdisk.c:1971
+msgid "Boot file unchanged\n"
+msgstr ""
+
+#: fdisk/fdisk.c:2031
+msgid ""
+"\n"
+"\tSorry, no experts menu for SGI partition tables available.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdiskaixlabel.c:29
+msgid ""
+"\n"
+"\tThere is a valid AIX label on this disk.\n"
+"\tUnfortunately Linux cannot handle these\n"
+"\tdisks at the moment. Nevertheless some\n"
+"\tadvice:\n"
+"\t1. fdisk will destroy its contents on write.\n"
+"\t2. Be sure that this disk is NOT a still vital\n"
+"\t part of a volume group. (Otherwise you may\n"
+"\t erase the other disks as well, if unmirrored.)\n"
+"\t3. Before deleting this physical volume be sure\n"
+"\t to remove the disk logically from your AIX\n"
+"\t machine. (Otherwise you become an AIXpert)."
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:97
+#, c-format
+msgid ""
+"\n"
+"BSD label for device: %s\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:106
+msgid " d delete a BSD partition"
+msgstr " d remova uma partiçăo BSD"
+
+#: fdisk/fdiskbsdlabel.c:107
+msgid " e edit drive data"
+msgstr " e edita dados do disco"
+
+#: fdisk/fdiskbsdlabel.c:108
+msgid " i install bootstrap"
+msgstr " i instala código de inicializaçăo (bootstrap)"
+
+#: fdisk/fdiskbsdlabel.c:109
+msgid " l list known filesystem types"
+msgstr " l lista os tipos de sistemas de arquivos conhecidos"
+
+#: fdisk/fdiskbsdlabel.c:111
+msgid " n add a new BSD partition"
+msgstr " n cria uma nova partiçăo BSD"
+
+#: fdisk/fdiskbsdlabel.c:112
+msgid " p print BSD partition table"
+msgstr " p mostra a tabela de partiçőes BSD"
+
+#: fdisk/fdiskbsdlabel.c:117
+msgid " s show complete disklabel"
+msgstr " s mostra rótulo (disklabel) completo do disco"
+
+#: fdisk/fdiskbsdlabel.c:118
+msgid " t change a partition's filesystem id"
+msgstr " t muda a identificaçăo do sistema de arquivos"
+
+#: fdisk/fdiskbsdlabel.c:119
+msgid " w write disklabel to disk"
+msgstr " w grava o rótulo do disco para o disco"
+
+#: fdisk/fdiskbsdlabel.c:121
+msgid " x link BSD partition to non-BSD partition"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:146
+#, c-format
+msgid "Partition %s%d has invalid starting sector 0.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:150
+#, c-format
+msgid "Reading disklabel of %s%d at sector %d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:159
+#, c-format
+msgid "There is no *BSD partition on %s.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:174
+msgid "BSD disklabel command (m for help): "
+msgstr "Comando para rótulo de disco BSD (tecle m para obter ajuda): "
+
+#: fdisk/fdiskbsdlabel.c:286
+#, c-format
+msgid "type: %s\n"
+msgstr "tipo: %s\n"
+
+#: fdisk/fdiskbsdlabel.c:288
+#, c-format
+msgid "type: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:289
+#, c-format
+msgid "disk: %.*s\n"
+msgstr "disco: %.*s\n"
+
+#: fdisk/fdiskbsdlabel.c:290
+#, c-format
+msgid "label: %.*s\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:291
+msgid "flags:"
+msgstr "opçőes:"
+
+#: fdisk/fdiskbsdlabel.c:293
+msgid " removable"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:295
+msgid " ecc"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:297
+msgid " badsect"
+msgstr ""
+
+#. On various machines the fields of *lp are short/int/long
+#. In order to avoid problems, we cast them all to long.
+#: fdisk/fdiskbsdlabel.c:301
+#, c-format
+msgid "bytes/sector: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:302
+#, c-format
+msgid "sectors/track: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:303
+#, c-format
+msgid "tracks/cylinder: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:304
+#, c-format
+msgid "sectors/cylinder: %ld\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:305
+#, c-format
+msgid "cylinders: %ld\n"
+msgstr "cilindros: %ld\n"
+
+#: fdisk/fdiskbsdlabel.c:306
+#, c-format
+msgid "rpm: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:307
+#, c-format
+msgid "interleave: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:308
+#, c-format
+msgid "trackskew: %d\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:309
+#, c-format
+msgid "cylinderskew: %d\n"
+msgstr "cylinderskew: %d\n"
+
+#: fdisk/fdiskbsdlabel.c:310
+#, c-format
+msgid "headswitch: %ld\t\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:311
+#, c-format
+msgid "track-to-track seek: %ld\t# milliseconds\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:312
+msgid "drivedata: "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:321
+#, c-format
+msgid ""
+"\n"
+"%d partitions:\n"
+msgstr ""
+"\n"
+"%d partiçőes:\n"
+
+#: fdisk/fdiskbsdlabel.c:322
+msgid "# size offset fstype [fsize bsize cpg]\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:378
+#, c-format
+msgid "Writing disklabel to %s%d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:381
+#, c-format
+msgid "Writing disklabel to %s.\n"
+msgstr "Gravando rótulo de disco para %s.\n"
+
+#: fdisk/fdiskbsdlabel.c:392
+#, c-format
+msgid "%s%d contains no disklabel.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:395
+#, c-format
+msgid "%s contains no disklabel.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:399
+msgid "Do you want to create a disklabel? (y/n) "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:438
+msgid "bytes/sector"
+msgstr "bytes/setor"
+
+#: fdisk/fdiskbsdlabel.c:439
+msgid "sectors/track"
+msgstr "setores/trilha"
+
+#: fdisk/fdiskbsdlabel.c:440
+msgid "tracks/cylinder"
+msgstr "trilhas/cilindro"
+
+#: fdisk/fdiskbsdlabel.c:448
+msgid "sectors/cylinder"
+msgstr "setores/cilindro"
+
+#: fdisk/fdiskbsdlabel.c:452
+msgid "Must be <= sectors/track * tracks/cylinder (default).\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:454
+msgid "rpm"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:455
+msgid "interleave"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:456
+msgid "trackskew"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:457
+msgid "cylinderskew"
+msgstr "cylinderskew"
+
+#: fdisk/fdiskbsdlabel.c:458
+msgid "headswitch"
+msgstr "headswitch"
+
+#: fdisk/fdiskbsdlabel.c:459
+msgid "track-to-track seek"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:500
+#, c-format
+msgid "Bootstrap: %sboot -> boot%s (%s): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:526
+msgid "Bootstrap overlaps with disk label!\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:547
+#, c-format
+msgid "Bootstrap installed on %s%d.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:549
+#, c-format
+msgid "Bootstrap installed on %s.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:570
+#, c-format
+msgid "Partition (a-%c): "
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:601
+msgid "This partition already exists.\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:723
+#, c-format
+msgid "Warning: too many partitions (%d, maximum is %d).\n"
+msgstr ""
+
+#: fdisk/fdiskbsdlabel.c:769
+msgid ""
+"\n"
+"Syncing disks.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:56
+msgid "SGI volhdr"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:57
+msgid "SGI trkrepl"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:58
+msgid "SGI secrepl"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:59
+msgid "SGI raw"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:60
+msgid "SGI bsd"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:61
+msgid "SGI sysv"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:62
+msgid "SGI volume"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:63
+msgid "SGI efs"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:64
+msgid "SGI lvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:65
+msgid "SGI rlvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:66
+msgid "SGI xfs"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:67
+msgid "SGI xlvol"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:68
+msgid "SGI rxlvol"
+msgstr ""
+
+#. Minix 1.4b and later
+#: fdisk/fdisksgilabel.c:69 fdisk/fdisksunlabel.c:52 fdisk/i386_sys_types.c:52
+msgid "Linux swap"
+msgstr "Linux swap"
+
+#: fdisk/fdisksgilabel.c:70 fdisk/fdisksunlabel.c:53
+msgid "Linux native"
+msgstr "Linux nativa"
+
+#: fdisk/fdisksgilabel.c:143
+msgid ""
+"According to MIPS Computer Systems, Inc the Label must not contain more than "
+"512 bytes\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:162
+msgid "Detected sgi disklabel with wrong checksum.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:186
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors\n"
+"%d cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:199
+#, c-format
+msgid ""
+"\n"
+"Disk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:205
+#, c-format
+msgid ""
+"----- partitions -----\n"
+"%*s Info Start End Sectors Id System\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:227
+#, c-format
+msgid ""
+"----- bootinfo -----\n"
+"Bootfile: %s\n"
+"----- directory entries -----\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:237
+#, c-format
+msgid "%2d: %-10s sector%5u size%8u\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:298
+msgid ""
+"\n"
+"Invalid Bootfile!\n"
+"\tThe bootfile must be an absolute non-zero pathname,\n"
+"\te.g. \"/unix\" or \"/unix.save\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:305
+msgid ""
+"\n"
+"\tName of Bootfile too long: 16 bytes maximum.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:310
+msgid ""
+"\n"
+"\tBootfile must have a fully qualified pathname.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:315
+msgid ""
+"\n"
+"\tBe aware, that the bootfile is not checked for existence.\n"
+"\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:343
+#, c-format
+msgid ""
+"\n"
+"\tBootfile is changed to \"%s\".\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:448
+msgid "More than one entire disk entry present.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:456 fdisk/fdisksunlabel.c:455
+msgid "No partitions defined\n"
+msgstr "Nenhuma partiçăo definida\n"
+
+#: fdisk/fdisksgilabel.c:463
+msgid "IRIX likes when Partition 11 covers the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:465
+#, c-format
+msgid ""
+"The entire disk partition should start at block 0,\n"
+"not at diskblock %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:469
+#, c-format
+msgid ""
+"The entire disk partition is only %d diskblock large,\n"
+"but the disk is %d diskblocks long.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:476
+msgid "One Partition (#11) should cover the entire disk.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:488
+#, c-format
+msgid "Partition %d does not start on cylinder boundary.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:495
+#, c-format
+msgid "Partition %d does not end on cylinder boundary.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:503
+#, c-format
+msgid "The Partition %d and %d overlap by %d sectors.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:512 fdisk/fdisksgilabel.c:532
+#, c-format
+msgid "Unused gap of %8d sectors - sectors %8d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:545
+msgid ""
+"\n"
+"The boot partition does not exist.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:549
+msgid ""
+"\n"
+"The swap partition does not exist.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:554
+msgid ""
+"\n"
+"The swap partition has no swap type.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:558
+msgid "\tYou have chosen an unusual boot file name.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:569
+msgid "Sorry You may change the Tag of non-empty partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:576
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is of type \"SGI volhdr\", the IRIX system will rely on it to\n"
+"retrieve from its directory standalone tools like sash and fx.\n"
+"Only the \"SGI volume\" entire disk section may violate this.\n"
+"Type YES if you are sure about tagging this partition differently.\n"
+msgstr ""
+
+#. rebuild freelist
+#: fdisk/fdisksgilabel.c:621
+msgid "Do You know, You got a partition overlap on the disk?\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:691
+msgid "Attempting to generate entire disk entry automatically.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:698
+msgid "The entire disk is already covered with partitions.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:703
+msgid "You got a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:712 fdisk/fdisksgilabel.c:741
+msgid ""
+"It is highly recommended that eleventh partition\n"
+"covers the entire disk and is of type `SGI volume'\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:728
+msgid "You will get a partition overlap on the disk. Fix it first!\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:733
+#, c-format
+msgid " Last %s"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:756
+msgid ""
+"Building a new SGI disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content will be unrecoverable lost.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:784
+#, c-format
+msgid "Trying to keep parameters of partition %d.\n"
+msgstr ""
+
+#: fdisk/fdisksgilabel.c:786
+#, c-format
+msgid "ID=%02x\tSTART=%d\tLENGTH=%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:43 fdisk/i386_sys_types.c:6
+msgid "Empty"
+msgstr "Vazia"
+
+#: fdisk/fdisksunlabel.c:45
+msgid "SunOS root"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:46
+msgid "SunOS swap"
+msgstr "SunOS swap"
+
+#: fdisk/fdisksunlabel.c:47
+msgid "SunOS usr"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:48
+msgid "Whole disk"
+msgstr "Disco inteiro"
+
+#: fdisk/fdisksunlabel.c:49
+msgid "SunOS stand"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:50
+msgid "SunOS var"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:51
+msgid "SunOS home"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:122
+msgid ""
+"Detected sun disklabel with wrong checksum.\n"
+"Probably you'll have to set all the values,\n"
+"e.g. heads, sectors, cylinders and partitions\n"
+"or force a fresh label (s command in main menu)\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:215
+#, c-format
+msgid "Autoconfigure found a %s%s%s\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:242
+msgid ""
+"Building a new sun disklabel. Changes will remain in memory only,\n"
+"until you decide to write them. After that, of course, the previous\n"
+"content won't be recoverable.\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:253
+msgid ""
+"Drive type\n"
+" ? auto configure\n"
+" 0 custom (with hardware detected defaults)"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:263
+msgid "Select type (? for auto, 0 for custom): "
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:275
+msgid "Autoconfigure failed.\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:303
+msgid "Sectors/track"
+msgstr "Setores/trilha"
+
+#: fdisk/fdisksunlabel.c:310
+msgid "Alternate cylinders"
+msgstr "Cilindros Alternativos"
+
+#: fdisk/fdisksunlabel.c:313
+msgid "Physical cylinders"
+msgstr "Cilindros físicos"
+
+#: fdisk/fdisksunlabel.c:316 fdisk/fdisksunlabel.c:679
+msgid "Rotation speed (rpm)"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:318 fdisk/fdisksunlabel.c:672
+msgid "Interleave factor"
+msgstr "Fator de \"Interleave\""
+
+#: fdisk/fdisksunlabel.c:321 fdisk/fdisksunlabel.c:665
+msgid "Extra sectors per cylinder"
+msgstr "Setores extras por cilindro: "
+
+#: fdisk/fdisksunlabel.c:334
+msgid "You may change all the disk params from the x menu"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+msgid "3,5\" floppy"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:337
+msgid "Linux custom"
+msgstr "Linux personalizado"
+
+#: fdisk/fdisksunlabel.c:418
+#, c-format
+msgid "Partition %d doesn't end on cylinder boundary\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:438
+#, c-format
+msgid "Partition %d overlaps with others in sectors %d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:460
+#, c-format
+msgid "Unused gap - sectors 0-%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:462 fdisk/fdisksunlabel.c:466
+#, c-format
+msgid "Unused gap - sectors %d-%d\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:489
+msgid ""
+"Other partitions already cover the whole disk.\n"
+"Delete some/shrink them before retry.\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:547
+#, c-format
+msgid ""
+"You haven't covered whole disk with 3rd partition, but your value\n"
+"%d %s covers some other partition. Your entry have been changed\n"
+"to %d %s\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:565
+#, c-format
+msgid ""
+"If you want to maintain SunOS/Solaris compatibility, consider leaving this\n"
+"partition as Whole disk (5), starting at 0, with %u sectors\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:578
+msgid ""
+"It is highly recommended that the partition at offset 0\n"
+"is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n"
+"there may destroy your partition table and bootblock.\n"
+"Type YES if you're very sure you would like that partition\n"
+"tagged with 82 (Linux swap): "
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:609
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n"
+"%d cylinders, %d alternate cylinders, %d physical cylinders\n"
+"%d extra sects/cyl, interleave %d:1\n"
+"%s\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:623
+#, c-format
+msgid ""
+"\n"
+"Disk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n"
+"Units = %ss of %d * 512 bytes\n"
+"\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:628
+#, c-format
+msgid "%*s Flag Start End Blocks Id System\n"
+msgstr ""
+
+#: fdisk/fdisksunlabel.c:653
+msgid "Number of alternate cylinders"
+msgstr "Informe o número de cilindros alternativos: "
+
+#: fdisk/fdisksunlabel.c:686
+msgid "Number of physical cylinders"
+msgstr "Número de cilindros físicos"
+
+#: fdisk/i386_sys_types.c:7
+msgid "FAT12"
+msgstr "FAT12"
+
+#: fdisk/i386_sys_types.c:8
+msgid "XENIX root"
+msgstr "root XENIX"
+
+#: fdisk/i386_sys_types.c:9
+msgid "XENIX usr"
+msgstr "usr XENIX"
+
+#: fdisk/i386_sys_types.c:10
+msgid "FAT16 <32M"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:11
+msgid "Extended"
+msgstr "Estendida"
+
+#. DOS 3.3+ extended partition
+#: fdisk/i386_sys_types.c:12
+msgid "FAT16"
+msgstr "FAT16"
+
+#. DOS 16-bit >=32M
+#: fdisk/i386_sys_types.c:13
+msgid "HPFS/NTFS"
+msgstr "HPFS ou NTFS"
+
+#. OS/2 IFS, eg, HPFS or NTFS or QNX
+#: fdisk/i386_sys_types.c:14
+msgid "AIX"
+msgstr "AIX"
+
+#. AIX boot (AIX -- PS/2 port) or SplitDrive
+#: fdisk/i386_sys_types.c:15
+msgid "AIX bootable"
+msgstr "AIX Inicializável"
+
+#. AIX data or Coherent
+#: fdisk/i386_sys_types.c:16
+msgid "OS/2 Boot Manager"
+msgstr "Gerenc.Inicializ.OS/2"
+
+#. OS/2 Boot Manager
+#: fdisk/i386_sys_types.c:17
+msgid "Win95 FAT32"
+msgstr "FAT32 Win95"
+
+#: fdisk/i386_sys_types.c:18
+msgid "Win95 FAT32 (LBA)"
+msgstr "FAT32 Win95 (LBA)"
+
+#. LBA really is `Extended Int 13h'
+#: fdisk/i386_sys_types.c:19
+msgid "Win95 FAT16 (LBA)"
+msgstr "FAT16 Win95 (LBA)"
+
+#: fdisk/i386_sys_types.c:20
+msgid "Win95 Ext'd (LBA)"
+msgstr "Estendida Win95 (LBA)"
+
+#: fdisk/i386_sys_types.c:21
+msgid "OPUS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:22
+msgid "Hidden FAT12"
+msgstr "FAT12 Escondida"
+
+#: fdisk/i386_sys_types.c:23
+msgid "Compaq diagnostics"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:24
+msgid "Hidden FAT16 <32M"
+msgstr "FAT16 Escondida <32M"
+
+#: fdisk/i386_sys_types.c:25
+msgid "Hidden FAT16"
+msgstr "FAT16 Escondida"
+
+#: fdisk/i386_sys_types.c:26
+msgid "Hidden HPFS/NTFS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:27
+msgid "AST Windows swapfile"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:28
+msgid "NEC DOS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:29
+msgid "PartitionMagic recovery"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:30
+msgid "Venix 80286"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:31
+msgid "PPC PReP Boot"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:32
+msgid "SFS"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:33
+msgid "QNX4.x"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:34
+msgid "QNX4.x 2nd part"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:35
+msgid "QNX4.x 3rd part"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:36
+msgid "OnTrack DM"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:37
+msgid "OnTrack DM6 Aux1"
+msgstr ""
+
+#. (or Novell)
+#: fdisk/i386_sys_types.c:38
+msgid "CP/M"
+msgstr ""
+
+#. CP/M or Microport SysV/AT
+#: fdisk/i386_sys_types.c:39
+msgid "OnTrack DM6 Aux3"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:40
+msgid "OnTrackDM6"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:41
+msgid "EZ-Drive"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:42
+msgid "Golden Bow"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:43
+msgid "Priam Edisk"
+msgstr ""
+
+#. DOS R/O or SpeedStor
+#: fdisk/i386_sys_types.c:44 fdisk/i386_sys_types.c:73
+#: fdisk/i386_sys_types.c:75 fdisk/i386_sys_types.c:76
+msgid "SpeedStor"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:45
+msgid "GNU HURD or SysV"
+msgstr ""
+
+#. GNU HURD or Mach or Sys V/386 (such as ISC UNIX)
+#: fdisk/i386_sys_types.c:46
+msgid "Novell Netware 286"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:47
+msgid "Novell Netware 386"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:48
+msgid "DiskSecure Multi-Boot"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:49
+msgid "PC/IX"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:50
+msgid "Old Minix"
+msgstr ""
+
+#. Minix 1.4a and earlier
+#: fdisk/i386_sys_types.c:51
+msgid "Minix / old Linux"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:54
+msgid "OS/2 hidden C: drive"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:55
+msgid "Linux extended"
+msgstr "Estendida Linux"
+
+#: fdisk/i386_sys_types.c:56 fdisk/i386_sys_types.c:57
+msgid "NTFS volume set"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:58
+msgid "Amoeba"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:59
+msgid "Amoeba BBT"
+msgstr ""
+
+#. (bad block table)
+#: fdisk/i386_sys_types.c:60
+msgid "IBM Thinkpad hibernation"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:61
+msgid "BSD/386"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:62
+msgid "OpenBSD"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:63
+msgid "NeXTSTEP"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:64
+msgid "BSDI fs"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:65
+msgid "BSDI swap"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:66
+msgid "DRDOS/sec (FAT-12)"
+msgstr "DRDOS/sec (FAT12)"
+
+#: fdisk/i386_sys_types.c:67
+msgid "DRDOS/sec (FAT-16 < 32M)"
+msgstr "DRDOS/sec (FAT16 < 32M)"
+
+#: fdisk/i386_sys_types.c:68
+msgid "DRDOS/sec (FAT-16)"
+msgstr "DRDOS/sec (FAT16)"
+
+#: fdisk/i386_sys_types.c:69
+msgid "Syrinx"
+msgstr ""
+
+#: fdisk/i386_sys_types.c:70
+msgid "CP/M / CTOS / ..."
+msgstr ""
+
+#. CP/M or Concurrent CP/M or Concurrent DOS or CTOS
+#: fdisk/i386_sys_types.c:71
+msgid "DOS access"
+msgstr ""
+
+#. DOS access or SpeedStor 12-bit FAT extended partition
+#: fdisk/i386_sys_types.c:72
+msgid "DOS R/O"
+msgstr ""
+
+#. SpeedStor 16-bit FAT extended partition < 1024 cyl.
+#: fdisk/i386_sys_types.c:74
+msgid "BeOS fs"
+msgstr ""
+
+#. SpeedStor large partition
+#: fdisk/i386_sys_types.c:77
+msgid "DOS secondary"
+msgstr ""
+
+#. DOS 3.3+ secondary
+#: fdisk/i386_sys_types.c:78
+msgid "LANstep"
+msgstr ""
+
+#. SpeedStor >1024 cyl. or LANstep
+#: fdisk/i386_sys_types.c:79
+msgid "BBT"
+msgstr ""
+
+#: fdisk/sfdisk.c:148
+#, c-format
+msgid "seek error on %s - cannot seek to %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:153
+#, c-format
+msgid "seek error: wanted 0x%08x%08x, got 0x%08x%08x\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:199
+msgid "out of memory - giving up\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:203 fdisk/sfdisk.c:286
+#, c-format
+msgid "read error on %s - cannot read sector %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:219
+#, c-format
+msgid "ERROR: sector %lu does not have an msdos signature\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:236
+#, c-format
+msgid "write error on %s - cannot write sector %lu\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:274
+#, c-format
+msgid "cannot open partition sector save file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:292
+#, c-format
+msgid "write error on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:310
+#, c-format
+msgid "cannot stat partition restore file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:315
+msgid "partition restore file has wrong size - not restoring\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:319
+msgid "out of memory?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:325
+#, c-format
+msgid "cannot open partition restore file (%s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:331
+#, c-format
+msgid "error reading %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:338
+#, c-format
+msgid "cannot open device %s for writing\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:350
+#, c-format
+msgid "error writing sector %lu on %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:407
+#, c-format
+msgid ""
+"Warning: start=%d - this looks like a partition rather than\n"
+"the entire disk. Using fdisk on it is probably meaningless.\n"
+"[Use the --force option if you really want this]\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:413
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d heads\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:416
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d sectors\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:419
+#, c-format
+msgid "Warning: HDIO_GETGEO says that there are %d cylinders\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:423
+#, c-format
+msgid "Disk %s: cannot get geometry\n"
+msgstr "Disco %s: năo foi possível obter a geometria\n"
+
+#: fdisk/sfdisk.c:425
+#, c-format
+msgid ""
+"Warning: unlikely number of sectors (%d) - usually at most 63\n"
+"This will give problems with all software that uses C/H/S addressing.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:429
+#, c-format
+msgid ""
+"\n"
+"Disk %s: %lu heads, %lu sectors, %lu cylinders\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:509
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for head: %d (should be in 0-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:514
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for sector: %d (should be in 1-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:519
+#, c-format
+msgid ""
+"%s of partition %s has impossible value for cylinders: %d (should be in "
+"0-%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:558
+msgid ""
+"Id Name\n"
+"\n"
+msgstr ""
+"Id Nome\n"
+"\n"
+
+#: fdisk/sfdisk.c:703
+msgid "Re-reading the partition table ...\n"
+msgstr "Relendo tabela de partiçőes...\n"
+
+#: fdisk/sfdisk.c:709
+msgid ""
+"The command to re-read the partition table failed\n"
+"Reboot your system now, before using mkfs\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:714
+#, c-format
+msgid "Error closing %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:752
+#, c-format
+msgid "%s: no such partition\n"
+msgstr "%s: partiçăo năo existente\n"
+
+#: fdisk/sfdisk.c:775
+msgid "unrecognized format - using sectors\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:813
+#, c-format
+msgid "# partition table of %s\n"
+msgstr "# tabela de partiçőes de %s\n"
+
+#: fdisk/sfdisk.c:814
+msgid ""
+"unit: sectors\n"
+"\n"
+msgstr ""
+"unidade: setores\n"
+"\n"
+
+#: fdisk/sfdisk.c:824
+#, c-format
+msgid "unimplemented format - using %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:828
+#, c-format
+msgid ""
+"Units = cylinders of %lu bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:831
+msgid " Device Boot Start End #cyls #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:836
+#, c-format
+msgid ""
+"Units = sectors of 512 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:838
+msgid " Device Boot Start End #sectors Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:841
+#, c-format
+msgid ""
+"Units = blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:843
+msgid " Device Boot Start End #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:846
+#, c-format
+msgid ""
+"Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from %d\n"
+"\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:848
+msgid " Device Boot Start End MB #blocks Id System\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:903
+#, c-format
+msgid " start=%9lu"
+msgstr ""
+
+#: fdisk/sfdisk.c:904
+#, c-format
+msgid ", size=%8lu"
+msgstr ""
+
+#: fdisk/sfdisk.c:906
+#, c-format
+msgid ", Id=%2x"
+msgstr ""
+
+#: fdisk/sfdisk.c:908
+msgid ", bootable"
+msgstr ", inicializável"
+
+#: fdisk/sfdisk.c:969
+#, c-format
+msgid "\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:976
+#, c-format
+msgid "\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:979
+#, c-format
+msgid "partition ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:989
+msgid "No partitions found\n"
+msgstr "Sem mais partiçőes\n"
+
+#: fdisk/sfdisk.c:1034
+msgid "no partition table present.\n"
+msgstr "nenhuma tabela de partiçőes presente.\n"
+
+#: fdisk/sfdisk.c:1036
+#, c-format
+msgid "strange, only %d partitions defined.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1045
+#, c-format
+msgid "Warning: partition %s has size 0 but is not marked Empty\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1048
+#, c-format
+msgid "Warning: partition %s has size 0 and is bootable\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1051
+#, c-format
+msgid "Warning: partition %s has size 0 and nonzero start\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1062
+#, c-format
+msgid "Warning: partition %s "
+msgstr "Atençăo: partiçăo %s "
+
+#: fdisk/sfdisk.c:1063
+#, c-format
+msgid "is not contained in partition %s\n"
+msgstr "năo está contida na partiçăo %s\n"
+
+#: fdisk/sfdisk.c:1074
+#, c-format
+msgid "Warning: partitions %s "
+msgstr ""
+
+#: fdisk/sfdisk.c:1075
+#, c-format
+msgid "and %s overlap\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1086
+#, c-format
+msgid "Warning: partition %s contains part of "
+msgstr "Atençăo: a partiçăo %s contém parte da "
+
+#: fdisk/sfdisk.c:1087
+#, c-format
+msgid "the partition table (sector %lu),\n"
+msgstr "tabela de partiçőes (setor %lu),\n"
+
+#: fdisk/sfdisk.c:1088
+msgid "and will destroy it when filled\n"
+msgstr "e a destruirá quando preenchida\n"
+
+#: fdisk/sfdisk.c:1097
+#, c-format
+msgid "Warning: partition %s starts at sector 0\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1101
+#, c-format
+msgid "Warning: partition %s extends past end of disk\n"
+msgstr "Atençăo: a partiçăo %s se estende até depois do fim do disco\n"
+
+#: fdisk/sfdisk.c:1115
+msgid "Among the primary partitions, at most one can be extended\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1116
+msgid " (although this is not a problem under Linux)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1133
+#, c-format
+msgid "Warning: partition %s does not start at a cylinder boundary\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1139
+#, c-format
+msgid "Warning: partition %s does not end at a cylinder boundary\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1157
+msgid ""
+"Warning: more than one primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1164
+msgid ""
+"Warning: usually one can boot from primary partitions only\n"
+"LILO disregards the `bootable' flag.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1170
+msgid ""
+"Warning: no primary partition is marked bootable (active)\n"
+"This does not matter for LILO, but the DOS MBR will not boot this disk.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1187
+#, c-format
+msgid ""
+"partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1196
+#, c-format
+msgid "partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1199
+#, c-format
+msgid "partition %s ends on cylinder %ld, beyond the end of the disk\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1232 fdisk/sfdisk.c:1309
+#, c-format
+msgid "too many partitions - ignoring those past nr (%d)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1247
+msgid "tree of partitions?\n"
+msgstr "árvore de partiçőes?\n"
+
+#: fdisk/sfdisk.c:1351
+msgid "detected Disk Manager - unable to handle that\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1358
+msgid "DM6 signature found - giving up\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1378
+msgid "strange..., an extended partition of size 0?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1385
+msgid "strange..., a BSD partition of size 0?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1417
+#, c-format
+msgid " %s: unrecognized partition\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1429
+msgid "-n flag was given: Nothing changed\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1442
+msgid "Failed saving the old sectors - aborting\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1447
+#, c-format
+msgid "Failed writing the partition on %s\n"
+msgstr "Falha na gravaçăo da partiçăo em %s\n"
+
+#: fdisk/sfdisk.c:1524
+msgid "long or incomplete input line - quitting\n"
+msgstr "linha de entrada longa ou incompleta - terminando\n"
+
+#: fdisk/sfdisk.c:1560
+#, c-format
+msgid "input error: `=' expected after %s field\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1567
+#, c-format
+msgid "input error: unexpected character %c after %s field\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1573
+#, c-format
+msgid "unrecognized input: %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1605
+msgid "number too big\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1609
+msgid "trailing junk after number\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1725
+msgid "no room for partition descriptor\n"
+msgstr "sem espaço para o descritor da partiçăo\n"
+
+#: fdisk/sfdisk.c:1758
+msgid "cannot build surrounding extended partition\n"
+msgstr "năo foi possível criar a partiçăo estendida envoltória\n"
+
+#: fdisk/sfdisk.c:1809
+msgid "too many input fields\n"
+msgstr ""
+
+#. no free blocks left - don't read any further
+#: fdisk/sfdisk.c:1843
+msgid "No room for more\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1862
+msgid "Illegal type\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1894
+#, c-format
+msgid "Warning: exceeds max allowable size (%lu)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1899
+msgid "Warning: empty partition\n"
+msgstr "Atençăo: partiçăo vazia\n"
+
+#: fdisk/sfdisk.c:1913
+#, c-format
+msgid "Warning: bad partition start (earliest %lu)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1926
+msgid "unrecognized bootable flag - choose - or *\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1943 fdisk/sfdisk.c:1956
+msgid "partial c,h,s specification?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:1967
+msgid "Extended partition not where expected\n"
+msgstr "Partiçăo estentida năo está no lugar esperado\n"
+
+#: fdisk/sfdisk.c:1999
+msgid "bad input\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2021
+msgid "too many partitions\n"
+msgstr "Número excessivo de partiçőes\n"
+
+#: fdisk/sfdisk.c:2054
+msgid ""
+"Input in the following format; absent fields get a default value.\n"
+"<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+"Usually you only need to specify <start> and <size> (and perhaps <type>).\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2074
+msgid "version"
+msgstr "versăo"
+
+#: fdisk/sfdisk.c:2080
+#, c-format
+msgid "Usage: %s [options] device ...\n"
+msgstr "Uso: %s [opçőes] dispositivo ...\n"
+
+#: fdisk/sfdisk.c:2081
+msgid "device: something like /dev/hda or /dev/sda"
+msgstr ""
+
+#: fdisk/sfdisk.c:2082
+msgid "useful options:"
+msgstr "opçőes úteis:"
+
+#: fdisk/sfdisk.c:2083
+msgid " -s [or --show-size]: list size of a partition"
+msgstr " -s [ou --show-size]: lista o tamanho de uma partiçăo"
+
+#: fdisk/sfdisk.c:2084
+msgid " -c [or --id]: print or change partition Id"
+msgstr ""
+
+#: fdisk/sfdisk.c:2085
+msgid " -l [or --list]: list partitions of each device"
+msgstr ""
+
+#: fdisk/sfdisk.c:2086
+msgid " -d [or --dump]: idem, but in a format suitable for later input"
+msgstr ""
+
+#: fdisk/sfdisk.c:2087
+msgid " -i [or --increment]: number cylinders etc. from 1 instead of from 0"
+msgstr ""
+
+#: fdisk/sfdisk.c:2088
+msgid ""
+" -uS, -uB, -uC, -uM: accept/report in units of "
+"sectors/blocks/cylinders/MB"
+msgstr ""
+
+#: fdisk/sfdisk.c:2089
+msgid " -T [or --list-types]:list the known partition types"
+msgstr " -T [ou --list-types]:lista os tipos de partiçăo conhecidos"
+
+#: fdisk/sfdisk.c:2090
+msgid " -D [or --DOS]: for DOS-compatibility: waste a little space"
+msgstr ""
+
+#: fdisk/sfdisk.c:2091
+msgid " -R [or --re-read]: make kernel reread partition table"
+msgstr " -R [ou --re-read]: faz o kernel reler a tabela de partiçőes"
+
+#: fdisk/sfdisk.c:2092
+msgid " -N# : change only the partition with number #"
+msgstr ""
+
+#: fdisk/sfdisk.c:2093
+msgid " -n : do not actually write to disk"
+msgstr ""
+
+#: fdisk/sfdisk.c:2094
+msgid ""
+" -O file : save the sectors that will be overwritten to file"
+msgstr ""
+
+#: fdisk/sfdisk.c:2095
+msgid " -I file : restore these sectors again"
+msgstr ""
+
+#: fdisk/sfdisk.c:2096
+msgid " -v [or --version]: print version"
+msgstr ""
+
+#: fdisk/sfdisk.c:2097
+msgid " -? [or --help]: print this message"
+msgstr ""
+
+#: fdisk/sfdisk.c:2098
+msgid "dangerous options:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2099
+msgid " -g [or --show-geometry]: print the kernel's idea of the geometry"
+msgstr ""
+
+#: fdisk/sfdisk.c:2100
+msgid ""
+" -x [or --show-extended]: also list extended partitions on output\n"
+" or expect descriptors for them on input"
+msgstr ""
+
+#: fdisk/sfdisk.c:2102
+msgid ""
+" -L [or --Linux]: do not complain about things irrelevant for Linux"
+msgstr ""
+
+#: fdisk/sfdisk.c:2103
+msgid " -q [or --quiet]: suppress warning messages"
+msgstr ""
+
+#: fdisk/sfdisk.c:2104
+msgid " You can override the detected geometry using:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2105
+msgid " -C# [or --cylinders #]:set the number of cylinders to use"
+msgstr ""
+" -C# [ou --cylinders #]:configura o número de cilindros a serem usados"
+
+#: fdisk/sfdisk.c:2106
+msgid " -H# [or --heads #]: set the number of heads to use"
+msgstr ""
+" -H# [ou --heads #]: configura o número de cabeças a serem usadas"
+
+#: fdisk/sfdisk.c:2107
+msgid " -S# [or --sectors #]: set the number of sectors to use"
+msgstr ""
+" -S# [ou --sectors #]: configura o número de setores a serem usados"
+
+#: fdisk/sfdisk.c:2108
+msgid "You can disable all consistency checking with:"
+msgstr ""
+
+#: fdisk/sfdisk.c:2109
+msgid " -f [or --force]: do what I say, even if it is stupid"
+msgstr ""
+
+#: fdisk/sfdisk.c:2115
+msgid "Usage:"
+msgstr "Uso:"
+
+#: fdisk/sfdisk.c:2116
+#, c-format
+msgid "%s device\t\t list active partitions on device\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2117
+#, c-format
+msgid "%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2118
+#, c-format
+msgid "%s -An device\t activate partition n, inactivate the other ones\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2237
+msgid "no command?\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2360
+#, c-format
+msgid "total: %d blocks\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2397
+msgid "usage: sfdisk --print-id device partition-number\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2399
+msgid "usage: sfdisk --change-id device partition-number Id\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2401
+msgid "usage: sfdisk --id device partition-number [Id]\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2408
+msgid "can specify only one device (except with -l or -s)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2433
+#, c-format
+msgid "cannot open %s %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2433
+msgid "read-write"
+msgstr ""
+
+#: fdisk/sfdisk.c:2433
+msgid "for reading"
+msgstr ""
+
+#: fdisk/sfdisk.c:2458
+#, c-format
+msgid "%s: OK\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2475
+#, c-format
+msgid "%s: %d cylinders, %d heads, %d sectors/track\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2478
+#, c-format
+msgid "%s: unknown geometry\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2493
+#, c-format
+msgid "BLKGETSIZE ioctl failed for %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2570
+#, c-format
+msgid "bad active byte: 0x%x instead of 0x80\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2587 fdisk/sfdisk.c:2640 fdisk/sfdisk.c:2670
+msgid ""
+"Done\n"
+"\n"
+msgstr ""
+"Feito\n"
+"\n"
+
+#: fdisk/sfdisk.c:2596
+#, c-format
+msgid ""
+"You have %d active primary partitions. This does not matter for LILO,\n"
+"but the DOS MBR will only boot a disk with 1 active partition.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2610
+#, c-format
+msgid "partition %s has id %x and is not hidden\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2666
+#, c-format
+msgid "Bad Id %x\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2681
+msgid "This disk is currently in use.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2698
+#, c-format
+msgid "Fatal error: cannot find %s\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2701
+#, c-format
+msgid "Warning: %s is not a block device\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2706
+msgid "Checking that no-one is using this disk right now ...\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2708
+msgid ""
+"\n"
+"This disk is currently in use - repartitioning is probably a bad idea.Umount "
+"all file systems, and swapoff all swap partitions on this disk.Use the "
+"--no-reread flag to suppress this check.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2712
+msgid "Use the --force flag to overrule all checks.\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2716
+msgid "OK"
+msgstr ""
+
+#: fdisk/sfdisk.c:2725
+msgid "Old situation:\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2729
+#, c-format
+msgid "Partition %d does not exist, cannot change it\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2737
+msgid "New situation:\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2742
+msgid ""
+"I don't like these partitions - nothing changed.\n"
+"(If you really want this, use the --force option.)\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2745
+msgid "I don't like this - probably you should answer No\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2750
+msgid "Are you satisfied with this? [ynq] "
+msgstr ""
+
+#: fdisk/sfdisk.c:2752
+msgid "Do you want to write this to disk? [ynq] "
+msgstr "Deseja gravar isto no disco? [ynq] "
+
+#: fdisk/sfdisk.c:2757
+msgid ""
+"\n"
+"sfdisk: premature end of input\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2759
+msgid "Quitting - nothing changed\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2765
+msgid "Please answer one of y,n,q\n"
+msgstr ""
+
+#: fdisk/sfdisk.c:2773
+msgid ""
+"Successfully wrote the new partition table\n"
+"\n"
+msgstr ""
+"Tabela de partiçőes gravada com sucesso\n"
+"\n"
+
+#: fdisk/sfdisk.c:2779
+msgid ""
+"If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
+"to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
+"(See fdisk(8).)\n"
+msgstr ""
+
+#: games/banner.c:1051
+msgid "usage: banner [-w width]\n"
+msgstr ""
+
+#: games/banner.c:1071
+msgid "Message: "
+msgstr "Mensagem: "
+
+#: games/banner.c:1105
+#, c-format
+msgid "The character '%c' is not in my character set"
+msgstr ""
+
+#: games/banner.c:1113
+#, c-format
+msgid "Message '%s' is OK\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:229
+msgid "Try `getopt --help' for more information.\n"
+msgstr "Tente `getopt --help' para maiores informaçőes.\n"
+
+#: getopt-1.0.3b/getopt.c:295
+msgid "empty long option after -l or --long argument"
+msgstr "opçăo longa vazia depois de argumento -l ou --long"
+
+#: getopt-1.0.3b/getopt.c:315
+msgid "unknown shell after -s or --shell argument"
+msgstr "interpretador de comandos desconhecido após argumento -s ou --shell"
+
+#: getopt-1.0.3b/getopt.c:320
+msgid "Usage: getopt optstring parameters\n"
+msgstr "Uso: getopt texto_opçőes parâmetros\n"
+
+#: getopt-1.0.3b/getopt.c:321
+msgid " getopt [options] [--] optstring parameters\n"
+msgstr " getopt [opçőes] [--] texto_opçőes parâmetros\n"
+
+#: getopt-1.0.3b/getopt.c:322
+msgid " getopt [options] -o|--options optstring [options] [--]\n"
+msgstr " getopt [opçőes] -o|--opçőes texto_opçőes [opçőes] [--]\n"
+
+#: getopt-1.0.3b/getopt.c:323
+msgid " parameters\n"
+msgstr " parâmetros\n"
+
+#: getopt-1.0.3b/getopt.c:324
+msgid ""
+" -a, --alternative Allow long options starting with single -\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:325
+msgid " -h, --help This small usage guide\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:326
+msgid " -l, --longoptions=longopts Long options to be recognized\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:327
+msgid ""
+" -n, --name=progname The name under which errors are reported\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:328
+msgid " -o, --options=optstring Short options to be recognized\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:329
+msgid " -q, --quiet Disable error reporting by getopt(3)\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:330
+msgid " -Q, --quiet-output No normal output\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:331
+msgid " -s, --shell=shell Set shell quoting conventions\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:332
+msgid " -T, --test Test for getopt(1) version\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:333
+msgid " -V, --version Output version information\n"
+msgstr ""
+
+#: getopt-1.0.3b/getopt.c:387 getopt-1.0.3b/getopt.c:445
+msgid "missing optstring argument"
+msgstr "faltou o argumento texto_opçőes"
+
+#: getopt-1.0.3b/getopt.c:433
+msgid "getopt (enhanced) 1.0.3\n"
+msgstr "getopt (melhorado) 1.0.3)\n"
+
+#: getopt-1.0.3b/getopt.c:439
+msgid "internal error, contact the author."
+msgstr "erro interno, contacte o autor."
+
+#: login-utils/agetty.c:300
+msgid "calling open_tty\n"
+msgstr ""
+
+#. Initialize the termio settings (raw mode, eight-bit, blocking i/o).
+#: login-utils/agetty.c:313
+msgid "calling termio_init\n"
+msgstr ""
+
+#: login-utils/agetty.c:318
+msgid "writing init string\n"
+msgstr ""
+
+#. Optionally detect the baud rate from the modem status message.
+#: login-utils/agetty.c:328
+msgid "before autobaud\n"
+msgstr ""
+
+#: login-utils/agetty.c:340
+msgid "waiting for cr-lf\n"
+msgstr ""
+
+#: login-utils/agetty.c:344
+#, c-format
+msgid "read %c\n"
+msgstr ""
+
+#. Read the login name.
+#: login-utils/agetty.c:353
+msgid "reading login name\n"
+msgstr ""
+
+#: login-utils/agetty.c:374
+#, c-format
+msgid "%s: can't exec %s: %m"
+msgstr ""
+
+#: login-utils/agetty.c:394
+msgid "can't malloc initstring"
+msgstr ""
+
+#: login-utils/agetty.c:456
+#, c-format
+msgid "bad timeout value: %s"
+msgstr ""
+
+#: login-utils/agetty.c:465
+msgid "after getopt loop\n"
+msgstr ""
+
+#: login-utils/agetty.c:483
+msgid "exiting parseargs\n"
+msgstr ""
+
+#: login-utils/agetty.c:496
+msgid "entered parse_speeds\n"
+msgstr ""
+
+#: login-utils/agetty.c:499
+#, c-format
+msgid "bad speed: %s"
+msgstr ""
+
+#: login-utils/agetty.c:501
+msgid "too many alternate speeds"
+msgstr "Número excessivo de velocidades alternativas"
+
+#: login-utils/agetty.c:503
+msgid "exiting parsespeeds\n"
+msgstr ""
+
+#: login-utils/agetty.c:576
+#, c-format
+msgid "%s: open for update: %m"
+msgstr ""
+
+#: login-utils/agetty.c:592
+#, c-format
+msgid "%s: no utmp entry"
+msgstr ""
+
+#: login-utils/agetty.c:621
+#, c-format
+msgid "/dev: chdir() failed: %m"
+msgstr ""
+
+#: login-utils/agetty.c:625
+#, c-format
+msgid "/dev/%s: not a character device"
+msgstr ""
+
+#. ignore close(2) errors
+#: login-utils/agetty.c:632
+msgid "open(2)\n"
+msgstr ""
+
+#: login-utils/agetty.c:634
+#, c-format
+msgid "/dev/%s: cannot open as standard input: %m"
+msgstr ""
+
+#: login-utils/agetty.c:644
+#, c-format
+msgid "%s: not open for read/write"
+msgstr ""
+
+#. Set up standard output and standard error file descriptors.
+#: login-utils/agetty.c:648
+msgid "duping\n"
+msgstr ""
+
+#. set up stdout and stderr
+#: login-utils/agetty.c:650
+#, c-format
+msgid "%s: dup problem: %m"
+msgstr ""
+
+#: login-utils/agetty.c:712
+msgid "term_io 2\n"
+msgstr ""
+
+#: login-utils/agetty.c:894
+msgid "user"
+msgstr "usuário"
+
+#: login-utils/agetty.c:894
+msgid "users"
+msgstr "usuários"
+
+#: login-utils/agetty.c:982
+#, c-format
+msgid "%s: read: %m"
+msgstr ""
+
+#: login-utils/agetty.c:1028
+#, c-format
+msgid "%s: input overrun"
+msgstr ""
+
+#: login-utils/agetty.c:1152
+#, c-format
+msgid ""
+"Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] "
+"baud_rate,... line [termtype]\n"
+"or\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] line "
+"baud_rate,... [termtype]\n"
+msgstr ""
+
+#: login-utils/checktty.c:46
+#, c-format
+msgid "badlogin: %s\n"
+msgstr "login inválido: %s\n"
+
+#: login-utils/checktty.c:52
+#, c-format
+msgid "sleepexit %d\n"
+msgstr ""
+
+#: login-utils/checktty.c:108 login-utils/checktty.c:130
+msgid "login: memory low, login may fail\n"
+msgstr ""
+
+#: login-utils/checktty.c:109
+msgid "can't malloc for ttyclass"
+msgstr ""
+
+#: login-utils/checktty.c:131
+msgid "can't malloc for grplist"
+msgstr ""
+
+#. there was a default rule, but user didn't match, reject!
+#: login-utils/checktty.c:424
+#, c-format
+msgid "Login on %s from %s denied by default.\n"
+msgstr ""
+
+#. if we get here, /etc/usertty exists, there's a line
+#. matching our username, but it doesn't contain the
+#. name of the tty where the user is trying to log in.
+#. So deny access!
+#: login-utils/checktty.c:435
+#, c-format
+msgid "Login on %s from %s denied.\n"
+msgstr ""
+
+#: login-utils/chfn.c:139 login-utils/chsh.c:118
+#, c-format
+msgid "%s: you (user %d) don't exist.\n"
+msgstr ""
+
+#: login-utils/chfn.c:146 login-utils/chsh.c:125
+#, c-format
+msgid "%s: user \"%s\" does not exist.\n"
+msgstr ""
+
+#: login-utils/chfn.c:151 login-utils/chsh.c:130
+#, c-format
+msgid "%s: can only change local entries; use yp%s instead.\n"
+msgstr ""
+
+#: login-utils/chfn.c:163
+#, c-format
+msgid "Changing finger information for %s.\n"
+msgstr "Modificando informaçőes finger para o usuário %s.\n"
+
+#: login-utils/chfn.c:169 login-utils/chfn.c:173 login-utils/chfn.c:180
+#: login-utils/chfn.c:184 login-utils/chsh.c:154 login-utils/chsh.c:158
+#: login-utils/chsh.c:165 login-utils/chsh.c:169
+msgid "Password error."
+msgstr "Erro na senha."
+
+#: login-utils/chfn.c:193 login-utils/chsh.c:178 login-utils/login.c:650
+#: login-utils/newgrp.c:47 login-utils/simpleinit.c:219 mount/lomount.c:196
+#: mount/lomount.c:202 mount/losetup.c:115 mount/losetup.c:121
+msgid "Password: "
+msgstr "Senha: "
+
+#: login-utils/chfn.c:196 login-utils/chsh.c:181
+msgid "Incorrect password."
+msgstr "Senha incorreta."
+
+#: login-utils/chfn.c:207
+msgid "Finger information not changed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:310
+#, c-format
+msgid "Usage: %s [ -f full-name ] [ -o office ] "
+msgstr "Uso: %s [ -f nome-completo ] [ -o local_de_trabalho ] "
+
+#: login-utils/chfn.c:311
+msgid ""
+"[ -p office-phone ]\n"
+"\t[ -h home-phone ] "
+msgstr ""
+
+#: login-utils/chfn.c:312
+msgid "[ --help ] [ --version ]\n"
+msgstr ""
+
+#: login-utils/chfn.c:381 login-utils/chsh.c:294
+msgid ""
+"\n"
+"Aborted.\n"
+msgstr ""
+
+#: login-utils/chfn.c:414
+msgid "field is too long.\n"
+msgstr "Campo muito longo.\n"
+
+#: login-utils/chfn.c:422
+#, c-format
+msgid "'%c' is not allowed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:427
+msgid "Control characters are not allowed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:492
+msgid "Finger information *NOT* changed. Try again later.\n"
+msgstr ""
+"As informaçőes finger *NĂO* foram modificada. Tente novamente mais tarde.\n"
+
+#: login-utils/chfn.c:495
+msgid "Finger information changed.\n"
+msgstr ""
+
+#: login-utils/chfn.c:509 login-utils/chsh.c:412 sys-utils/cytune.c:315
+msgid "malloc failed"
+msgstr ""
+
+#: login-utils/chsh.c:141
+#, c-format
+msgid "%s: Your shell is not in /etc/shells, shell change denied\n"
+msgstr ""
+
+#: login-utils/chsh.c:148
+#, c-format
+msgid "Changing shell for %s.\n"
+msgstr "Modificando o interpretador de comandos para o usuário %s.\n"
+
+#: login-utils/chsh.c:189
+msgid "New shell"
+msgstr ""
+
+#: login-utils/chsh.c:196
+msgid "Shell not changed.\n"
+msgstr "O interpretador de comandos NĂO foi modificado.\n"
+
+#: login-utils/chsh.c:203
+msgid "Shell *NOT* changed. Try again later.\n"
+msgstr ""
+"O interpretador de comandos *NĂO* foi modificado. Tente novamente mais "
+"tarde.\n"
+
+#: login-utils/chsh.c:206
+msgid "Shell changed.\n"
+msgstr "Interpretador de comandos modificado.\n"
+
+#: login-utils/chsh.c:274
+#, c-format
+msgid "Usage: %s [ -s shell ] "
+msgstr "Uso: %s [ -s interpretador_de_comandos ] "
+
+#: login-utils/chsh.c:275
+msgid "[ --list-shells ] [ --help ] [ --version ]\n"
+msgstr ""
+
+#: login-utils/chsh.c:276
+msgid " [ username ]\n"
+msgstr ""
+
+#: login-utils/chsh.c:320
+#, c-format
+msgid "%s: shell must be a full path name.\n"
+msgstr ""
+
+#: login-utils/chsh.c:324
+#, c-format
+msgid "%s: \"%s\" does not exist.\n"
+msgstr ""
+
+#: login-utils/chsh.c:328
+#, c-format
+msgid "%s: \"%s\" is not executable.\n"
+msgstr ""
+
+#: login-utils/chsh.c:335
+#, c-format
+msgid "%s: '%c' is not allowed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:339
+#, c-format
+msgid "%s: Control characters are not allowed.\n"
+msgstr ""
+
+#: login-utils/chsh.c:346
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells\n"
+msgstr ""
+
+#: login-utils/chsh.c:348
+#, c-format
+msgid "%s: \"%s\" is not listed in /etc/shells.\n"
+msgstr ""
+
+#: login-utils/chsh.c:350
+#, c-format
+msgid "%s: use -l option to see list\n"
+msgstr ""
+
+#: login-utils/chsh.c:356
+#, c-format
+msgid "Warning: \"%s\" is not listed in /etc/shells.\n"
+msgstr ""
+
+#: login-utils/chsh.c:357
+#, c-format
+msgid "Use %s -l to see list.\n"
+msgstr ""
+
+#: login-utils/chsh.c:378
+msgid "No known shells.\n"
+msgstr ""
+
+#: login-utils/cryptocard.c:70
+msgid "couldn't open /dev/urandom"
+msgstr ""
+
+#: login-utils/cryptocard.c:75
+msgid "couldn't read random data from /dev/urandom"
+msgstr ""
+
+#: login-utils/cryptocard.c:98
+#, c-format
+msgid "can't open %s for reading"
+msgstr ""
+
+#: login-utils/cryptocard.c:102
+#, c-format
+msgid "can't stat(%s)"
+msgstr ""
+
+#: login-utils/cryptocard.c:108
+#, c-format
+msgid "%s doesn't have the correct filemodes"
+msgstr ""
+
+#: login-utils/cryptocard.c:113
+#, c-format
+msgid "can't read data from %s"
+msgstr ""
+
+#: login-utils/islocal.c:36
+#, c-format
+msgid "Can't read %s, exiting."
+msgstr ""
+
+#: login-utils/last.c:138
+msgid "usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n"
+msgstr ""
+
+#: login-utils/last.c:215
+#, c-format
+msgid "last: %s: "
+msgstr ""
+
+#: login-utils/last.c:270
+msgid " still logged in"
+msgstr ""
+
+#: login-utils/last.c:291
+#, c-format
+msgid ""
+"\n"
+"wtmp begins %10.10s %5.5s \n"
+msgstr ""
+
+#: login-utils/last.c:352 login-utils/last.c:372 login-utils/last.c:427
+msgid "last: malloc failure.\n"
+msgstr ""
+
+#: login-utils/last.c:401
+msgid "last: gethostname"
+msgstr ""
+
+#: login-utils/last.c:454
+#, c-format
+msgid ""
+"\n"
+"interrupted %10.10s %5.5s \n"
+msgstr ""
+
+#: login-utils/login.c:349
+msgid "login: -h for super-user only.\n"
+msgstr "login: -h somente pode ser especificado pelo superusuário.\n"
+
+#: login-utils/login.c:374
+msgid "usage: login [-fp] [username]\n"
+msgstr ""
+
+#: login-utils/login.c:476
+#, c-format
+msgid "login: PAM Failure, aborting: %s\n"
+msgstr ""
+
+#: login-utils/login.c:478
+#, c-format
+msgid "Couldn't initialize PAM: %s"
+msgstr ""
+
+#: login-utils/login.c:518
+#, c-format
+msgid "FAILED LOGIN %d FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:520
+msgid ""
+"Login incorrect\n"
+"\n"
+msgstr ""
+"Login incorreto\n"
+"\n"
+
+#: login-utils/login.c:529
+#, c-format
+msgid "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:533
+#, c-format
+msgid "FAILED LOGIN SESSION FROM %s FOR %s, %s"
+msgstr ""
+
+#: login-utils/login.c:536
+msgid ""
+"\n"
+"Login incorrect\n"
+msgstr ""
+"\n"
+"Login incorreto\n"
+
+#: login-utils/login.c:585
+msgid "Illegal username"
+msgstr "Nome de usuário inválido"
+
+#: login-utils/login.c:628
+#, c-format
+msgid "%s login refused on this terminal.\n"
+msgstr ""
+
+#: login-utils/login.c:633
+#, c-format
+msgid "LOGIN %s REFUSED FROM %s ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:637
+#, c-format
+msgid "LOGIN %s REFUSED ON TTY %s"
+msgstr ""
+
+#: login-utils/login.c:689
+msgid "Login incorrect\n"
+msgstr "Login incorreto\n"
+
+#: login-utils/login.c:711
+msgid ""
+"Too many users logged on already.\n"
+"Try again later.\n"
+msgstr ""
+
+#: login-utils/login.c:715
+msgid "You have too many processes running.\n"
+msgstr ""
+
+#: login-utils/login.c:761
+msgid "Warning: no Kerberos tickets issued\n"
+msgstr ""
+
+#: login-utils/login.c:773
+msgid "Sorry -- your password has expired.\n"
+msgstr ""
+
+#: login-utils/login.c:779
+#, c-format
+msgid "Warning: your password expires on %s %d, %d\n"
+msgstr ""
+
+#: login-utils/login.c:787
+msgid "Sorry -- your account has expired.\n"
+msgstr ""
+
+#: login-utils/login.c:793
+#, c-format
+msgid "Warning: your account expires on %s %d, %d\n"
+msgstr ""
+
+#: login-utils/login.c:1012
+#, c-format
+msgid "DIALUP AT %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1019
+#, c-format
+msgid "ROOT LOGIN ON %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1022
+#, c-format
+msgid "ROOT LOGIN ON %s"
+msgstr ""
+
+#: login-utils/login.c:1025
+#, c-format
+msgid "LOGIN ON %s BY %s FROM %s"
+msgstr ""
+
+#: login-utils/login.c:1028
+#, c-format
+msgid "LOGIN ON %s BY %s"
+msgstr ""
+
+#: login-utils/login.c:1039
+#, c-format
+msgid "You have %smail.\n"
+msgstr "Vocę tem mensagens %s na caixa de correio.\n"
+
+#: login-utils/login.c:1040
+msgid "new "
+msgstr ""
+
+#. error in fork()
+#: login-utils/login.c:1057
+#, c-format
+msgid "login: failure forking: %s"
+msgstr ""
+
+#: login-utils/login.c:1072
+msgid "setuid() failed"
+msgstr ""
+
+#: login-utils/login.c:1078
+#, c-format
+msgid "No directory %s!\n"
+msgstr ""
+
+#: login-utils/login.c:1082
+msgid "Logging in with home = \"/\".\n"
+msgstr ""
+
+#: login-utils/login.c:1090
+msgid "login: no memory for shell script.\n"
+msgstr ""
+
+#: login-utils/login.c:1116
+#, c-format
+msgid "login: couldn't exec shell script: %s.\n"
+msgstr ""
+
+#: login-utils/login.c:1119
+#, c-format
+msgid "login: no shell: %s.\n"
+msgstr ""
+
+#: login-utils/login.c:1135
+#, c-format
+msgid ""
+"\n"
+"%s login: "
+msgstr ""
+"\n"
+"%s usuário: "
+
+#: login-utils/login.c:1146
+msgid "login name much too long.\n"
+msgstr "nome de login muito longo.\n"
+
+#: login-utils/login.c:1147
+msgid "NAME too long"
+msgstr "NOME muito longo"
+
+#: login-utils/login.c:1154
+msgid "login names may not start with '-'.\n"
+msgstr ""
+
+#: login-utils/login.c:1164
+msgid "too many bare linefeeds.\n"
+msgstr "Número excessivo de saltos de linha.\n"
+
+#: login-utils/login.c:1165
+msgid "EXCESSIVE linefeeds"
+msgstr ""
+
+#: login-utils/login.c:1176
+#, c-format
+msgid "Login timed out after %d seconds\n"
+msgstr "Tempo de login esgotado após %d segundos\n"
+
+#: login-utils/login.c:1276
+#, c-format
+msgid "Last login: %.*s "
+msgstr "Último login: %.*s "
+
+#: login-utils/login.c:1280
+#, c-format
+msgid "from %.*s\n"
+msgstr "a partir de %.*s\n"
+
+#: login-utils/login.c:1283
+#, c-format
+msgid "on %.*s\n"
+msgstr "em: %.*s\n"
+
+#: login-utils/login.c:1306
+#, c-format
+msgid "LOGIN FAILURE FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1309
+#, c-format
+msgid "LOGIN FAILURE ON %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1313
+#, c-format
+msgid "%d LOGIN FAILURES FROM %s, %s"
+msgstr ""
+
+#: login-utils/login.c:1316
+#, c-format
+msgid "%d LOGIN FAILURES ON %s, %s"
+msgstr ""
+
+#: login-utils/mesg.c:89
+msgid "is y\n"
+msgstr ""
+
+#: login-utils/mesg.c:92
+msgid "is n\n"
+msgstr ""
+
+#: login-utils/mesg.c:112
+msgid "usage: mesg [y | n]\n"
+msgstr "Uso: mesg [y | n]\n"
+
+#: login-utils/newgrp.c:67
+msgid "newgrp: Who are you?"
+msgstr ""
+
+#: login-utils/newgrp.c:75 login-utils/newgrp.c:85
+msgid "newgrp: setgid"
+msgstr ""
+
+#: login-utils/newgrp.c:80
+msgid "newgrp: No such group."
+msgstr ""
+
+#: login-utils/newgrp.c:89
+msgid "newgrp: Permission denied"
+msgstr ""
+
+#: login-utils/newgrp.c:96
+msgid "newgrp: setuid"
+msgstr ""
+
+#: login-utils/newgrp.c:102
+msgid "No shell"
+msgstr ""
+
+#: login-utils/passwd.c:165
+msgid "The password must have at least 6 characters, try again.\n"
+msgstr "A senha deve ter pelo menos 6 caracteres, tente novamente.\n"
+
+#: login-utils/passwd.c:178
+msgid "The password must contain characters out of two of the following\n"
+msgstr "A senha deve conter caracteres de uma das duas classes seguintes:\n"
+
+#: login-utils/passwd.c:179
+msgid "classes: upper and lower case letters, digits and non alphanumeric\n"
+msgstr ""
+"letras maiúsculas e minúsculas, dígitos e caracteres năo alfanuméricos.\n"
+
+#: login-utils/passwd.c:180
+msgid "characters. See passwd(1) for more information.\n"
+msgstr "Veja passwd(1) para maiores informaçőes.\n"
+
+#: login-utils/passwd.c:185
+msgid "You cannot reuse the old password.\n"
+msgstr "Vocę năo pode reutilizar a senha antiga.\n"
+
+#: login-utils/passwd.c:190
+msgid "Please don't use something like your username as password!\n"
+msgstr ""
+
+#: login-utils/passwd.c:201 login-utils/passwd.c:208
+msgid "Please don't use something like your realname as password!\n"
+msgstr ""
+
+#: login-utils/passwd.c:225
+msgid "Usage: passwd [username [password]]\n"
+msgstr ""
+
+#: login-utils/passwd.c:226
+msgid "Only root may use the one and two argument forms.\n"
+msgstr ""
+
+#: login-utils/passwd.c:282
+msgid "Usage: passwd [-foqsvV] [user [password]]\n"
+msgstr ""
+
+#: login-utils/passwd.c:302
+#, c-format
+msgid "Can't exec %s: %s\n"
+msgstr ""
+
+#: login-utils/passwd.c:313
+msgid "Cannot find login name"
+msgstr ""
+
+#: login-utils/passwd.c:320 login-utils/passwd.c:327
+msgid "Only root can change the password for others.\n"
+msgstr ""
+
+#: login-utils/passwd.c:335
+msgid "Too many arguments.\n"
+msgstr "Número excessivo de argumentos.\n"
+
+#: login-utils/passwd.c:340
+#, c-format
+msgid "Can't find username anywhere. Is `%s' really a user?"
+msgstr ""
+
+#: login-utils/passwd.c:344
+msgid "Sorry, I can only change local passwords. Use yppasswd instead."
+msgstr ""
+
+#: login-utils/passwd.c:350
+msgid "UID and username does not match, imposter!"
+msgstr ""
+
+#: login-utils/passwd.c:355
+#, c-format
+msgid "Changing password for %s\n"
+msgstr "Modificando a senha para o usuário %s\n"
+
+#: login-utils/passwd.c:359
+msgid "Enter old password: "
+msgstr "Informe a senha anterior: "
+
+#: login-utils/passwd.c:361
+msgid "Illegal password, imposter."
+msgstr "Senha incorreta, impostor."
+
+#: login-utils/passwd.c:373
+msgid "Enter new password: "
+msgstr "Informa a nova senha: "
+
+#: login-utils/passwd.c:375
+msgid "Password not changed."
+msgstr "A senha NĂO foi modificada."
+
+#: login-utils/passwd.c:385
+msgid "Re-type new password: "
+msgstr "Redigite a nova senha: "
+
+#: login-utils/passwd.c:388
+msgid "You misspelled it. Password not changed."
+msgstr "Vocę năo a informou corretamente. A senha NĂO foi modificada."
+
+#: login-utils/passwd.c:403
+#, c-format
+msgid "password changed, user %s"
+msgstr "senha modificada, usuário %s"
+
+#: login-utils/passwd.c:406
+msgid "ROOT PASSWORD CHANGED"
+msgstr "A SENHA DO ROOT FOI MODIFICADA"
+
+#: login-utils/passwd.c:408
+#, c-format
+msgid "password changed by root, user %s"
+msgstr "senha modificada pelo root, usuário %s"
+
+#: login-utils/passwd.c:415
+msgid "calling setpwnam to set password.\n"
+msgstr ""
+
+#: login-utils/passwd.c:419
+msgid "Password *NOT* changed. Try again later.\n"
+msgstr "A senha *NĂO* foi modificada. Tente novamente mais tarde.\n"
+
+#: login-utils/passwd.c:425
+msgid "Password changed.\n"
+msgstr "Senha modificada.\n"
+
+#: login-utils/shutdown.c:85
+msgid "Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n"
+msgstr ""
+
+#: login-utils/shutdown.c:103
+msgid "Shutdown process aborted"
+msgstr ""
+
+#: login-utils/shutdown.c:125
+#, c-format
+msgid "%s: Only root can shut a system down.\n"
+msgstr ""
+
+#: login-utils/shutdown.c:219
+msgid "That must be tomorrow, "
+msgstr ""
+
+#: login-utils/shutdown.c:220
+msgid "can't you wait till then?\n"
+msgstr ""
+
+#: login-utils/shutdown.c:271
+msgid "for maintenance; bounce, bounce"
+msgstr ""
+
+#: login-utils/shutdown.c:275
+#, c-format
+msgid "timeout = %d, quiet = %d, reboot = %d\n"
+msgstr ""
+
+#: login-utils/shutdown.c:300
+msgid "The system is being shut down within 5 minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:304
+msgid "Login is therefore prohibited."
+msgstr ""
+
+#: login-utils/shutdown.c:325
+#, c-format
+msgid "%s by %s: %s"
+msgstr ""
+
+#: login-utils/shutdown.c:326
+msgid "rebooted"
+msgstr ""
+
+#: login-utils/shutdown.c:326
+msgid "halted"
+msgstr ""
+
+#. RB_AUTOBOOT
+#: login-utils/shutdown.c:369
+msgid ""
+"\n"
+"Why am I still alive after reboot?"
+msgstr ""
+
+#: login-utils/shutdown.c:371
+msgid ""
+"\n"
+"Now you can turn off the power..."
+msgstr ""
+
+#: login-utils/shutdown.c:386
+msgid "Calling kernel power-off facility...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:389
+#, c-format
+msgid "Error powering off\t%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:397
+#, c-format
+msgid "Executing the program \"%s\" ...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:400
+#, c-format
+msgid "Error executing\t%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:423
+#, c-format
+msgid "URGENT: broadcast message from %s:"
+msgstr ""
+
+#: login-utils/shutdown.c:429
+msgid "System going down IMMEDIATELY!\n"
+msgstr ""
+
+#: login-utils/shutdown.c:432
+#, c-format
+msgid "System going down in %d hour%s %d minutes"
+msgstr ""
+
+#: login-utils/shutdown.c:435
+#, c-format
+msgid "System going down in %d minute%s\n"
+msgstr ""
+
+#: login-utils/shutdown.c:441
+#, c-format
+msgid "\t... %s ...\n"
+msgstr ""
+
+#: login-utils/shutdown.c:498
+msgid "Cannot fork for swapoff. Shrug!"
+msgstr ""
+
+#: login-utils/shutdown.c:506
+msgid "Cannot exec swapoff, "
+msgstr ""
+
+#: login-utils/shutdown.c:507
+msgid "hoping umount will do the trick."
+msgstr ""
+
+#: login-utils/shutdown.c:525
+msgid "Cannot fork for umount, trying manually."
+msgstr ""
+
+#: login-utils/shutdown.c:531
+msgid "Cannot exec "
+msgstr ""
+
+#: login-utils/shutdown.c:531
+msgid ", trying umount."
+msgstr ""
+
+#: login-utils/shutdown.c:533
+msgid "Cannot exec umount, giving up on umount."
+msgstr ""
+
+#: login-utils/shutdown.c:538
+msgid "Unmounting any remaining filesystems..."
+msgstr ""
+
+#: login-utils/shutdown.c:574
+#, c-format
+msgid "shutdown: Couldn't umount %s\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:79
+msgid "Booting to single user mode.\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:83
+msgid "exec of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:87
+msgid "fork of single user shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:226
+msgid ""
+"\n"
+"Wrong password.\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:252
+msgid "exec rc failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:255
+msgid "open of rc file failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:261
+msgid "fork of rc shell failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:273
+msgid "fork failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:302 text-utils/more.c:1469
+msgid "exec failed\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:324
+msgid "cannot open inittab\n"
+msgstr ""
+
+#: login-utils/simpleinit.c:362
+msgid "no TERM or cannot stat tty\n"
+msgstr ""
+
+#: login-utils/ttymsg.c:79
+msgid "too many iov's (change code in wall/ttymsg.c)"
+msgstr ""
+
+#. A slash is an attempt to break security...
+#: login-utils/ttymsg.c:83
+#, c-format
+msgid "'/' in \"%s\""
+msgstr ""
+
+#: login-utils/ttymsg.c:88
+msgid "excessively long line arg"
+msgstr ""
+
+#: login-utils/ttymsg.c:142
+msgid "cannot fork"
+msgstr ""
+
+#: login-utils/ttymsg.c:145
+#, c-format
+msgid "fork: %s"
+msgstr ""
+
+#: login-utils/ttymsg.c:172
+#, c-format
+msgid "%s: BAD ERROR"
+msgstr ""
+
+#: login-utils/vipw.c:147
+#, c-format
+msgid "%s: the %s file is busy.\n"
+msgstr ""
+
+#: login-utils/vipw.c:163
+#, c-format
+msgid "%s: the %s file is busy (%s present)\n"
+msgstr ""
+
+#: login-utils/vipw.c:168
+#, c-format
+msgid "%s: can't link %s: %s\n"
+msgstr ""
+
+#: login-utils/vipw.c:188
+#, c-format
+msgid "%s: can't unlock %s: %s (your changes are still in %s)\n"
+msgstr ""
+
+#: login-utils/vipw.c:212
+#, c-format
+msgid "%s: Cannot fork\n"
+msgstr ""
+
+#: login-utils/vipw.c:252
+#, c-format
+msgid "%s: %s unchanged\n"
+msgstr "%s: %s năo foi modificada\n"
+
+#: login-utils/vipw.c:295
+#, c-format
+msgid "%s: no changes made\n"
+msgstr ""
+
+#: login-utils/wall.c:104
+msgid "usage: wall [file]\n"
+msgstr ""
+
+#: login-utils/wall.c:115
+#, c-format
+msgid "wall: cannot read %s.\n"
+msgstr ""
+
+#: login-utils/wall.c:132
+#, c-format
+msgid "wall: %s\n"
+msgstr ""
+
+#: login-utils/wall.c:154
+msgid "wall: can't open temporary file.\n"
+msgstr ""
+
+#: login-utils/wall.c:181
+#, c-format
+msgid "Broadcast Message from %s@%s"
+msgstr ""
+
+#: login-utils/wall.c:191
+#, c-format
+msgid "wall: can't read %s.\n"
+msgstr ""
+
+#: login-utils/wall.c:216
+msgid "wall: can't stat temporary file.\n"
+msgstr ""
+
+#: login-utils/wall.c:225
+msgid "wall: can't read temporary file.\n"
+msgstr ""
+
+#: misc-utils/cal.c:198
+msgid "illegal month value: use 1-12"
+msgstr ""
+
+#: misc-utils/cal.c:202
+msgid "illegal year value: use 1-9999"
+msgstr ""
+
+#: misc-utils/cal.c:498
+msgid "usage: cal [-mjy] [[month] year]\n"
+msgstr ""
+
+#: misc-utils/ddate.c:184
+#, c-format
+msgid "usage: %s [+format] [day month year]\n"
+msgstr ""
+
+#. handle St. Tib's Day
+#: misc-utils/ddate.c:230
+msgid "St. Tib's Day"
+msgstr ""
+
+#: misc-utils/kill.c:199
+#, c-format
+msgid "%s: unknown signal %s\n"
+msgstr ""
+
+#: misc-utils/kill.c:261
+#, c-format
+msgid "%s: can't find process \"%s\"\n"
+msgstr ""
+
+#: misc-utils/kill.c:303
+#, c-format
+msgid "%s: unknown signal %s; valid signals:\n"
+msgstr ""
+
+#: misc-utils/kill.c:343
+#, c-format
+msgid "usage: %s [ -s signal | -p ] [ -a ] pid ...\n"
+msgstr ""
+
+#: misc-utils/kill.c:344
+#, c-format
+msgid " %s -l [ signal ]\n"
+msgstr ""
+
+#: misc-utils/logger.c:135
+#, c-format
+msgid "logger: %s: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:232
+#, c-format
+msgid "logger: unknown facility name: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:244
+#, c-format
+msgid "logger: unknown priority name: %s.\n"
+msgstr ""
+
+#: misc-utils/logger.c:271
+msgid "logger: [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n"
+msgstr ""
+
+#: misc-utils/look.c:170 misc-utils/setterm.c:1153 text-utils/more.c:1782
+#: text-utils/more.c:1793
+msgid "Out of memory"
+msgstr "faltou memória"
+
+#: misc-utils/look.c:340
+msgid "usage: look [-dfa] [-t char] string [file]\n"
+msgstr ""
+
+#: misc-utils/look.c:365
+msgid "look: "
+msgstr ""
+
+#: misc-utils/mcookie.c:95 misc-utils/mcookie.c:120
+#, c-format
+msgid "Could not open %s\n"
+msgstr ""
+
+#: misc-utils/mcookie.c:103 misc-utils/mcookie.c:117
+#, c-format
+msgid "Got %d bytes from %s\n"
+msgstr ""
+
+#: misc-utils/namei.c:107
+#, c-format
+msgid "namei: unable to get current directory - %s\n"
+msgstr ""
+
+#: misc-utils/namei.c:118
+#, c-format
+msgid "namei: unable to chdir to %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:128
+msgid "usage: namei [-mx] pathname [pathname ...]\n"
+msgstr ""
+
+#: misc-utils/namei.c:157
+msgid "namei: could not chdir to root!\n"
+msgstr ""
+
+#: misc-utils/namei.c:164
+msgid "namei: could not stat root!\n"
+msgstr ""
+
+#: misc-utils/namei.c:219
+#, c-format
+msgid " ? could not chdir into %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:248
+#, c-format
+msgid " ? problems reading symlink %s - %s (%d)\n"
+msgstr ""
+
+#: misc-utils/namei.c:258
+msgid " *** EXCEEDED UNIX LIMIT OF SYMLINKS ***"
+msgstr ""
+
+#: misc-utils/namei.c:294
+#, c-format
+msgid "namei: unknown file type 0%06o on file %s\n"
+msgstr ""
+
+#: misc-utils/script.c:108
+msgid "usage: script [-a] [file]\n"
+msgstr "Uso: script [-a] [arquivo]\n"
+
+#: misc-utils/script.c:128
+#, c-format
+msgid "Script started, file is %s\n"
+msgstr ""
+
+#: misc-utils/script.c:197
+#, c-format
+msgid "Script started on %s"
+msgstr ""
+
+#: misc-utils/script.c:263
+#, c-format
+msgid ""
+"\n"
+"Script done on %s"
+msgstr ""
+
+#: misc-utils/script.c:268
+#, c-format
+msgid "Script done, file is %s\n"
+msgstr ""
+
+#: misc-utils/script.c:280
+msgid "openpty failed\n"
+msgstr ""
+
+#: misc-utils/script.c:314
+msgid "Out of pty's\n"
+msgstr ""
+
+#. Print error message about arguments, and the command's syntax.
+#: misc-utils/setterm.c:745
+#, c-format
+msgid "%s: Argument error, usage\n"
+msgstr ""
+
+#: misc-utils/setterm.c:747
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:748
+msgid " [ -term terminal_name ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:749
+msgid " [ -reset ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:750
+msgid " [ -initialize ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:751
+msgid " [ -cursor [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:753
+msgid " [ -snow [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:754
+msgid " [ -softscroll [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:755
+msgid " [ -keyboard pc|olivetti|dutch|extended ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:757
+msgid " [ -repeat [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:758
+msgid " [ -appcursorkeys [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:759
+msgid " [ -linewrap [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:760
+msgid " [ -default ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:761
+msgid " [ -foreground black|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:762 misc-utils/setterm.c:764
+msgid "|red|magenta|yellow|white|default ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:763
+msgid " [ -background black|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:765
+msgid " [ -ulcolor black|grey|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:766 misc-utils/setterm.c:768 misc-utils/setterm.c:770
+#: misc-utils/setterm.c:772
+msgid "|red|magenta|yellow|white ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:767
+msgid " [ -ulcolor bright blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:769
+msgid " [ -hbcolor black|grey|blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:771
+msgid " [ -hbcolor bright blue|green|cyan"
+msgstr ""
+
+#: misc-utils/setterm.c:774
+msgid " [ -standout [ attr ] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:776
+msgid " [ -inversescreen [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:777
+msgid " [ -bold [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:778
+msgid " [ -half-bright [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:779
+msgid " [ -blink [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:780
+msgid " [ -reverse [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:781
+msgid " [ -underline [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:782
+msgid " [ -store ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:783
+msgid " [ -clear [all|rest] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:784
+msgid " [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr ""
+
+#: misc-utils/setterm.c:785
+msgid " [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n"
+msgstr ""
+
+#: misc-utils/setterm.c:786
+msgid " [ -regtabs [1-160] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:787
+msgid " [ -blank [0-60] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:788
+msgid " [ -dump [1-NR_CONSOLES] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:789
+msgid " [ -append [1-NR_CONSOLES] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:790
+msgid " [ -file dumpfilename ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:791
+msgid " [ -msg [on|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:792
+msgid " [ -msglevel [0-8] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:793
+msgid " [ -powersave [on|vsync|hsync|powerdown|off] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:794
+msgid " [ -powerdown [0-60] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:795
+msgid " [ -blength [0-2000] ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:796
+msgid " [ -bfreq freqnumber ]\n"
+msgstr ""
+
+#: misc-utils/setterm.c:841
+msgid "keyboard.pc"
+msgstr ""
+
+#: misc-utils/setterm.c:844
+msgid "keyboard.olivetti"
+msgstr ""
+
+#: misc-utils/setterm.c:847
+msgid "keyboard.dutch"
+msgstr ""
+
+#: misc-utils/setterm.c:850
+msgid "keyboard.extended"
+msgstr ""
+
+#: misc-utils/setterm.c:884
+msgid "snow.on"
+msgstr ""
+
+#: misc-utils/setterm.c:886
+msgid "snow.off"
+msgstr ""
+
+#: misc-utils/setterm.c:892
+msgid "softscroll.on"
+msgstr ""
+
+#: misc-utils/setterm.c:894
+msgid "softscroll.off"
+msgstr ""
+
+#: misc-utils/setterm.c:1069
+msgid "cannot (un)set powersave mode\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1108 misc-utils/setterm.c:1116
+#, c-format
+msgid "klogctl error: %s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1157
+#, c-format
+msgid "Error reading %s\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1172
+msgid "Error writing screendump\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1186
+#, c-format
+msgid "couldn't read %s, and cannot ioctl dump\n"
+msgstr ""
+
+#: misc-utils/setterm.c:1251
+#, c-format
+msgid "%s: $TERM is not defined.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:119
+msgid "usage: tsort [ inputfile ]\n"
+msgstr ""
+
+#: misc-utils/tsort.c:156
+msgid "tsort: odd data count.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:321
+msgid "tsort: cycle in data.\n"
+msgstr ""
+
+#: misc-utils/tsort.c:334
+msgid "tsort: internal error -- could not find cycle.\n"
+msgstr ""
+
+#: misc-utils/whereis.c:158
+msgid "whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n"
+msgstr ""
+
+#: misc-utils/write.c:101
+msgid "write: can't find your tty's name\n"
+msgstr ""
+
+#: misc-utils/write.c:112
+msgid "write: you have write permission turned off.\n"
+msgstr ""
+
+#: misc-utils/write.c:133
+#, c-format
+msgid "write: %s is not logged in on %s.\n"
+msgstr ""
+
+#: misc-utils/write.c:141
+#, c-format
+msgid "write: %s has messages disabled on %s\n"
+msgstr ""
+
+#: misc-utils/write.c:148
+msgid "usage: write user [tty]\n"
+msgstr ""
+
+#: misc-utils/write.c:247
+#, c-format
+msgid "write: %s is not logged in\n"
+msgstr ""
+
+#: misc-utils/write.c:256
+#, c-format
+msgid "write: %s has messages disabled\n"
+msgstr ""
+
+#: misc-utils/write.c:260
+#, c-format
+msgid "write: %s is logged in more than once; writing to %s\n"
+msgstr ""
+
+#: misc-utils/write.c:327
+#, c-format
+msgid "Message from %s@%s on %s at %s ..."
+msgstr ""
+
+#: mount/fstab.c:113
+#, c-format
+msgid "warning: error reading %s: %s"
+msgstr ""
+
+#: mount/fstab.c:140 mount/fstab.c:162
+#, c-format
+msgid "warning: can't open %s: %s"
+msgstr "Atençăo: năo foi possível abrir %s: %s"
+
+#: mount/fstab.c:144
+#, c-format
+msgid "mount: could not open %s - using %s instead\n"
+msgstr ""
+
+#. MOUNTLOCK_LINKTARGET does not exist (as a file)
+#. and we cannot create it. Read-only filesystem?
+#. Too many files open in the system? Filesystem full?
+#: mount/fstab.c:346
+#, c-format
+msgid "can't create lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:358
+#, c-format
+msgid "can't link lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:369
+#, c-format
+msgid "can't open lock file %s: %s (use -n flag to override)"
+msgstr ""
+
+#: mount/fstab.c:383
+#, c-format
+msgid "Can't lock lock file %s: %s\n"
+msgstr ""
+
+#: mount/fstab.c:392
+#, c-format
+msgid "can't lock lock file %s: %s"
+msgstr ""
+
+#: mount/fstab.c:394
+msgid "timed out"
+msgstr ""
+
+#: mount/fstab.c:438
+#, c-format
+msgid "cannot open %s (%s) - mtab not updated"
+msgstr ""
+
+#: mount/fstab.c:445
+#, c-format
+msgid "can't open %s (%s) - mtab not updated"
+msgstr ""
+
+#: mount/fstab.c:470
+msgid "mount: warning: cannot change mounted device with a remount\n"
+msgstr ""
+
+#: mount/fstab.c:475
+msgid "mount: warning: cannot change filesystem type with a remount\n"
+msgstr ""
+
+#: mount/fstab.c:482 mount/fstab.c:486
+#, c-format
+msgid "error writing %s: %s"
+msgstr ""
+
+#: mount/fstab.c:491
+#, c-format
+msgid "error changing mode of %s: %s\n"
+msgstr ""
+
+#: mount/fstab.c:496
+#, c-format
+msgid "can't rename %s to %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:75
+#, c-format
+msgid "loop: can't open device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:80
+#, c-format
+msgid "loop: can't get info on device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:85 mount/losetup.c:74
+#, c-format
+msgid "%s: [%04x]:%ld (%s) offset %d, %s encryption\n"
+msgstr ""
+
+#: mount/lomount.c:139
+msgid "mount: could not find any device /dev/loop#"
+msgstr ""
+
+#: mount/lomount.c:143
+msgid ""
+"mount: Could not find any loop device.\n"
+" Maybe /dev/loop# has a wrong major number?"
+msgstr ""
+
+#: mount/lomount.c:147
+#, c-format
+msgid ""
+"mount: Could not find any loop device, and, according to %s,\n"
+" this kernel does not know about the loop device.\n"
+" (If so, then recompile or `insmod loop.o'.)"
+msgstr ""
+
+#: mount/lomount.c:152
+msgid ""
+"mount: Could not find any loop device. Maybe this kernel does not know\n"
+" about the loop device (then recompile or `insmod loop.o'), or\n"
+" maybe /dev/loop# has the wrong major number?"
+msgstr ""
+
+#: mount/lomount.c:156
+msgid "mount: could not find any free loop device"
+msgstr ""
+
+#: mount/lomount.c:187 mount/losetup.c:106
+#, c-format
+msgid "Unsupported encryption type %s\n"
+msgstr ""
+
+#: mount/lomount.c:206 mount/losetup.c:125
+msgid "Init (up to 16 hex digits): "
+msgstr ""
+
+#: mount/lomount.c:213 mount/losetup.c:132
+#, c-format
+msgid "Non-hex digit '%c'.\n"
+msgstr ""
+
+#: mount/lomount.c:219 mount/losetup.c:138
+#, c-format
+msgid "Don't know how to get key for encryption system %d\n"
+msgstr ""
+
+#: mount/lomount.c:235
+#, c-format
+msgid "set_loop(%s,%s,%d): success\n"
+msgstr ""
+
+#: mount/lomount.c:245
+#, c-format
+msgid "loop: can't delete device %s: %s\n"
+msgstr ""
+
+#: mount/lomount.c:255
+#, c-format
+msgid "del_loop(%s): success\n"
+msgstr ""
+
+#: mount/lomount.c:263
+msgid "This mount was compiled without loop support. Please recompile.\n"
+msgstr ""
+
+#: mount/losetup.c:70
+msgid "Cannot get loop info"
+msgstr ""
+
+#: mount/losetup.c:174
+#, c-format
+msgid ""
+"usage:\n"
+" %s loop_device # give info\n"
+" %s -d loop_device # delete\n"
+" %s [ -e encryption ] [ -o offset ] loop_device file # setup\n"
+msgstr ""
+
+#: mount/losetup.c:231
+msgid "No loop support was available at compile time. Please recompile.\n"
+msgstr ""
+
+#: mount/mntent.c:165
+#, c-format
+msgid "[mntent]: warning: no final newline at the end of %s\n"
+msgstr ""
+
+#: mount/mntent.c:214
+#, c-format
+msgid "[mntent]: line %d in %s is bad%s\n"
+msgstr ""
+
+#: mount/mntent.c:217
+msgid "; rest of file ignored"
+msgstr ""
+
+#: mount/mount.c:319
+#, c-format
+msgid "mount: according to mtab, %s is already mounted on %s"
+msgstr ""
+
+#: mount/mount.c:322
+#, c-format
+msgid "mount: according to mtab, %s is mounted on %s"
+msgstr ""
+
+#: mount/mount.c:342
+#, c-format
+msgid "mount: can't open %s for writing: %s"
+msgstr ""
+
+#: mount/mount.c:355 mount/mount.c:597
+#, c-format
+msgid "mount: error writing %s: %s"
+msgstr ""
+
+#: mount/mount.c:360
+#, c-format
+msgid "mount: error changing mode of %s: %s"
+msgstr ""
+
+#: mount/mount.c:434
+msgid "mount failed"
+msgstr ""
+
+#: mount/mount.c:436
+#, c-format
+msgid "mount: only root can mount %s on %s"
+msgstr ""
+
+#: mount/mount.c:461
+msgid "mount: loop device specified twice"
+msgstr ""
+
+#: mount/mount.c:467
+msgid "mount: type specified twice"
+msgstr ""
+
+#: mount/mount.c:479
+msgid "mount: skipping the setup of a loop device\n"
+msgstr ""
+
+#: mount/mount.c:488
+#, c-format
+msgid "mount: going to use the loop device %s\n"
+msgstr ""
+
+#: mount/mount.c:492
+msgid "mount: failed setting up loop device\n"
+msgstr ""
+
+#: mount/mount.c:496
+msgid "mount: setup loop device successfully\n"
+msgstr ""
+
+#: mount/mount.c:509
+msgid "mount: this version was compiled without support for the type `nfs'"
+msgstr ""
+
+#: mount/mount.c:557 mount/mount.c:969
+#, c-format
+msgid "mount: cannot fork: %s"
+msgstr ""
+
+#: mount/mount.c:593
+#, c-format
+msgid "mount: can't open %s: %s"
+msgstr ""
+
+#: mount/mount.c:619
+msgid "mount: you must specify the filesystem type"
+msgstr ""
+
+#: mount/mount.c:626 mount/mount.c:660
+#, c-format
+msgid "mount: mount point %s is not a directory"
+msgstr ""
+
+#: mount/mount.c:628
+msgid "mount: permission denied"
+msgstr "mount: permissăo negada"
+
+#: mount/mount.c:630
+msgid "mount: must be superuser to use mount"
+msgstr ""
+
+#. heuristic: if /proc/version exists, then probably proc is mounted
+#. proc mounted?
+#: mount/mount.c:634 mount/mount.c:638
+#, c-format
+msgid "mount: %s is busy"
+msgstr ""
+
+#. no
+#. yes, don't mention it
+#: mount/mount.c:640
+msgid "mount: proc already mounted"
+msgstr ""
+
+#: mount/mount.c:642
+#, c-format
+msgid "mount: %s already mounted or %s busy"
+msgstr ""
+
+#: mount/mount.c:648
+#, c-format
+msgid "mount: mount point %s does not exist"
+msgstr ""
+
+#: mount/mount.c:650
+#, c-format
+msgid "mount: mount point %s is a symbolic link to nowhere"
+msgstr ""
+
+#: mount/mount.c:653
+#, c-format
+msgid "mount: special device %s does not exist"
+msgstr ""
+
+#: mount/mount.c:666
+#, c-format
+msgid "mount: %s not mounted already, or bad option"
+msgstr ""
+
+#: mount/mount.c:668
+#, c-format
+msgid ""
+"mount: wrong fs type, bad option, bad superblock on %s,\n"
+" or too many mounted file systems"
+msgstr ""
+
+#: mount/mount.c:683
+msgid "mount table full"
+msgstr ""
+
+#: mount/mount.c:685
+#, c-format
+msgid "mount: %s: can't read superblock"
+msgstr ""
+
+#: mount/mount.c:688
+#, c-format
+msgid "mount: %s has wrong major or minor number"
+msgstr ""
+
+#: mount/mount.c:693
+#, c-format
+msgid "mount: fs type %s not supported by kernel"
+msgstr ""
+
+#: mount/mount.c:705
+#, c-format
+msgid "mount: probably you meant %s"
+msgstr ""
+
+#: mount/mount.c:707
+msgid "mount: maybe you meant iso9660 ?"
+msgstr ""
+
+#: mount/mount.c:710
+#, c-format
+msgid "mount: %s has wrong device number or fs type %s not supported"
+msgstr ""
+
+#. strange ...
+#: mount/mount.c:715
+#, c-format
+msgid "mount: %s is not a block device, and stat fails?"
+msgstr ""
+
+#: mount/mount.c:717
+#, c-format
+msgid ""
+"mount: the kernel does not recognize %s as a block device\n"
+" (maybe `insmod driver'?)"
+msgstr ""
+
+#: mount/mount.c:720
+#, c-format
+msgid "mount: %s is not a block device (maybe try `-o loop'?)"
+msgstr ""
+
+#: mount/mount.c:723
+#, c-format
+msgid "mount: %s is not a block device"
+msgstr ""
+
+#: mount/mount.c:726
+#, c-format
+msgid "mount: %s is not a valid block device"
+msgstr ""
+
+#: mount/mount.c:730
+#, c-format
+msgid "mount: block device %s is not permitted on its filesystem"
+msgstr ""
+
+#: mount/mount.c:747
+#, c-format
+msgid "mount: %s%s is write-protected, mounting read-only"
+msgstr ""
+
+#: mount/mount.c:748
+msgid "block device "
+msgstr ""
+
+#: mount/mount.c:834
+#, c-format
+msgid "mount: consider mounting %s by %s\n"
+msgstr ""
+
+#: mount/mount.c:835
+msgid "UUID"
+msgstr ""
+
+#: mount/mount.c:835
+msgid "label"
+msgstr "rótulo"
+
+#: mount/mount.c:837 mount/mount.c:1151
+msgid "mount: no such partition found"
+msgstr "mount: a partiçăo năo foi encontrada"
+
+#: mount/mount.c:845
+msgid "mount: no type was given - I'll assume nfs because of the colon\n"
+msgstr ""
+
+#.
+#. * Retry in the background.
+#.
+#: mount/mount.c:861
+#, c-format
+msgid "mount: backgrounding \"%s\"\n"
+msgstr ""
+
+#: mount/mount.c:872
+#, c-format
+msgid "mount: giving up \"%s\"\n"
+msgstr ""
+
+#: mount/mount.c:921
+#, c-format
+msgid "mount: %s already mounted on %s\n"
+msgstr ""
+
+#: mount/mount.c:1030
+msgid ""
+"Usage: mount [-hV]\n"
+" mount -a [-nfFrsvw] [-t vfstypes]\n"
+" mount [-nfrsvw] [-o options] special | node\n"
+" mount [-nfrsvw] [-t vfstype] [-o options] special node\n"
+" A special device can be indicated by -L label or -U uuid ."
+msgstr ""
+
+#: mount/mount.c:1136
+msgid "mount: only root can do that"
+msgstr ""
+
+#: mount/mount.c:1141
+#, c-format
+msgid "mount: no %s found - creating it..\n"
+msgstr ""
+
+#: mount/mount.c:1153
+#, c-format
+msgid "mount: mounting %s\n"
+msgstr ""
+
+#: mount/mount.c:1162
+msgid "not mounted anything"
+msgstr ""
+
+#: mount/mount.c:1175
+#, c-format
+msgid "mount: cannot find %s in %s"
+msgstr ""
+
+#: mount/mount.c:1189
+#, c-format
+msgid "mount: can't find %s in %s or %s"
+msgstr ""
+
+#: mount/mount_by_label.c:141
+msgid "mount: bad UUID"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:186
+#, c-format
+msgid "mount: you didn't specify a filesystem type for %s\n"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:189
+#, c-format
+msgid " I will try type %s\n"
+msgstr ""
+
+#: mount/mount_guess_fstype.c:191
+#, c-format
+msgid " I will try all types mentioned in %s or %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:157
+msgid "mount: excessively long host:dir argument\n"
+msgstr ""
+
+#: mount/nfsmount.c:170
+msgid "mount: warning: multiple hostnames not supported\n"
+msgstr ""
+
+#: mount/nfsmount.c:174
+msgid "mount: directory to mount not in host:dir format\n"
+msgstr ""
+
+#: mount/nfsmount.c:185 mount/nfsmount.c:420
+#, c-format
+msgid "mount: can't get address for %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:191
+msgid "mount: got bad hp->h_length\n"
+msgstr ""
+
+#: mount/nfsmount.c:208
+msgid "mount: excessively long option argument\n"
+msgstr "mount: argumento para opçăo excessivamente longa\n"
+
+#: mount/nfsmount.c:299
+msgid "Warning: Unrecognized proto= option.\n"
+msgstr "Atençăo: Opçăo desconhecida para proto=.\n"
+
+#: mount/nfsmount.c:306
+msgid "Warning: Option namlen is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:310
+#, c-format
+msgid "unknown nfs mount parameter: %s=%d\n"
+msgstr ""
+
+#: mount/nfsmount.c:345
+msgid "Warning: option nolock is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:348
+#, c-format
+msgid "unknown nfs mount option: %s%s\n"
+msgstr ""
+
+#: mount/nfsmount.c:349
+msgid "no"
+msgstr ""
+
+#: mount/nfsmount.c:426
+msgid "mount: got bad hp->h_length?\n"
+msgstr ""
+
+#: mount/nfsmount.c:528
+#, c-format
+msgid "mount: %s:%s failed, reason given by server: %s\n"
+msgstr ""
+
+#: mount/nfsmount.c:539
+msgid "NFS over TCP is not supported.\n"
+msgstr ""
+
+#: mount/nfsmount.c:546
+msgid "nfs socket"
+msgstr ""
+
+#: mount/nfsmount.c:550
+msgid "nfs bindresvport"
+msgstr ""
+
+#: mount/nfsmount.c:561
+msgid "used portmapper to find NFS port\n"
+msgstr ""
+
+#: mount/nfsmount.c:565
+#, c-format
+msgid "using port %d for nfs deamon\n"
+msgstr ""
+
+#: mount/nfsmount.c:576
+msgid "nfs connect"
+msgstr ""
+
+#: mount/nfsmount.c:665
+#, c-format
+msgid "unknown nfs status return value: %d"
+msgstr ""
+
+#: mount/sundries.c:40 mount/sundries.c:55
+msgid "not enough memory"
+msgstr ""
+
+#: mount/sundries.c:65
+msgid "bug in xstrndup call"
+msgstr ""
+
+#: mount/swapon.c:49
+#, c-format
+msgid ""
+"usage: %s [-hV]\n"
+" %s -a [-v]\n"
+" %s [-v] [-p priority] special ...\n"
+" %s [-s]\n"
+msgstr ""
+
+#: mount/swapon.c:86
+#, c-format
+msgid "%s on %s\n"
+msgstr "%s em %s\n"
+
+#: mount/swapon.c:90
+#, c-format
+msgid "swapon: cannot stat %s: %s\n"
+msgstr ""
+
+#: mount/swapon.c:95
+#, c-format
+msgid "swapon: warning: %s has insecure permissions %04o, 0600 suggested\n"
+msgstr ""
+
+#: mount/swapon.c:103
+#, c-format
+msgid "swapon: Skipping file %s - it appears to have holes.\n"
+msgstr ""
+
+#: mount/swapon.c:204
+#, c-format
+msgid "%s: cannot open %s: %s\n"
+msgstr ""
+
+#: mount/umount.c:65
+msgid "umount: compiled without support for -f\n"
+msgstr ""
+
+#: mount/umount.c:115
+#, c-format
+msgid "host: %s, directory: %s\n"
+msgstr ""
+
+#: mount/umount.c:132
+#, c-format
+msgid "umount: can't get address for %s\n"
+msgstr ""
+
+#: mount/umount.c:137
+msgid "umount: got bad hostp->h_length\n"
+msgstr ""
+
+#: mount/umount.c:175
+#, c-format
+msgid "umount: %s: invalid block device"
+msgstr ""
+
+#: mount/umount.c:177
+#, c-format
+msgid "umount: %s: not mounted"
+msgstr ""
+
+#: mount/umount.c:179
+#, c-format
+msgid "umount: %s: can't write superblock"
+msgstr ""
+
+#. Let us hope fstab has a line "proc /proc ..."
+#. and not "none /proc ..."
+#: mount/umount.c:183
+#, c-format
+msgid "umount: %s: device is busy"
+msgstr ""
+
+#: mount/umount.c:185
+#, c-format
+msgid "umount: %s: not found"
+msgstr ""
+
+#: mount/umount.c:187
+#, c-format
+msgid "umount: %s: must be superuser to umount"
+msgstr ""
+
+#: mount/umount.c:189
+#, c-format
+msgid "umount: %s: block devices not permitted on fs"
+msgstr ""
+
+#: mount/umount.c:191
+#, c-format
+msgid "umount: %s: %s"
+msgstr ""
+
+#: mount/umount.c:235
+msgid "no umount2, trying umount...\n"
+msgstr ""
+
+#: mount/umount.c:248
+#, c-format
+msgid "could not umount %s - trying %s instead\n"
+msgstr ""
+
+#: mount/umount.c:264
+#, c-format
+msgid "umount: %s busy - remounted read-only\n"
+msgstr ""
+
+#: mount/umount.c:272
+#, c-format
+msgid "umount: could not remount %s read-only\n"
+msgstr ""
+
+#: mount/umount.c:280
+#, c-format
+msgid "%s umounted\n"
+msgstr ""
+
+#: mount/umount.c:363
+msgid "umount: cannot find list of filesystems to unmount"
+msgstr ""
+
+#: mount/umount.c:392
+msgid ""
+"Usage: umount [-hV]\n"
+" umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n"
+" umount [-f] [-r] [-n] [-v] special | node...\n"
+msgstr ""
+
+#: mount/umount.c:453
+msgid "umount: only root can do that"
+msgstr ""
+
+#: mount/umount.c:468
+#, c-format
+msgid "Trying to umount %s\n"
+msgstr ""
+
+#: mount/umount.c:472
+#, c-format
+msgid "Could not find %s in mtab\n"
+msgstr ""
+
+#: mount/umount.c:476
+#, c-format
+msgid "umount: %s is not mounted (according to mtab)"
+msgstr ""
+
+#: mount/umount.c:478
+#, c-format
+msgid "umount: it seems %s is mounted multiple times"
+msgstr ""
+
+#: mount/umount.c:480
+#, c-format
+msgid "umount: %s is not in the fstab (and you are not root)"
+msgstr ""
+
+#: mount/umount.c:486
+#, c-format
+msgid "umount: %s mount disagrees with the fstab"
+msgstr ""
+
+#: mount/umount.c:505
+#, c-format
+msgid "umount: only root can unmount %s from %s"
+msgstr ""
+
+#: mount/umount.c:515
+#, c-format
+msgid "umount: only %s can unmount %s from %s"
+msgstr ""
+
+#: sys-utils/ctrlaltdel.c:26
+msgid "You must be root to set the Ctrl-Alt-Del behaviour.\n"
+msgstr ""
+
+#: sys-utils/ctrlaltdel.c:41
+msgid "Usage: ctrlaltdel hard|soft\n"
+msgstr ""
+
+#: sys-utils/cytune.c:116
+#, c-format
+msgid ""
+"File %s, For threshold value %lu, Maximum characters in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+
+#: sys-utils/cytune.c:127
+#, c-format
+msgid ""
+"File %s, For threshold value %lu and timrout value %lu, Maximum characters "
+"in fifo were %d,\n"
+"and the maximum transfer rate in characters/second was %f\n"
+msgstr ""
+
+#: sys-utils/cytune.c:194
+#, c-format
+msgid "Invalid interval value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:202
+#, c-format
+msgid "Invalid set value: %s\n"
+msgstr "Valor inválido: %s\n"
+
+#: sys-utils/cytune.c:210
+#, c-format
+msgid "Invalid default value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:218
+#, c-format
+msgid "Invalid set time value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:226
+#, c-format
+msgid "Invalid default time value: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:243
+#, c-format
+msgid ""
+"Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) "
+"[-g|-G] file [file...]\n"
+msgstr ""
+
+#: sys-utils/cytune.c:254 sys-utils/cytune.c:270 sys-utils/cytune.c:287
+#: sys-utils/cytune.c:332
+#, c-format
+msgid "Can't open %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:260
+#, c-format
+msgid "Can't set %s to threshold %d: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:276
+#, c-format
+msgid "Can't set %s to time threshold %d: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:291 sys-utils/cytune.c:342 sys-utils/cytune.c:370
+#, c-format
+msgid "Can't get threshold for %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:296 sys-utils/cytune.c:347 sys-utils/cytune.c:375
+#, c-format
+msgid "Can't get timeout for %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:300
+#, c-format
+msgid "%s: %ld %s threshold and %ld %s timeout\n"
+msgstr ""
+
+#: sys-utils/cytune.c:302 sys-utils/cytune.c:304
+msgid "current"
+msgstr ""
+
+#: sys-utils/cytune.c:302 sys-utils/cytune.c:304
+msgid "default"
+msgstr ""
+
+#: sys-utils/cytune.c:321
+msgid "Can't set signal handler"
+msgstr ""
+
+#: sys-utils/cytune.c:325 sys-utils/cytune.c:356
+msgid "gettimeofday failed"
+msgstr ""
+
+#: sys-utils/cytune.c:336 sys-utils/cytune.c:365
+#, c-format
+msgid "Can't issue CYGETMON on %s: %s\n"
+msgstr ""
+
+#: sys-utils/cytune.c:405
+#, c-format
+msgid "%s: %lu ints, %lu/%lu chars; "
+msgstr ""
+
+#: sys-utils/cytune.c:406
+#, c-format
+msgid "fifo: %lu thresh, %lu tmout, "
+msgstr ""
+
+#: sys-utils/cytune.c:407
+#, c-format
+msgid "%lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:412
+#, c-format
+msgid " %f int/sec; %f rec, %f send (char/sec)\n"
+msgstr ""
+
+#: sys-utils/cytune.c:417
+#, c-format
+msgid ""
+"%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n"
+msgstr ""
+
+#: sys-utils/cytune.c:422
+#, c-format
+msgid " %f int/sec; %f rec (char/sec)\n"
+msgstr ""
+
+#: sys-utils/dmesg.c:38
+#, c-format
+msgid "Usage: %s [-c] [-n level] [-s bufsize]\n"
+msgstr "Uso: %s [-c] [-n nível] [-s tam_buffer]\n"
+
+#: sys-utils/ipcrm.c:46
+#, c-format
+msgid "usage: %s [shm | msg | sem] id\n"
+msgstr "Uso: %s [shm | msg | sem] id\n"
+
+#: sys-utils/ipcrm.c:70
+#, c-format
+msgid "usage: %s [-shm | -msg | -sem] id\n"
+msgstr "Uso: %s [-shm | -msg | -sem] id\n"
+
+#: sys-utils/ipcrm.c:73
+msgid "resource deleted\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:91
+#, c-format
+msgid "usage : %s -asmq -tclup \n"
+msgstr ""
+
+#: sys-utils/ipcs.c:92
+#, c-format
+msgid "\t%s [-s -m -q] -i id\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:93
+#, c-format
+msgid "\t%s -h for help.\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:99
+#, c-format
+msgid "%s provides information on ipc facilities for"
+msgstr ""
+
+#: sys-utils/ipcs.c:100
+msgid " which you have read access.\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:101
+msgid ""
+"Resource Specification:\n"
+"\t-m : shared_mem\n"
+"\t-q : messages\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:102
+msgid ""
+"\t-s : semaphores\n"
+"\t-a : all (default)\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:103
+msgid ""
+"Output Format:\n"
+"\t-t : time\n"
+"\t-p : pid\n"
+"\t-c : creator\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:104
+msgid ""
+"\t-l : limits\n"
+"\t-u : summary\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:105
+msgid "-i id [-s -q -m] : details on resource identified by id\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:237 sys-utils/ipcs.c:439
+msgid "kernel not configured for shared memory\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:243
+msgid "------ Shared Memory Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:246
+#, c-format
+msgid "max number of segments = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:247
+#, c-format
+msgid "max seg size (kbytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:248
+#, c-format
+msgid "max total shared memory (kbytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:249
+#, c-format
+msgid "min seg size (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:253
+msgid "------ Shared Memory Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:254
+#, c-format
+msgid "segments allocated %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:255
+#, c-format
+msgid "pages allocated %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:256
+#, c-format
+msgid "pages resident %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:257
+#, c-format
+msgid "pages swapped %ld\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:258
+#, c-format
+msgid "Swap performance: %ld attempts\t %ld successes\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:263
+msgid "------ Shared Memory Segment Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:264 sys-utils/ipcs.c:370 sys-utils/ipcs.c:462
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:271 sys-utils/ipcs.c:276
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:377
+msgid "shmid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:282 sys-utils/ipcs.c:371
+#: sys-utils/ipcs.c:386 sys-utils/ipcs.c:463 sys-utils/ipcs.c:480
+msgid "perms"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cuid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "cgid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:371 sys-utils/ipcs.c:463
+msgid "uid"
+msgstr ""
+
+#: sys-utils/ipcs.c:265 sys-utils/ipcs.c:463
+msgid "gid"
+msgstr ""
+
+#: sys-utils/ipcs.c:269
+msgid "------ Shared Memory Attach/Detach/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:270
+#, c-format
+msgid "%-10s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:271 sys-utils/ipcs.c:276 sys-utils/ipcs.c:282
+#: sys-utils/ipcs.c:377 sys-utils/ipcs.c:386 sys-utils/ipcs.c:469
+#: sys-utils/ipcs.c:474 sys-utils/ipcs.c:480
+msgid "owner"
+msgstr "dono"
+
+#: sys-utils/ipcs.c:271
+msgid "attached"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "detached"
+msgstr ""
+
+#: sys-utils/ipcs.c:271
+msgid "changed"
+msgstr ""
+
+#: sys-utils/ipcs.c:275
+msgid "------ Shared Memory Creator/Last-op --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276 sys-utils/ipcs.c:474
+#, c-format
+msgid "%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "cpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:276
+msgid "lpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:280
+msgid "------ Shared Memory Segments --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:281 sys-utils/ipcs.c:386 sys-utils/ipcs.c:479
+msgid "key"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "bytes"
+msgstr ""
+
+#: sys-utils/ipcs.c:282
+msgid "nattch"
+msgstr ""
+
+#: sys-utils/ipcs.c:282 sys-utils/ipcs.c:386
+msgid "status"
+msgstr ""
+
+#: sys-utils/ipcs.c:302 sys-utils/ipcs.c:303 sys-utils/ipcs.c:304
+#: sys-utils/ipcs.c:407 sys-utils/ipcs.c:408 sys-utils/ipcs.c:500
+#: sys-utils/ipcs.c:501 sys-utils/ipcs.c:502
+msgid "Not set"
+msgstr ""
+
+#: sys-utils/ipcs.c:324
+msgid "dest"
+msgstr ""
+
+#: sys-utils/ipcs.c:325
+msgid "locked"
+msgstr ""
+
+#: sys-utils/ipcs.c:345
+msgid "kernel not configured for semaphores\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:351
+msgid "------ Semaphore Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:355
+#, c-format
+msgid "max number of arrays = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:356
+#, c-format
+msgid "max semaphores per array = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:357
+#, c-format
+msgid "max semaphores system wide = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:358
+#, c-format
+msgid "max ops per semop call = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:359
+#, c-format
+msgid "semaphore max value = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:363
+msgid "------ Semaphore Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:364
+#, c-format
+msgid "used arrays = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:365
+#, c-format
+msgid "allocated semaphores = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:369
+msgid "------ Semaphore Arrays Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:371 sys-utils/ipcs.c:386
+msgid "semid"
+msgstr ""
+
+#: sys-utils/ipcs.c:375
+msgid "------ Shared Memory Operation/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:376
+#, c-format
+msgid "%-8s%-10s %-26.24s %-26.24s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-op"
+msgstr ""
+
+#: sys-utils/ipcs.c:377
+msgid "last-changed"
+msgstr "última-modificaçăo"
+
+#: sys-utils/ipcs.c:384
+msgid "------ Semaphore Arrays --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:385
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:386
+msgid "nsems"
+msgstr ""
+
+#: sys-utils/ipcs.c:447
+msgid "------ Messages: Limits --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:448
+#, c-format
+msgid "max queues system wide = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:449
+#, c-format
+msgid "max size of message (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:450
+#, c-format
+msgid "default max size of queue (bytes) = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:454
+msgid "------ Messages: Status --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:455
+#, c-format
+msgid "allocated queues = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:456
+#, c-format
+msgid "used headers = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:457
+#, c-format
+msgid "used space = %d bytes\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:461
+msgid "------ Message Queues: Creators/Owners --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:463 sys-utils/ipcs.c:469 sys-utils/ipcs.c:474
+#: sys-utils/ipcs.c:479
+msgid "msqid"
+msgstr ""
+
+#: sys-utils/ipcs.c:467
+msgid "------ Message Queues Send/Recv/Change Times --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:468
+#, c-format
+msgid "%-8s%-10s %-20s%-20s%-20s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "send"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "recv"
+msgstr ""
+
+#: sys-utils/ipcs.c:469
+msgid "change"
+msgstr ""
+
+#: sys-utils/ipcs.c:473
+msgid "------ Message Queues PIDs --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:474
+msgid "lspid"
+msgstr ""
+
+#: sys-utils/ipcs.c:474
+msgid "lrpid"
+msgstr ""
+
+#: sys-utils/ipcs.c:478
+msgid "------ Message Queues --------\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:479
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-12s%-12s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "used-bytes"
+msgstr ""
+
+#: sys-utils/ipcs.c:480
+msgid "messages"
+msgstr ""
+
+#: sys-utils/ipcs.c:539
+#, c-format
+msgid ""
+"\n"
+"Shared memory Segment shmid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:540
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:542
+#, c-format
+msgid "mode=%#o\taccess_perms=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:543
+#, c-format
+msgid "bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:546
+#, c-format
+msgid "att_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:547 sys-utils/ipcs.c:549 sys-utils/ipcs.c:598
+msgid "Not set\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:548
+#, c-format
+msgid "det_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:550
+#, c-format
+msgid "change_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:566
+#, c-format
+msgid ""
+"\n"
+"Message Queue msqid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:567
+#, c-format
+msgid "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:569
+#, c-format
+msgid "cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:572
+#, c-format
+msgid "send_time=%srcv_time=%schange_time=%s"
+msgstr ""
+
+#: sys-utils/ipcs.c:573 sys-utils/ipcs.c:574 sys-utils/ipcs.c:575
+msgid "Not Set\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:592
+#, c-format
+msgid ""
+"\n"
+"Semaphore Array semid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:593
+#, c-format
+msgid "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:595
+#, c-format
+msgid "mode=%#o, access_perms=%#o\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:596
+#, c-format
+msgid "nsems = %d\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:597
+#, c-format
+msgid "otime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:599
+#, c-format
+msgid "ctime = %s"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+#, c-format
+msgid "%-10s%-10s%-10s%-10s%-10s\n"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "semnum"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "value"
+msgstr ""
+
+#: sys-utils/ipcs.c:601
+msgid "ncount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "zcount"
+msgstr ""
+
+#: sys-utils/ipcs.c:602
+msgid "pid"
+msgstr ""
+
+#: sys-utils/kbdrate.c:126
+#, c-format
+msgid "util-linux kbdrate %s \n"
+msgstr ""
+
+#: sys-utils/kbdrate.c:159 sys-utils/kbdrate.c:206
+#, c-format
+msgid "Typematic Rate set to %.1f cps (delay = %d mS)\n"
+msgstr "Velocidade do teclado configurada para %.1f cps (intervalo = %d mS)\n"
+
+#: sys-utils/kbdrate.c:182
+msgid "Cannot open /dev/port"
+msgstr "Năo foi possível abrir /dev/port"
+
+#: sys-utils/rdev.c:68
+msgid "usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]"
+msgstr ""
+
+#: sys-utils/rdev.c:69
+msgid ""
+" rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device"
+msgstr ""
+
+#: sys-utils/rdev.c:70
+msgid " rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2"
+msgstr ""
+
+#: sys-utils/rdev.c:71
+msgid " rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)"
+msgstr ""
+
+#: sys-utils/rdev.c:72
+msgid " rdev -s /dev/fd0 /dev/hda2 set the SWAP device"
+msgstr ""
+
+#: sys-utils/rdev.c:73
+msgid " rdev -r /dev/fd0 627 set the RAMDISK size"
+msgstr ""
+
+#: sys-utils/rdev.c:74
+msgid " rdev -v /dev/fd0 1 set the bootup VIDEOMODE"
+msgstr ""
+
+#: sys-utils/rdev.c:75
+msgid " rdev -o N ... use the byte offset N"
+msgstr ""
+
+#: sys-utils/rdev.c:76
+msgid " rootflags ... same as rdev -R"
+msgstr ""
+
+#: sys-utils/rdev.c:77
+msgid " swapdev ... same as rdev -s"
+msgstr ""
+
+#: sys-utils/rdev.c:78
+msgid " ramsize ... same as rdev -r"
+msgstr ""
+
+#: sys-utils/rdev.c:79
+msgid " vidmode ... same as rdev -v"
+msgstr ""
+
+#: sys-utils/rdev.c:80
+msgid ""
+"Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,..."
+msgstr ""
+
+#: sys-utils/rdev.c:81
+msgid " use -R 1 to mount root readonly, -R 0 for read/write."
+msgstr ""
+
+#: sys-utils/readprofile.c:50
+#, c-format
+msgid ""
+"%s: Usage: \"%s [options]\n"
+"\t -m <mapfile> (default = \"%s\")\n"
+"\t -p <pro-file> (default = \"%s\")\n"
+"\t -i print only info about the sampling step\n"
+"\t -v print verbose data\n"
+"\t -a print all symbols, even if count is 0\n"
+"\t -r reset all the counters (root only)\n"
+"\t -V print version and exit\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:113
+#, c-format
+msgid "%s Version %s\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:125
+msgid "anything\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:154
+#, c-format
+msgid "Sampling_step: %i\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:167 sys-utils/readprofile.c:193
+#, c-format
+msgid "%s: %s(%i): wrong map line\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:180
+#, c-format
+msgid "%s: can't find \"_stext\" in %s\n"
+msgstr ""
+
+#: sys-utils/readprofile.c:221
+msgid "total"
+msgstr "total"
+
+#: sys-utils/renice.c:66
+msgid "usage: renice priority [ [ -p ] pids ] "
+msgstr ""
+
+#: sys-utils/renice.c:67
+msgid "[ [ -g ] pgrps ] [ [ -u ] users ]\n"
+msgstr ""
+
+#: sys-utils/renice.c:93
+#, c-format
+msgid "renice: %s: unknown user\n"
+msgstr ""
+
+#: sys-utils/renice.c:101
+#, c-format
+msgid "renice: %s: bad value\n"
+msgstr ""
+
+#: sys-utils/renice.c:121
+msgid "getpriority"
+msgstr ""
+
+#: sys-utils/renice.c:126
+msgid "setpriority"
+msgstr ""
+
+#: sys-utils/renice.c:129
+#, c-format
+msgid "%d: old priority %d, new priority %d\n"
+msgstr ""
+
+#: sys-utils/setsid.c:23
+#, c-format
+msgid "usage: %s program [arg ...]\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:77
+#, c-format
+msgid ""
+"Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
+" -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s ]\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:89
+msgid "malloc error"
+msgstr ""
+
+#: sys-utils/tunelp.c:100
+msgid "sscanf error"
+msgstr ""
+
+#: sys-utils/tunelp.c:140
+#, c-format
+msgid "%s: %s not an lp device.\n"
+msgstr "%s: %s năo é um dispositivo lp\n"
+
+#: sys-utils/tunelp.c:239
+#, c-format
+msgid "%s status is %d"
+msgstr ""
+
+#: sys-utils/tunelp.c:240
+msgid ", busy"
+msgstr ""
+
+#: sys-utils/tunelp.c:241
+msgid ", ready"
+msgstr ""
+
+#: sys-utils/tunelp.c:242
+msgid ", out of paper"
+msgstr ""
+
+#: sys-utils/tunelp.c:243
+msgid ", on-line"
+msgstr ""
+
+#: sys-utils/tunelp.c:244
+msgid ", error"
+msgstr ""
+
+#: sys-utils/tunelp.c:261
+msgid "LPGETIRQ error"
+msgstr ""
+
+#: sys-utils/tunelp.c:267
+#, c-format
+msgid "%s using IRQ %d\n"
+msgstr ""
+
+#: sys-utils/tunelp.c:269
+#, c-format
+msgid "%s using polling\n"
+msgstr ""
+
+#: text-utils/col.c:154
+#, c-format
+msgid "col: bad -l argument %s.\n"
+msgstr "col: argumento inválido para -l %s.\n"
+
+#: text-utils/col.c:515
+msgid "usage: col [-bfx] [-l nline]\n"
+msgstr ""
+
+#: text-utils/col.c:521
+msgid "col: write error.\n"
+msgstr ""
+
+#: text-utils/col.c:528
+#, c-format
+msgid "col: warning: can't back up %s.\n"
+msgstr ""
+
+#: text-utils/col.c:529
+msgid "past first line"
+msgstr ""
+
+#: text-utils/col.c:529
+msgid "-- line already flushed"
+msgstr ""
+
+#: text-utils/colcrt.c:93
+#, c-format
+msgid "usage: %s [ - ] [ -2 ] [ file ... ]\n"
+msgstr "Uso: %s [ - ] [ -2 ] [ arquivo ... ]\n"
+
+#: text-utils/column.c:276
+msgid "line too long"
+msgstr "linha muito longa"
+
+#: text-utils/column.c:311
+msgid "usage: column [-tx] [-c columns] [file ...]\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:80
+msgid "hexdump: bad length value.\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:91
+msgid "hexdump: bad skip value.\n"
+msgstr ""
+
+#: text-utils/hexsyntax.c:129
+msgid ""
+"hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"
+msgstr ""
+
+#: text-utils/more.c:247
+msgid "usage: "
+msgstr "uso: "
+
+#: text-utils/more.c:249
+msgid " [-dfln] [+linenum | +/pattern] name1 name2 ...\n"
+msgstr " [-dfln] [+número_da_linha | +/padrăo] nome1 nome2 ...\n"
+
+#: text-utils/more.c:423
+#, c-format
+msgid ""
+"\n"
+"*** %s: directory ***\n"
+"\n"
+msgstr ""
+
+#. simple ELF detection
+#: text-utils/more.c:462
+#, c-format
+msgid ""
+"\n"
+"******** %s: Not a text file ********\n"
+"\n"
+msgstr ""
+
+#: text-utils/more.c:566
+msgid "[Use q or Q to quit]"
+msgstr ""
+
+#: text-utils/more.c:752
+msgid "--More--"
+msgstr "--Mais--"
+
+#: text-utils/more.c:754
+#, c-format
+msgid "(Next file: %s)"
+msgstr "(Próximo arquivo: %s)"
+
+#: text-utils/more.c:760
+msgid "[Press space to continue, 'q' to quit.]"
+msgstr "[Pressione espaço para continuar, 'q' para sair.]"
+
+#: text-utils/more.c:1058
+#, c-format
+msgid "...back %d page"
+msgstr "...voltar %d páginas"
+
+#: text-utils/more.c:1104
+#, c-format
+msgid "...skipping %d line"
+msgstr ""
+
+#: text-utils/more.c:1145
+msgid ""
+"\n"
+"***Back***\n"
+"\n"
+msgstr ""
+
+#: text-utils/more.c:1183
+msgid "Can't open help file"
+msgstr ""
+
+#: text-utils/more.c:1204 text-utils/more.c:1208
+msgid "[Press 'h' for instructions.]"
+msgstr ""
+
+#: text-utils/more.c:1243
+#, c-format
+msgid "\"%s\" line %d"
+msgstr ""
+
+#: text-utils/more.c:1245
+#, c-format
+msgid "[Not a file] line %d"
+msgstr ""
+
+#: text-utils/more.c:1329
+msgid " Overflow\n"
+msgstr ""
+
+#: text-utils/more.c:1376
+msgid "...skipping\n"
+msgstr ""
+
+#: text-utils/more.c:1406
+msgid "Regular expression botch"
+msgstr ""
+
+#: text-utils/more.c:1418
+msgid ""
+"\n"
+"Pattern not found\n"
+msgstr ""
+
+#: text-utils/more.c:1421
+msgid "Pattern not found"
+msgstr ""
+
+#: text-utils/more.c:1483
+msgid "can't fork\n"
+msgstr ""
+
+#: text-utils/more.c:1522
+msgid ""
+"\n"
+"...Skipping "
+msgstr ""
+
+#: text-utils/more.c:1526
+msgid "...Skipping "
+msgstr ""
+
+#: text-utils/more.c:1527
+msgid "to file "
+msgstr ""
+
+#: text-utils/more.c:1527
+msgid "back to file "
+msgstr ""
+
+#: text-utils/more.c:1765
+msgid "Line too long"
+msgstr "Linha muito longa"
+
+#: text-utils/more.c:1809
+msgid "No previous command to substitute for"
+msgstr ""
+
+#: text-utils/odsyntax.c:133
+msgid "od: od(1) has been deprecated for hexdump(1).\n"
+msgstr ""
+
+#: text-utils/odsyntax.c:136
+#, c-format
+msgid "od: hexdump(1) compatibility doesn't support the -%c option%s\n"
+msgstr ""
+
+#: text-utils/odsyntax.c:137
+msgid "; see strings(1)."
+msgstr ""
+
+#: text-utils/parse.c:63
+#, c-format
+msgid "hexdump: can't read %s.\n"
+msgstr ""
+
+#: text-utils/parse.c:68
+msgid "hexdump: line too long.\n"
+msgstr "hexdump: linha muito longa.\n"
+
+#: text-utils/parse.c:406
+msgid "hexdump: byte count with multiple conversion characters.\n"
+msgstr ""
+
+#: text-utils/parse.c:490
+#, c-format
+msgid "hexdump: bad byte count for conversion character %s.\n"
+msgstr ""
+
+#: text-utils/parse.c:497
+msgid "hexdump: %%s requires a precision or a byte count.\n"
+msgstr ""
+
+#: text-utils/parse.c:503
+#, c-format
+msgid "hexdump: bad format {%s}\n"
+msgstr ""
+
+#: text-utils/parse.c:509
+msgid "hexdump: bad conversion character %%%s.\n"
+msgstr ""
+
+#: text-utils/rev.c:109
+msgid "Unable to allocate bufferspace\n"
+msgstr ""
+
+#: text-utils/rev.c:167
+msgid "usage: rev [file ...]\n"
+msgstr ""
+
+#: text-utils/ul.c:125
+#, c-format
+msgid "usage: %s [ -i ] [ -tTerm ] file...\n"
+msgstr "Uso: %s [ -i ] [ -tTerm ] arquivo...\n"
+
+#: text-utils/ul.c:136
+msgid "trouble reading terminfo"
+msgstr ""
+
+#: text-utils/ul.c:223
+#, c-format
+msgid "Unknown escape sequence in input: %o, %o\n"
+msgstr ""
+
+#: text-utils/ul.c:372
+msgid "Unable to allocate buffer.\n"
+msgstr ""
+
+#: text-utils/ul.c:529
+msgid "Input line too long.\n"
+msgstr "Linha de entrada muito longa.\n"
+
+#: text-utils/ul.c:542
+msgid "Out of memory when growing buffer.\n"
+msgstr ""
+
+#~ msgid "mount: out of memory"
+#~ msgstr "getopt: faltou memória!"
diff --git a/po/stamp-cat-id b/po/stamp-cat-id
new file mode 100644
index 000000000..9788f7023
--- /dev/null
+++ b/po/stamp-cat-id
@@ -0,0 +1 @@
+timestamp
diff --git a/po/update-potfiles b/po/update-potfiles
new file mode 100644
index 000000000..2b7baf8c7
--- /dev/null
+++ b/po/update-potfiles
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+#
+
+> POTFILES
+> .null
+> POTFILES.in
+
+for x in ../*/*.c; do
+echo "$x \\" >> POTFILES
+done
+echo .null >> POTFILES
+
+cd ..
+for x in */*.c; do
+echo "$x" >> po/POTFILES.in
+done
+cd po
diff --git a/rescuept/README b/rescuept/README
new file mode 100644
index 000000000..77c1c557d
--- /dev/null
+++ b/rescuept/README
@@ -0,0 +1,98 @@
+As far as I now know, there are four utilities that attempt to
+assist in recovering a lost partition table, or a partition
+that was deleted by mistake.
+
+(i) findsuper is a small utility that finds blocks with the ext2
+superblock signature, and prints out location and some info.
+It is in the non-installed part of the e2progs distribution.
+
+(ii) rescuept is a utility that recognizes ext2 superblocks,
+FAT partitions, swap partitions, and extended partition tables;
+it prints out information that can be used with fdisk or sfdisk
+to reconstruct the partition table.
+It is in the non-installed part of the util-linux distribution.
+
+(iii) fixdisktable (http://bmrc.berkeley.edu/people/chaffee/fat32.html)
+is a utility that handles ext2, FAT, NTFS, ufs, BSD disklabels
+(but not yet old Linux swap partitions); it actually will rewrite
+the partition table, if you give it permission.
+
+(iv) gpart (http://home.pages.de/~michab/gpart/) is a utility
+that handles ext2, FAT, Linux swap, HPFS, NTFS, FreeBSD and
+Solaris/x86 disklabels, minix, reiser fs; it prints a proposed
+contents for the primary partition table, and is well-documented.
+
+
+
+The current directory contains rescuept.
+I would never have written it had I known about fixdisktable
+and gpart. However, now that it exists I find several situations
+that are handled by rescuept and not by any of the others,
+so let it be for the moment.
+
+
+Two patches for bugs found in gpart-0.1c:
+=================================================================
+diff -r ../gpart-0.1c/src/gm_ext2.c ./src/gm_ext2.c
+74c74,75
+< if ((sb->s_errors != EXT2_ERRORS_CONTINUE) &&
+---
+> if ((sb->s_errors != 0) &&
+> (sb->s_errors != EXT2_ERRORS_CONTINUE) &&
+78c79
+< if (sb->s_state && (sb->s_state != EXT2_VALID_FS) && (sb->s_state != EXT2_ERROR_FS))
+---
+> if (sb->s_state & ~(EXT2_VALID_FS | EXT2_ERROR_FS))
+=================================================================
+(Both bugs have the effect that good ext2 filesystems are not
+recognized by gpart-0.1c. Patches sent to gpart author.)
+
+
+
+
+How do you get your partition table back?
+The easy way - if you had been smart you would have done
+ # sfdisk -d /dev/xxx > xxx.pt
+before the disaster, where xxx.pt lives on some other disk
+or is printed on a piece of paper and taped to the wall. Now
+ # sfdisk /dev/xxx < xxx.pt
+will restore the partition table.
+
+In the absence of such good information, try each of the above
+utilities to get an idea of where your partitions were.
+Since gpart is the most elaborate one, it may be your best bet.
+If it misses some of your ext2 partitions, and you have gpart-0.1c,
+apply the above patch and try again.
+
+Note that if you in the course of history have deleted some partition
+and created something else on the same spot, then there will often
+be traces of both, and these utilities may easily retrieve outdated
+information.
+
+
+If you think you found a partition, make a primary partition entry
+in the partition table, and try to mount the partition.
+Note that some utilities count sectors the DOS way (starting with 1)
+while most do it right (starting with 0).
+
+
+Report successes and failures of rescuept or any of the others
+to aeb@cwi.nl. (It may well be that rescuept ought to be replaced
+by gpart.)
+
+
+
+A comment:
+-----
+From: Nix <nix-kernel@vger.rutgers.edu>
+Subject: Re: [OFFTOPIC] Searching for filesystem locator
+Date: Sun, 9 May 1999 20:26:16 +0100 (BST)
+
+> (iii) fixdisktable
+
+I've just tried this but it appears to suffer from a 2^31-sectors problem.
+
+> (iv) gpart
+
+... but this proved a godsend.
+-----
diff --git a/rescuept/rescuept.c b/rescuept/rescuept.c
new file mode 100644
index 000000000..b549568f1
--- /dev/null
+++ b/rescuept/rescuept.c
@@ -0,0 +1,640 @@
+/* call: rescuept /dev/hda */
+#include <stdio.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+
+#include <linux/fs.h> /* for BLKGETSIZE */
+
+
+char *progname;
+char *device;
+
+#define MAXPARTITIONS 100
+
+#define MAXPAGESZ 65536
+
+#define BUFSZ 1024000
+#define BUFSECS (BUFSZ/512)
+char buf[BUFSZ];
+int bufstart = -1;
+
+typedef unsigned int uint32;
+typedef int sint32;
+typedef unsigned short uint16;
+typedef short sint16;
+typedef unsigned char uchar;
+
+void read_sectors(int fd, char *buf, int sectornr, int sectorct) {
+ extern long long llseek();
+ long long offset;
+ int n;
+
+ offset = sectornr;
+ offset *= 512;
+ if (llseek(fd, offset, SEEK_SET) != offset) {
+ fprintf(stderr, "%s: llseek error\n", progname);
+ exit(1);
+ }
+ n = read(fd, buf, sectorct*512);
+ if (n != sectorct*512) {
+ if (n == -1)
+ perror("read");
+ fprintf(stderr, "%s: error reading sectors %d-%d\n",
+ progname, sectornr, sectornr+sectorct-1);
+ exit(1);
+ }
+}
+
+
+/*
+ * Partition table stuff
+ */
+
+struct partition {
+ unsigned char bootable; /* 0 or 0x80 */
+ uchar begin_chs[3];
+ unsigned char sys_type;
+ uchar end_chs[3];
+ unsigned int start_sect; /* starting sector counting from 0 */
+ unsigned int nr_sects; /* nr of sectors in partition */
+};
+
+int
+is_extended(unsigned char sys_type) {
+ return (sys_type == 0x5 || sys_type == 0xf || sys_type == 0x85);
+}
+
+/*
+ * List of (extended) partition table sectors found
+ */
+struct epts {
+ int secno;
+ char pt4[64];
+} epts[MAXPARTITIONS];
+int eptsct;
+
+void addepts(int secno, char *data) {
+ if (eptsct >= MAXPARTITIONS)
+ return; /* ignore */
+ epts[eptsct].secno = secno;
+ memcpy(epts[eptsct].pt4, data+512-66, 64);
+ eptsct++;
+}
+
+/*
+ * List of guessed partitions
+ */
+struct pt {
+ int pno;
+ int start;
+ int size;
+ unsigned char type;
+} pts[MAXPARTITIONS];
+int partno;
+
+void addpart(int start, int size, unsigned char type) {
+ if (partno >= MAXPARTITIONS)
+ return; /* ignore */
+ pts[partno].start = start;
+ pts[partno].size = size;
+ pts[partno].type = type;
+ partno++;
+}
+
+void outparts() {
+ int i;
+
+ for(i=0; i<partno; i++)
+ printf("%s%d : start=%9d, size=%8d, Id=%2x\n",
+ device, pts[i].pno,
+ pts[i].start, pts[i].size, pts[i].type);
+}
+
+void outmsg(char *msg, int start, int nextstart, unsigned char type) {
+ printf("# %4d MB %16s (type %2x): sectors %9d-%9d\n",
+ ((nextstart-start)+1024)/2048, msg, type, start, nextstart-1);
+}
+
+int
+create_extended_partition(int fd, int secno, int size) {
+ int sec = secno;
+ int cursec = secno;
+ int pno = partno; /* number of extd partition */
+ int ei = eptsct-1;
+ unsigned char type = 0x5;
+ int lastseen = secno;
+ int ok = 0;
+
+ if (epts[ei].secno != secno) {
+ fprintf(stderr, "%s: program bug\n", progname);
+ exit(1);
+ }
+
+ outmsg("candidate ext pt", secno, secno+1, type);
+ addpart(secno, 1, type); /* size to be filled in later */
+
+ while(1) {
+ char buf[512];
+ struct partition *p1, *p2, *pr, *pe;
+ p1 = (struct partition *)(& epts[ei].pt4[0]);
+ p2 = (struct partition *)(& epts[ei].pt4[16]);
+ /* for the time being we just ignore the rest */
+
+ if (is_extended(p1->sys_type)) {
+ pr = p2;
+ pe = p1;
+ } else if (is_extended(p2->sys_type)) {
+ pr = p1;
+ pe = p2;
+ } else if (p1->sys_type == 0) {
+ pr = p2;
+ pe = 0;
+ } else if (p2->sys_type == 0) {
+ pr = p1;
+ pe = 0;
+ } else
+ break;
+
+ /* first handle the real partition, if any */
+ if (pr->sys_type != 0) {
+ int ss = cursec + pr->start_sect;
+ int es = ss + pr->nr_sects;
+ outmsg("found in ept", ss, es, pr->sys_type);
+ addpart(ss, pr->nr_sects, pr->sys_type);
+ if (lastseen < es - 1)
+ lastseen = es - 1;
+ if (lastseen >= size)
+ break;
+ }
+
+
+ /* then the extended link */
+
+ if (!pe) {
+ ok = 1;
+ break;
+ }
+ type = pe->sys_type;
+ cursec = sec + pe->start_sect;
+ if (cursec >= size)
+ break;
+ read_sectors(fd, buf, cursec, 1);
+ addepts(cursec, buf);
+ ei = eptsct-1;
+ }
+
+ if (!ok || lastseen == secno) {
+ printf("# retracted\n");
+ partno = pno;
+ return 0;
+ }
+
+ pts[pno].type = type;
+ pts[pno].size = lastseen+1-secno;
+ outmsg("extended part ok", secno, lastseen+1, type);
+ return lastseen;
+}
+
+
+
+/*
+ * Recognize an ext2 superblock
+ */
+#define EXT2_SUPER_MAGIC 0xEF53
+
+struct ext2_super_block {
+ uint32 s_inodes_count; /* 0: Inodes count */
+ uint32 s_blocks_count; /* 4: Blocks count */
+ uint32 s_r_blocks_count; /* 8: Reserved blocks count */
+ uint32 s_free_blocks_count; /* 12: Free blocks count */
+ uint32 s_free_inodes_count; /* 16: Free inodes count */
+ uint32 s_first_data_block; /* 20: First Data Block */
+ uint32 s_log_block_size; /* 24: Block size */
+ sint32 s_log_frag_size; /* 28: Fragment size */
+ uint32 s_blocks_per_group; /* 32: # Blocks per group */
+ uint32 s_frags_per_group; /* 36: # Fragments per group */
+ uint32 s_inodes_per_group; /* 40: # Inodes per group */
+ uint32 s_mtime; /* 44: Mount time */
+ uint32 s_wtime; /* 48: Write time */
+ uint16 s_mnt_count; /* 52: Mount count */
+ sint16 s_max_mnt_count; /* 54: Maximal mount count */
+ uint16 s_magic; /* 56: Magic signature */
+ uint16 s_state; /* 58: File system state */
+ uint16 s_errors; /* 60: Behaviour when detecting errors */
+ uint16 s_minor_rev_level; /* 62: minor revision level */
+ uint32 s_lastcheck; /* 64: time of last check */
+ uint32 s_checkinterval; /* 68: max. time between checks */
+ uint32 s_creator_os; /* 72: OS */
+ uint32 s_rev_level; /* 76: Revision level */
+ uint16 s_def_resuid; /* 80: Default uid for reserved blocks */
+ uint16 s_def_resgid; /* 82: Default gid for reserved blocks */
+
+ /* more stuff in later versions - especially s_block_group_nr is useful */
+ uint32 s_first_ino; /* 84: First non-reserved inode */
+ uint16 s_inode_size; /* 88: size of inode structure */
+ uint16 s_block_group_nr; /* 90: block group # of this superblock */
+ uint32 s_feature_compat; /* 92: compatible feature set */
+ uint32 s_feature_incompat; /* 96: incompatible feature set */
+ uint32 s_feature_ro_compat; /* 100: readonly-compatible feature set */
+ uchar s_uuid[16]; /* 104: 128-bit uuid for volume */
+ char s_volume_name[16]; /* 120: volume name */
+ char s_last_mounted[64]; /* 136: directory where last mounted */
+ uint32 s_algorithm_usage_bitmap;/* 200: For compression */
+ uchar s_prealloc_blocks; /* 204: Nr of blocks to try to preallocate*/
+ uchar s_prealloc_dir_blocks; /* 205: Nr to preallocate for dirs */
+ uchar s_reserved[818]; /* 206-1023 */
+};
+
+/*
+ * Heuristic to weed out false alarms for ext2 superblocks.
+ * Recompile this after 2005, of if you destroy things that
+ * have not been written the past ten years.
+ */
+#define YEAR (60*60*24*365)
+#define LOWERLIMIT (1992-1970)*YEAR
+#define UPPERLIMIT (2005-1970)*YEAR
+int
+is_time(uint32 t) {
+ return (t >= LOWERLIMIT && t <= UPPERLIMIT);
+}
+
+int
+is_ztime(uint32 t) {
+ return (t == 0 || (t >= LOWERLIMIT && t <= UPPERLIMIT));
+}
+
+/*
+ * Recognize a FAT filesystem
+ */
+
+struct fat_boot_sector_start {
+ uchar jump_code[3]; /* 0: Bootstrap short or near jump */
+ /* usually jump code (e.g. eb 3e or eb 58) + nop (0x90) */
+ uchar system_id[8]; /* 3: OEM Name */
+ /* fat16: MSDOS5.0 or MSWIN4.0 or ... */
+ /* fat32: MSWIN4.1 (=W95 OSR2) */
+ /* BIOS Parameter Block (BPB) */
+ uchar sector_size[2]; /* 11: bytes/sector (usually 512 or 2048) */
+ uchar cluster_size; /* 13: sectors/cluster (a power of two in 1..128) */
+ uint16 reserved; /* 14: reserved sectors (I see 1 for FAT16, 17 for FAT32) */
+ /* The # of sectors preceding the first FAT,
+ including the boot sector, so at least 1 */
+ uchar fats; /* 16: # of copies of FAT (usually 2) */
+ uchar dir_entries[2]; /* 17: max # of root directory entries (n/a for FAT32) */
+ /* (usually 512; 0 for FAT32) */
+ uchar sectors[2]; /* 19: total # of sectors (in <32MB partn) or 0 */
+ uchar media; /* 21: media code (0xf8 for hard disks) */
+ uint16 fat_length; /* 22: sectors/FAT (n/a: 0 for FAT32) */
+ uint16 secs_track; /* 24: S = # sectors/track (in 1..63) */
+ uint16 heads; /* 26: H = # of heads (in 1..255) */
+ uint32 hidden; /* 28: # of hidden sectors in partition, before boot sector */
+ /* (offset from cyl boundary - often equal to S) */
+ uint32 total_sect; /* 32: # of sectors (if sectors == 0) */
+};
+
+/* Media descriptor byte:
+ f8 hard disk
+ Floppy types:
+ f0 3.5" 36/2/80 2880k
+ f0 3.5" 18/2/80 1440k
+ f9 3.5" 9/2/80 720k
+ f9 5.25" 15/2/80 1200k
+ fa both 9/1/80 320k
+ fb both 9/2/80 640k
+ fc 5.25" 9/1/40 180k
+ fd 5.25" 9/2/40 360k
+ fe 5.25" 8/1/40 160k
+ ff 5.25" 8/2/40 320k
+ Conclusion: this bytes does not differentiate between 3.5" and 5.25",
+ it does not give the capacity or the number of sectors per track.
+ However, maybe C and H can be derived.
+*/
+
+struct fat_boot_sector_middle { /* offset 36-61 for FAT16, 64-89 for FAT32 */
+ /* Extended BIOS Parameter Block */
+ uchar drive_number; /* 0: logical drive number of partition */
+ /* (typically 0 for floppy, 0x80 for each disk) */
+ uchar current_head; /* Originally: track containing boot record. (Usually 0)
+ For WNT: bit 0: dirty: chkdsk must be run
+ bit 1: also run surface scan */
+ uchar extd_signature; /* 2: extended signature (0x29) */
+ /* WNT requires either 0x28 or 0x29 */
+ uchar serial_nr[4]; /* 3: serial number of partition */
+ uchar volume_name[11];/* 7: volume name of partition */
+ /* WNT stores the volume label as a special file
+ in the root directory */
+ uchar fs_name[8]; /* 18: filesystem name (FAT12, FAT16, FAT32) */
+};
+
+struct fat16_boot_sector {
+ struct fat_boot_sector_start s; /* 0-35 */
+ struct fat_boot_sector_middle m; /* 36-61 */
+ uchar boot_code[448]; /* 62-509 */
+ uchar signature[2]; /* 510-511: aa55 */
+};
+
+struct fat32_boot_sector {
+ struct fat_boot_sector_start s; /* 0-35 */
+
+ uint32 fat32_length; /* 36: sectors/FAT */
+ uint16 flags; /* 40: bit 7: fat mirroring, low 4: active fat */
+ /* If mirroring is disabled (bit8 set) the FAT
+ info is only written to the active FAT copy. */
+ uchar version[2]; /* 42: major, minor filesystem version */
+ uint32 root_cluster; /* 44: first cluster in root directory */
+ uint16 info_sector; /* 48: filesystem info sector # relative
+ to partition start (usually 1) */
+ uint16 backup_boot; /* 50: backup boot sector # relat. to part. start */
+ uint16 reserved2[6]; /* 52-63: Unused */
+
+ struct fat_boot_sector_middle m; /* 64-89 */
+ uchar boot_code[420]; /* 90-509 */
+ uchar signature[2]; /* 510-511: aa55 */
+};
+
+/*
+ * The boot code contains message strings ("Invalid system disk")
+ * but these are often localized ("Ongeldige diskette ").
+ * After these messages one finds two or three filenames.
+ * (MSDOS 6.2: "\r\nNon-System disk or disk error\r\n"
+ * "Replace and press any key when ready\r\n", "IO SYS", "MSDOS SYS")
+ * (W95: "IO SYS", "MSDOS SYS", "WINBOOT SYS")
+ * In all cases the sector seems to end with 0, 0, 55, aa.
+ *
+ * Random collection of messages (closed by \0377 or 0):
+ * "\r\nInvalid system disk"
+ * "\r\nOngeldige diskette "
+ * "\r\nDisk I/O error"
+ * "\r\nI/O-fout "
+ * "\r\nReplace the disk, and then press any key\r\n"
+ * "\r\nVervang de diskette en druk op een toets\r\n"
+ * This seems to suggest that the localized strings have the same length.
+ *
+ * "Non-System disk or disk error"
+ * "Replace and press any key when ready"
+ * "Disk Boot failure"
+ *
+ * "BOOT: Couldn't find NTLDR"
+ * "I/O error reading disk"
+ * "Please insert another disk"
+ */
+
+struct fat32_boot_fsinfo {
+ uint32 signature1; /* 41 61 52 52 */
+ uchar unknown1[480];
+ uint32 signature2; /* 61 41 72 72 0x61417272L */
+ uint32 free_clusters; /* Free cluster count. -1 if unknown */
+ uint32 next_cluster; /* Most recently allocated cluster.
+ * Unused under Linux. */
+ uchar unknown2[14];
+ uchar signature[2]; /* 510-511: aa55 */
+};
+
+struct msdos_dir_entry {
+ uchar name[8],ext[3]; /* name and extension */
+ uchar attr; /* attribute bits */
+ uchar lcase; /* Case for base and extension */
+ uchar ctime_ms; /* Creation time, milliseconds */
+ uint16 ctime; /* Creation time */
+ uint16 cdate; /* Creation date */
+ uint16 adate; /* Last access date */
+ uint16 starthi; /* High 16 bits of cluster in FAT32 */
+ uint16 time,date,start;/* time, date and first cluster */
+ uint32 size; /* file size (in bytes) */
+};
+
+/* New swap space */
+struct swap_header_v1 {
+ char bootbits[1024]; /* Space for disklabel etc. */
+ unsigned int version;
+ unsigned int last_page;
+ unsigned int nr_badpages;
+ unsigned int padding[125];
+ unsigned int badpages[1];
+};
+
+int
+main(int argc, char **argv){
+ int i,j,fd;
+ long size;
+ int pagesize, pagesecs;
+ unsigned char *bp;
+ struct ext2_super_block *e2bp;
+ struct fat16_boot_sector *fat16bs;
+ struct fat32_boot_sector *fat32bs;
+
+ progname = argv[0];
+
+ if (argc != 2) {
+ fprintf(stderr, "call: %s device\n", progname);
+ exit(1);
+ }
+
+ device = argv[1];
+
+ fd = open(device, O_RDONLY);
+ if (fd < 0) {
+ perror(device);
+ fprintf(stderr, "%s: could not open %s\n", progname, device);
+ exit(1);
+ }
+
+ if (ioctl(fd, BLKGETSIZE, &size)) {
+ perror("BLKGETSIZE");
+ fprintf(stderr, "%s: could not get device size\n", progname);
+ exit(1);
+ }
+
+ pagesize = getpagesize();
+ if (pagesize <= 0)
+ pagesize = 4096;
+ else if (pagesize > MAXPAGESZ) {
+ fprintf(stderr, "%s: ridiculous pagesize %d\n", progname, pagesize);
+ exit(1);
+ }
+ pagesecs = pagesize/512;
+
+ printf("# partition table of %s\n", device);
+ printf("# total size %d sectors\n", size);
+ printf("unit: sectors\n");
+
+ for(i=0; i<size; i++) {
+ if (i/BUFSECS != bufstart) {
+ int len, secno;
+ bufstart = i/BUFSECS;
+ secno = bufstart*BUFSECS;
+ len = BUFSECS;
+ if (size - secno < len)
+ len = size - secno;
+ len = (len / 2)*2; /* avoid reading the last (odd) sector */
+ read_sectors(fd, buf, secno, len);
+ }
+
+ j = i % BUFSECS;
+
+ bp = buf + 512 * j;
+
+ if (bp[510] == 0x55 && bp[511] == 0xAA) {
+ char *cp = bp+512-2-64;
+ int j;
+
+ if (i==0)
+ continue; /* the MBR is supposed to be broken */
+
+ /* Unfortunately one finds extended partition table sectors
+ that look just like a fat boot sector, except that the
+ partition table bytes have been overwritten */
+ /* typical FAT32 end: "nd then press ...", followed by
+ IO.SYS and MSDOS.SYS and WINBOOT.SYS directory entries.
+ typical extd part tab end: 2 entries, 32 nul bytes */
+
+ for(j=0; j<32; j++)
+ if (cp[32+j])
+ goto nonzero;
+ addepts(i, bp);
+ if (i > 0) {
+ j = create_extended_partition(fd, i, size);
+ if (j && j > i)
+ i = j; /* skip */
+ }
+ continue;
+ nonzero:
+ fat16bs = (struct fat16_boot_sector *) bp;
+ if (fat16bs->s.media == 0xf8 &&
+ fat16bs->m.extd_signature == 0x29 &&
+ !strncmp(fat16bs->m.fs_name, "FAT", 3)) {
+ int lth;
+ lth = fat16bs->s.sectors[0] +
+ fat16bs->s.sectors[1]*256;
+ if (lth) {
+ outmsg("small fat partition", i, i+lth, 0x1);
+ addpart(i, lth, 0x1);
+ } else {
+ lth = fat16bs->s.total_sect;
+ outmsg("fat partition", i, i+lth, 0x6);
+ addpart(i, lth, 0x6);
+ }
+ i = i+lth-1; /* skip */
+ continue;
+ }
+
+ fat32bs = (struct fat32_boot_sector *) bp;
+ if (fat32bs->s.media == 0xf8 &&
+ fat32bs->m.extd_signature == 0x29 &&
+ !strncmp(fat32bs->m.fs_name, "FAT32 ", 8)) {
+ int lth = fat32bs->s.total_sect;
+ outmsg("fat32 partition", i, i+lth, 0xb); /* or 0xc */
+ addpart(i, lth, 0xb);
+ i = i+lth-1; /* skip */
+ continue;
+ }
+ }
+
+ if (!strncmp(bp+502, "SWAP-SPACE", 10)) {
+ char *last;
+ int ct;
+ int ss = i-pagesecs+1;
+ int es;
+ char buf2[MAXPAGESZ];
+
+ read_sectors(fd, buf2, ss, pagesecs);
+ for (last = buf2+pagesize-10-1; last > buf2; last--)
+ if (*last)
+ break;
+ for (ct = 7; ct >= 0; ct--)
+ if (*last & (1<<ct))
+ break;
+ es = ((last - buf2)*8 + ct + 1)*pagesecs + ss;
+ if (es <= size) {
+ outmsg("old swap space", ss, es, 0x82);
+ addpart(ss, es-ss, 0x82);
+
+ i = es-1; /* skip */
+ continue;
+ }
+ }
+
+ if (!strncmp(bp+502, "SWAPSPACE2", 10)) {
+ int ss = i-pagesecs+1;
+ int es, lth;
+ char buf2[MAXPAGESZ];
+ struct swap_header_v1 *p;
+
+ read_sectors(fd, buf2, ss, pagesecs);
+ p = (struct swap_header_v1 *) buf2;
+ lth = (p->last_page + 1)* pagesecs;
+ es = ss + lth;
+ if (es <= size) {
+ outmsg("new swap space", ss, es, 0x82);
+ addpart(ss, lth, 0x82);
+
+ i = es-1; /* skip */
+ continue;
+ }
+ }
+
+ e2bp = (struct ext2_super_block *) bp;
+ if (e2bp->s_magic == EXT2_SUPER_MAGIC && is_time(e2bp->s_mtime)
+ && is_time(e2bp->s_wtime) && is_ztime(e2bp->s_lastcheck)
+ && e2bp->s_log_block_size <= 10 /* at most 1 MB blocks */) {
+ char buf[512];
+ struct ext2_super_block *bp2;
+ int ss, sz, es, gsz, j;
+
+ ss = i-2;
+ sz = (e2bp->s_blocks_count << (e2bp->s_log_block_size + 1));
+ gsz = (e2bp->s_blocks_per_group << (e2bp->s_log_block_size + 1));
+ if (e2bp->s_block_group_nr > 0)
+ ss -= gsz * e2bp->s_block_group_nr;
+ es = ss + sz;
+ if (ss > 0 && es > i && es <= size) {
+ if (e2bp->s_block_group_nr == 0) {
+ outmsg("ext2 partition", ss, es, 0x83);
+ addpart(ss, es-ss, 0x83);
+
+ i = es-1; /* skip */
+ continue;
+ }
+
+ /* maybe we jumped into the middle of a partially
+ obliterated ext2 partition? */
+
+ printf("# sector %d looks like an ext2 superblock copy #%d;\n"
+ "# in a partition covering sectors %d-%d\n",
+ i, e2bp->s_block_group_nr, ss, es-1);
+
+ for (j=1; j<=e2bp->s_block_group_nr; j++) {
+ read_sectors(fd, buf, i-j*gsz, 1);
+ bp2 = (struct ext2_super_block *) buf;
+ if (bp2->s_magic != EXT2_SUPER_MAGIC ||
+ bp2->s_block_group_nr !=
+ e2bp->s_block_group_nr - j)
+ break;
+ }
+ if (j == 1)
+ printf("# however, sector %d doesnt look like a sb.\n",
+ i-gsz);
+ else if (j <= e2bp->s_block_group_nr)
+ printf("# also the preceding %d block groups seem OK\n"
+ "# but before that things seem to be wrong.\n",
+ j-1);
+ else {
+ printf("# found all preceding superblocks OK\n"
+ "# Warning: overlapping partitions?\n");
+ outmsg("ext2 partition", ss, es, 0x83);
+ addpart(ss, es-ss, 0x83);
+ i = es-1; /* skip */
+ continue;
+ }
+ }
+
+ }
+ }
+
+ outparts();
+
+ exit(0);
+}
+
diff --git a/sys-utils/Makefile b/sys-utils/Makefile
index 91aa32d1d..0109eb146 100644
--- a/sys-utils/Makefile
+++ b/sys-utils/Makefile
@@ -2,17 +2,16 @@
# Created: Sat Dec 26 20:09:40 1992
# Revised: Mon Aug 19 20:12:33 1996 by faith@cs.unc.edu
# Copyright 1992, 1993, 1994, 1995 Rickard E. Faith (faith@cs.unc.edu)
-# Copyright 1996 Nicolai Langfeldt (janl@math.uio.no)??
#
-
+include ../make_include
include ../MCONFIG
# Where to put man pages?
MAN1= arch.1 readprofile.1
-MAN8= ctrlaltdel.8 cytune.8 dmesg.8 hwclock.8 \
- ipcrm.8 ipcs.8 kbdrate.8 ramsize.8 renice.8 \
+MAN8= ctrlaltdel.8 cytune.8 dmesg.8 \
+ ipcrm.8 ipcs.8 ramsize.8 renice.8 \
rootflags.8 setsid.8 sln.8 swapdev.8 tunelp.8 \
vidmode.8
@@ -21,56 +20,65 @@ MAN8= ctrlaltdel.8 cytune.8 dmesg.8 hwclock.8 \
BIN= arch dmesg
-USRBIN= cytune ipcrm ipcs renice readprofile setsid tunelp
+USRBIN= cytune ipcrm ipcs renice setsid
+
+USRSBIN= readprofile tunelp
+
+SBIN= ctrlaltdel
-SBIN= ctrlaltdel hwclock kbdrate
+NOTMADE=
ifeq "$(HAVE_SLN)" "no"
+ifeq "$(CAN_DO_STATIC)" "no"
+NOTMADE=nosln
+else
SBIN:=$(SBIN) sln
endif
+endif
ifeq "$(CPU)" "intel"
MAN8:=$(MAN8) rdev.8
-USRBIN:=$(USRBIN) rdev
+USRSBIN:=$(USRSBIN) rdev
endif
# Where to put datebase files?
USRINFO= ipc.info
-all: $(SBIN) $(BIN) $(USRBIN)
+all: $(SBIN) $(BIN) $(USRBIN) $(USRSBIN) $(NOTMADE)
sln: sln.c
$(CC) -static $(CFLAGS) $(LDFLAGS) $< -o $@
+nosln:
+ @echo sln not made since static compilation fails here
+
# Rules for everything else
arch: arch.o
-hwclock.o: hwclock.c shhopt.h
-hwclock: hwclock.o shhopt.o
ctrlaltdel.o: ctrlaltdel.c $(LIB)/linux_reboot.h
ctrlaltdel: ctrlaltdel.o $(LIB)/my_reboot.o
ipcrm: ipcrm.o
ipcs: ipcs.o
-kbdrate: kbdrate.o
rdev: rdev.o
renice: renice.o
readprofile: readprofile.o
setsid: setsid.o
install: all
- $(INSTALLDIR) $(SBINDIR) $(BINDIR) $(USRBINDIR)
+ $(INSTALLDIR) $(SBINDIR) $(BINDIR) $(USRBINDIR) $(USRSBINDIR)
$(INSTALLBIN) $(SBIN) $(SBINDIR)
$(INSTALLBIN) $(BIN) $(BINDIR)
$(INSTALLBIN) $(USRBIN) $(USRBINDIR)
- (cd $(USRBINDIR); ln -sf rdev swapdev)
- (cd $(USRBINDIR); ln -sf rdev ramsize)
- (cd $(USRBINDIR); ln -sf rdev vidmode)
- (cd $(USRBINDIR); ln -sf rdev rootflags)
+ $(INSTALLBIN) $(USRSBIN) $(USRSBINDIR)
+ (cd $(USRSBINDIR); ln -sf rdev swapdev)
+ (cd $(USRSBINDIR); ln -sf rdev ramsize)
+ (cd $(USRSBINDIR); ln -sf rdev vidmode)
+ (cd $(USRSBINDIR); ln -sf rdev rootflags)
$(INSTALLDIR) $(MAN1DIR) $(MAN8DIR) $(INFODIR)
$(INSTALLMAN) $(MAN1) $(MAN1DIR)
$(INSTALLMAN) $(MAN8) $(MAN8DIR)
$(INSTALLMAN) $(USRINFO) $(INFODIR)
clean:
- -rm -f *.o *~ core $(SBIN) $(BIN) $(USRBIN)
+ -rm -f *.o *~ core $(SBIN) $(BIN) $(USRBIN) $(USRSBIN)
diff --git a/sys-utils/README.linux68k b/sys-utils/README.linux68k
deleted file mode 100644
index ae6367130..000000000
--- a/sys-utils/README.linux68k
+++ /dev/null
@@ -1,11 +0,0 @@
-
-Here are the ports of the clock and kbdrate utilities that needed
-/dev/port in their original implementation. /dev/port does not exist
-under Linux/68k, so the needed functionalities are implemented as new
-ioctls in the kernel. The modified sources (in src/) first test if the
-kernel knows that ioctls. If it does, they are used. Else, /dev/port
-is tried the old way. The kernel patch necessary for clock and kbdrate
-is in kernel-patch/. (It is #14a of my patch list to 0.9pl4).
-
-Roman (Roman.Hodek@informatik.uni-erlangen.de)
-
diff --git a/sys-utils/arch.1 b/sys-utils/arch.1
index 9ce88db51..3eaf4f380 100644
--- a/sys-utils/arch.1
+++ b/sys-utils/arch.1
@@ -16,7 +16,8 @@ On current Linux systems,
prints things such as "i386", "i486", "i586", "alpha", "sparc",
"arm", "m68k", "mips", "ppc".
.SH SEE ALSO
-.BR uname (1) ", " uname (2)
+.BR uname (1),
+.BR uname (2)
.\"
.\" Details:
.\" arch prints the machine part of the system_utsname struct
diff --git a/sys-utils/ctrlaltdel.c b/sys-utils/ctrlaltdel.c
index c754fd058..5a0ac9ffb 100644
--- a/sys-utils/ctrlaltdel.c
+++ b/sys-utils/ctrlaltdel.c
@@ -2,19 +2,28 @@
* ctrlaltdel.c - Set the function of the Ctrl-Alt-Del combination
* Created 4-Jul-92 by Peter Orbaek <poe@daimi.aau.dk>
* ftp://ftp.daimi.aau.dk/pub/linux/poe/
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include "linux_reboot.h"
+#include "nls.h"
int
main(int argc, char *argv[]) {
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+
if(geteuid()) {
fprintf(stderr,
- "You must be root to set the Ctrl-Alt-Del behaviour.\n");
+ _("You must be root to set the Ctrl-Alt-Del behaviour.\n"));
exit(1);
}
@@ -29,7 +38,7 @@ main(int argc, char *argv[]) {
exit(1);
}
} else {
- fprintf(stderr, "Usage: ctrlaltdel hard|soft\n");
+ fprintf(stderr, _("Usage: ctrlaltdel hard|soft\n"));
exit(1);
}
exit(0);
diff --git a/sys-utils/cytune.c b/sys-utils/cytune.c
index 510703b94..a98b6a625 100644
--- a/sys-utils/cytune.c
+++ b/sys-utils/cytune.c
@@ -33,6 +33,13 @@
*
*/
+ /*
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ * Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * - fixed strerr(errno) in gettext calls
+ */
+
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
@@ -42,14 +49,16 @@
#include <string.h>
#include <fcntl.h>
#include <errno.h>
+#include <signal.h>
#include <linux/tty.h>
#include <termios.h>
-#if 0
-#include <linux/tqueue.h> /* required for old kernels */
+
+#include "../defines.h" /* for NEED_tqueue_h */
+#ifdef NEED_tqueue_h
+#include <linux/tqueue.h> /* required for old kernels (for struct tq_struct) */
/* compilation errors on other kernels */
#endif
#include <linux/cyclades.h>
-#include <signal.h>
#if 0
#ifndef XMIT
@@ -59,6 +68,8 @@
# endif
#endif
#endif
+
+#include "nls.h"
/* Until it gets put in the kernel,
toggle by hand. */
#undef XMIT
@@ -104,9 +115,7 @@ void summary(int signal) {
for(i = optind; i < argc; i ++) {
j = i - optind;
cc = &cmon[cmon_index];
- fprintf(stderr, "File %s, For threshold value %lu, Maximum characters "
- "in fifo were %d,\nand the maximum transfer rate in "
- "characters/second was %f\n",
+ fprintf(stderr, _("File %s, For threshold value %lu, Maximum characters in fifo were %d,\nand the maximum transfer rate in characters/second was %f\n"),
argv[i],
cc->threshold_value,
cc->maxmax,
@@ -117,10 +126,7 @@ void summary(int signal) {
}
cc = &cmon[cmon_index];
if (cc->threshold_value > 0 && signal != -1) {
- fprintf(stderr, "File %s, For threshold value %lu and timrout value %lu,"
- " Maximum characters "
- "in fifo were %d,\nand the maximum transfer rate in "
- "characters/second was %f\n",
+ fprintf(stderr, _("File %s, For threshold value %lu and timrout value %lu, Maximum characters in fifo were %d,\nand the maximum transfer rate in characters/second was %f\n"),
argv[cmon_index+optind],
cc->threshold_value,
cc->timeout_value,
@@ -174,6 +180,10 @@ int main(int argc, char *argv[]) {
global_argc = argc; /* For signal routine. */
global_argv = &argv; /* For signal routine. */
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
while (EOF != (i = getopt(argc, argv,
"qs:S:t:T:gGi:"))) {
switch (i) {
@@ -183,7 +193,7 @@ int main(int argc, char *argv[]) {
case 'i':
interval = atoi(optarg);
if(interval <= 0) {
- fprintf(stderr, "Invalid interval value: %s\n",optarg);
+ fprintf(stderr, _("Invalid interval value: %s\n"),optarg);
errflg ++;
}
break;
@@ -191,7 +201,7 @@ int main(int argc, char *argv[]) {
++set;
set_val = atoi(optarg);
if(set_val <= 0 || set_val > 12) {
- fprintf(stderr, "Invalid set value: %s\n",optarg);
+ fprintf(stderr, _("Invalid set value: %s\n"),optarg);
errflg ++;
}
break;
@@ -199,7 +209,7 @@ int main(int argc, char *argv[]) {
++set_def;
set_def_val = atoi(optarg);
if(set_def_val < 0 || set_def_val > 12) {
- fprintf(stderr, "Invalid default value: %s\n",optarg);
+ fprintf(stderr, _("Invalid default value: %s\n"),optarg);
errflg ++;
}
break;
@@ -207,7 +217,7 @@ int main(int argc, char *argv[]) {
++set_time;
set_time_val = atoi(optarg);
if(set_time_val <= 0 || set_time_val > 255) {
- fprintf(stderr, "Invalid set time value: %s\n",optarg);
+ fprintf(stderr, _("Invalid set time value: %s\n"),optarg);
errflg ++;
}
break;
@@ -215,7 +225,7 @@ int main(int argc, char *argv[]) {
++set_def_time;
set_def_time_val = atoi(optarg);
if(set_def_time_val < 0 || set_def_time_val > 255) {
- fprintf(stderr, "Invalid default time value: %s\n",optarg);
+ fprintf(stderr, _("Invalid default time value: %s\n"),optarg);
errflg ++;
}
break;
@@ -232,9 +242,7 @@ int main(int argc, char *argv[]) {
(set && set_def) || (set_time && set_def_time) ||
(get && get_def)) {
fprintf(stderr,
- "Usage: %s [-q [-i interval]]"
- " ([-s value]|[-S value]) ([-t value]|[-T value])"
- " [-g|-G] file [file...]\n",
+ _("Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) [-g|-G] file [file...]\n"),
argv[0]);
exit(1);
}
@@ -245,14 +253,16 @@ int main(int argc, char *argv[]) {
for(i = optind;i < argc;i ++) {
file = open(argv[i],O_RDONLY);
if(file == -1) {
- fprintf(stderr, "Can't open %s: %s\n",argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't open %s: %s\n"),argv[i],strerror(errsv));
exit(1);
}
if(ioctl(file,
set ? CYSETTHRESH : CYSETDEFTHRESH,
set ? set_val : set_def_val)) {
- fprintf(stderr, "Can't set %s to threshold %d: %s\n",
- argv[i],set?set_val:set_def_val,strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't set %s to threshold %d: %s\n"),
+ argv[i],set?set_val:set_def_val,strerror(errsv));
exit(1);
}
}
@@ -261,14 +271,16 @@ int main(int argc, char *argv[]) {
for(i = optind;i < argc;i ++) {
file = open(argv[i],O_RDONLY);
if(file == -1) {
- fprintf(stderr, "Can't open %s: %s\n",argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't open %s: %s\n"),argv[i],strerror(errsv));
exit(1);
}
if(ioctl(file,
set_time ? CYSETTIMEOUT : CYSETDEFTIMEOUT,
set_time ? set_time_val : set_def_time_val)) {
- fprintf(stderr, "Can't set %s to time threshold %d: %s\n",
- argv[i],set_time?set_time_val:set_def_time_val,strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't set %s to time threshold %d: %s\n"),
+ argv[i],set_time?set_time_val:set_def_time_val,strerror(errsv));
exit(1);
}
}
@@ -278,24 +290,27 @@ int main(int argc, char *argv[]) {
for(i = optind;i < argc;i ++) {
file = open(argv[i],O_RDONLY);
if(file == -1) {
- fprintf(stderr, "Can't open %s: %s\n",argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't open %s: %s\n"),argv[i],strerror(errsv));
exit(1);
}
if(ioctl(file, get ? CYGETTHRESH : CYGETDEFTHRESH, &threshold_value)) {
- fprintf(stderr, "Can't get threshold for %s: %s\n",
- argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't get threshold for %s: %s\n"),
+ argv[i],strerror(errsv));
exit(1);
}
if(ioctl(file, get ? CYGETTIMEOUT : CYGETDEFTIMEOUT, &timeout_value)) {
- fprintf(stderr, "Can't get timeout for %s: %s\n",
- argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't get timeout for %s: %s\n"),
+ argv[i],strerror(errsv));
exit(1);
}
- printf("%s: %ld %s threshold and %ld %s timeout\n",
+ printf(_("%s: %ld %s threshold and %ld %s timeout\n"),
argv[i], threshold_value,
- get?"current":"default",
+ get?_("current"):_("default"),
timeout_value,
- get?"current":"default");
+ get?_("current"):_("default"));
}
}
@@ -306,40 +321,44 @@ int main(int argc, char *argv[]) {
cmon = (struct cyclades_control *) malloc(sizeof (struct cyclades_control)
* numfiles);
if(!cmon) {
- perror("malloc failed");
+ perror(_("malloc failed"));
exit(1);
}
if(signal(SIGINT, summary)||
signal(SIGQUIT, summary)||
signal(SIGTERM, summary)) {
- perror("Can't set signal handler");
+ perror(_("Can't set signal handler"));
exit(1);
}
if(gettimeofday(&lasttime,&tz)) {
- perror("gettimeofday failed");
+ perror(_("gettimeofday failed"));
exit(1);
}
for(i = optind; i < argc; i ++) {
cmon_index = i - optind;
cmon[cmon_index].cfile = open(argv[i], O_RDONLY);
if(-1 == cmon[cmon_index].cfile) {
- fprintf(stderr, "Can't open %s: %s\n",argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't open %s: %s\n"),argv[i],strerror(errsv));
exit(1);
}
if(ioctl(cmon[cmon_index].cfile, CYGETMON, &cmon[cmon_index].c)) {
- fprintf(stderr, "Can't issue CYGETMON on %s: %s\n",
- argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't issue CYGETMON on %s: %s\n"),
+ argv[i],strerror(errsv));
exit(1);
}
summary(-1);
if(ioctl(cmon[cmon_index].cfile, CYGETTHRESH, &threshold_value)) {
- fprintf(stderr, "Can't get threshold for %s: %s\n",
- argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't get threshold for %s: %s\n"),
+ argv[i],strerror(errsv));
exit(1);
}
if(ioctl(cmon[cmon_index].cfile, CYGETTIMEOUT, &timeout_value)) {
- fprintf(stderr, "Can't get timeout for %s: %s\n",
- argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't get timeout for %s: %s\n"),
+ argv[i],strerror(errsv));
exit(1);
}
}
@@ -347,7 +366,7 @@ int main(int argc, char *argv[]) {
sleep(interval);
if(gettimeofday(&thistime,&tz)) {
- perror("gettimeofday failed");
+ perror(_("gettimeofday failed"));
exit(1);
}
diff = dtime(&thistime, &lasttime);
@@ -356,18 +375,21 @@ int main(int argc, char *argv[]) {
for(i = optind; i < argc; i ++) {
cmon_index = i - optind;
if(ioctl(cmon[cmon_index].cfile, CYGETMON, &cywork)) {
- fprintf(stderr, "Can't issue CYGETMON on %s: %s\n",
- argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't issue CYGETMON on %s: %s\n"),
+ argv[i],strerror(errsv));
exit(1);
}
if(ioctl(cmon[cmon_index].cfile, CYGETTHRESH, &threshold_value)) {
- fprintf(stderr, "Can't get threshold for %s: %s\n",
- argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't get threshold for %s: %s\n"),
+ argv[i],strerror(errsv));
exit(1);
}
if(ioctl(cmon[cmon_index].cfile, CYGETTIMEOUT, &timeout_value)) {
- fprintf(stderr, "Can't get timeout for %s: %s\n",
- argv[i],strerror(errno));
+ int errsv = errno;
+ fprintf(stderr, _("Can't get timeout for %s: %s\n"),
+ argv[i],strerror(errsv));
exit(1);
}
@@ -396,26 +418,24 @@ int main(int argc, char *argv[]) {
}
#ifdef XMIT
- printf("%s: %lu ints, %lu/%lu chars; "
- "fifo: %lu thresh, %lu tmout, "
- "%lu max, %lu now\n",
+ printf(_("%s: %lu ints, %lu/%lu chars; ")
+ _("fifo: %lu thresh, %lu tmout, ")
+ _("%lu max, %lu now\n"),
argv[i],
cywork.int_count,cywork.char_count,cywork.send_count,
threshold_value,timeout_value,
cywork.char_max,cywork.char_last);
- printf(" %f int/sec; %f rec, %f send (char/sec)\n",
+ printf(_(" %f int/sec; %f rec, %f send (char/sec)\n"),
cywork.int_count/diff,
xfer_rate,
xmit_rate);
#else
- printf("%s: %lu ints, %lu chars; "
- "fifo: %lu thresh, %lu tmout, "
- "%lu max, %lu now\n",
+ printf(_("%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n"),
argv[i],
cywork.int_count,cywork.char_count,
threshold_value,timeout_value,
cywork.char_max,cywork.char_last);
- printf(" %f int/sec; %f rec (char/sec)\n",
+ printf(_(" %f int/sec; %f rec (char/sec)\n"),
cywork.int_count/diff,
xfer_rate);
#endif
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c
index bfb488f96..a1026af63 100644
--- a/sys-utils/dmesg.c
+++ b/sys-utils/dmesg.c
@@ -6,12 +6,16 @@
* Modifications by Rick Sladkey (jrs@world.std.com)
* Larger buffersize 3 June 1998 by Nicolai Langfeldt, based on a patch
* by Peeter Joot. This was also suggested by John Hudson.
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <linux/unistd.h>
#include <stdio.h>
#include <getopt.h>
#include <stdlib.h>
+#include "nls.h"
#if __GNU_LIBRARY__ < 5
@@ -31,7 +35,7 @@ static char *progname;
void
usage()
{
- fprintf( stderr, "Usage: %s [-c] [-n level] [-s bufsize]\n", progname );
+ fprintf( stderr, _("Usage: %s [-c] [-n level] [-s bufsize]\n"), progname );
}
int main( int argc, char *argv[] )
@@ -45,6 +49,10 @@ int main( int argc, char *argv[] )
int lastc;
int cmd = 3;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
progname = argv[0];
while ((c = getopt( argc, argv, "cn:s:" )) != EOF) {
switch (c) {
diff --git a/sys-utils/hwclock.c b/sys-utils/hwclock.c
deleted file mode 100644
index 02302da29..000000000
--- a/sys-utils/hwclock.c
+++ /dev/null
@@ -1,2151 +0,0 @@
-/**************************************************************************
- hwclock
-***************************************************************************
-
- This is a program for reading and setting the Hardware Clock on an ISA
- family computer. This is the clock that is also known as the RTC,
- real time clock, or, unfortunately, the CMOS clock.
-
- See man page for details.
-
- By Bryan Henderson, 96.09.19. bryanh@giraffe-data.com
-
- Based on work by others; see history at end of source code.
-
-**************************************************************************/
-/**************************************************************************
- Maintenance notes
-
- To compile this, you must use GNU compiler optimization (-O option)
- in order to make the "extern inline" functions from asm/io.h (inb(),
- etc.) compile. If you don't optimize, which means the compiler
- will generate no inline functions, the references to these functions
- in this program will be compiled as external references. Since you
- probably won't be linking with any functions by these names, you will
- have unresolved external references when you link.
-
- The program is designed to run setuid superuser, since we need to be
- able to do direct I/O. (More to the point: we need permission to
- execute the iopl() system call). (However, if you use one of the
- methods other than direct ISA I/O to access the clock, no setuid is
- required).
-
- Here's some info on how we must deal with the time that elapses while
- this program runs: There are two major delays as we run:
-
- 1) Waiting up to 1 second for a transition of the Hardware Clock so
- we are synchronized to the Hardware Clock.
-
- 2) Running the "date" program to interpret the value of our --date
- option.
-
- Reading the /etc/adjtime file is the next biggest source of delay and
- uncertainty.
-
- The user wants to know what time it was at the moment he invoked us,
- not some arbitrary time later. And in setting the clock, he is
- giving us the time at the moment we are invoked, so if we set the
- clock some time later, we have to add some time to that.
-
- So we check the system time as soon as we start up, then run "date"
- and do file I/O if necessary, then wait to synchronize with a
- Hardware Clock edge, then check the system time again to see how
- much time we spent. We immediately read the clock then and (if
- appropriate) report that time, and additionally, the delay we measured.
-
- If we're setting the clock to a time given by the user, we wait some
- more so that the total delay is an integral number of seconds, then
- set the Hardware Clock to the time the user requested plus that
- integral number of seconds. N.B. The Hardware Clock can only be set
- in integral seconds.
-
- If we're setting the clock to the system clock value, we wait for
- the system clock to reach the top of a second, and then set the
- Hardware Clock to the system clock's value.
-
- Here's an interesting point about setting the Hardware Clock: On my
- machine, when you set it, it sets to that precise time. But one can
- imagine another clock whose update oscillator marches on a steady one
- second period, so updating the clock between any two oscillator ticks
- is the same as updating it right at the earlier tick. To avoid any
- complications that might cause, we set the clock as soon as possible
- after an oscillator tick.
-
-
- About synchronizing to the Hardware Clock when reading the time: The
- precision of the Hardware Clock counters themselves is one second.
- You can't read the counters and find out that is 12:01:02.5. But if
- you consider the location in time of the counter's ticks as part of
- its value, then its precision is as infinite as time is continuous!
- What I'm saying is this: To find out the _exact_ time in the
- hardware clock, we wait until the next clock tick (the next time the
- second counter changes) and measure how long we had to wait. We
- then read the value of the clock counters and subtract the wait time
- and we know precisely what time it was when we set out to query the
- time.
-
- hwclock uses this method, and considers the Hardware Clock to have
- infinite precision.
-
-
- Enhancements needed:
-
- - When waiting for whole second boundary in set_hardware_clock_exact,
- fail if we miss the goal by more than .1 second, as could happen if
- we get pre-empted (by the kernel dispatcher).
-
-****************************************************************************/
-
-#include <string.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <time.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#ifdef __i386__
-#include <asm/io.h> /* for inb, outb */
-#endif
-#include <shhopt.h>
-#include "../version.h"
-
-#define MYNAME "hwclock"
-#define VERSION "2.4"
-
-#define FLOOR(arg) ((arg >= 0 ? (int) arg : ((int) arg) - 1));
-
-/* Here the information for time adjustments is kept. */
-#define ADJPATH "/etc/adjtime"
-
-/* Note that we must define the boolean type as int because we use the
- shhopt option processing library which, unfortunately, returns flag
- options as integers. It is customary to define bool as char, but
- then we would have to do a lot of conversion in order to interface
- with shhopt.
-*/
-typedef int bool;
-#define TRUE 1
-#define FALSE 0
-
-struct adjtime {
- /* This is information we keep in the adjtime file that tells us how
- to do drift corrections. Elements are all straight from the
- adjtime file, so see documentation of that file for details.
- Exception is <dirty>, which is an indication that what's in this
- structure is not what's in the disk file (because it has been
- updated since read from the disk file).
- */
- bool dirty;
- float drift_factor;
- time_t last_adj_time;
- float not_adjusted;
- time_t last_calib_time;
-};
-
-
-enum clock_access_method {ISA, RTC_IOCTL, KD, NOCLOCK};
- /* A method for accessing (reading, writing) the hardware clock:
-
- ISA:
- via direct CPU I/O instructions that work on an ISA family
- machine (IBM PC compatible).
-
- RTC_IOCTL:
- via the rtc device driver, using device special file /dev/rtc.
-
- KD:
- via the console driver, using device special file /dev/tty1.
- This is the m68k ioctl interface, known as KDGHWCLK.
-
- NO_CLOCK:
- Unable to determine a usable access method for the system clock.
- */
-
-#ifdef __i386__
-/* The following are just constants. Oddly, this program will not
- compile if the inb() and outb() functions use something even
- slightly different from these variables. This is probably at least
- partially related to the fact that __builtin_constant_p() doesn't
- work (is never true) in an inline function. See comment to this
- effect in asm/io.h.
-*/
-static unsigned short clock_ctl_addr = 0x70;
-static unsigned short clock_data_addr = 0x71;
-#endif
-
-bool debug;
- /* We are running in debug mode, wherein we put a lot of information about
- what we're doing to standard output. Because of the pervasive and yet
- background nature of this value, this is a global variable. */
-
-bool interrupts_enabled;
- /* Interrupts are enabled as normal. We, unfortunately, turn interrupts
- on the machine off in some places where we do the direct ISA accesses
- to the Hardware Clock. It is in extremely poor form for a user space
- program to do this, but that's the price we have to pay to run on an
- ISA machine without the rtc driver in the kernel.
-
- Code which turns interrupts off uses this value to determine if they
- need to be turned back on.
- */
-
-#include <linux/version.h>
-/* Check if the /dev/rtc interface is available in this version of
- the system headers. 131072 is linux 2.0.0. Might need to make
- it conditional on i386 or something too -janl */
-#if LINUX_VERSION_CODE >= 131072
-#include <linux/mc146818rtc.h>
-#include <linux/kd.h>
-static const bool got_rtc = TRUE;
-#else
-static const bool got_rtc = FALSE;
-/* Dummy definitions to make it compile. If any lines containing these
- macros ever execute, there is a bug in the code.
- */
-#define RTC_SET_TIME -1
-#define RTC_RD_TIME -1
-#define RTC_UIE_ON -1
-#define RTC_UIE_OFF -1
-#endif
-
-/* The RTC_EPOCH_READ and RTC_EPOCH_SET macros are supposed to be
- defined by linux/mc146818rtc.h, included above. However, these are
- recent inventions and at the time of this writing, not in any
- official Linux. Since these values aren't even necessary for most
- uses of hwclock, we don't want compilation to depend on the user
- having some arcane version of this header file on his system. Thus,
- we define the macros ourselves if the header file failed to do so.
- 98.03.03.
-*/
-
-#ifndef RTC_EPOCH_READ
-#define RTC_EPOCH_READ _IOR('p', 0x0d, unsigned long) /* Read epoch */
- /* Not all kernels have this ioctl */
-#endif
-
-#ifndef RTC_EPOCH_SET
-#define RTC_EPOCH_SET _IOW('p', 0x0e, unsigned long) /* Set epoch */
- /* Not all kernels have this ioctl */
-#endif
-
-
-#if defined(KDGHWCLK)
-static const bool got_kdghwclk = TRUE;
-static const int kdghwclk_ioctl = KDGHWCLK;
-static const int kdshwclk_ioctl = KDSHWCLK;
-#else
-static const bool got_kdghwclk = FALSE;
-static const int kdghwclk_ioctl; /* Never used; just to make compile work */
-struct hwclk_time {int sec;};
- /* Never used; just to make compile work */
-#endif
-
-
-/* We're going to assume that if the CPU is in the Intel x86 family,
- this is an ISA family machine. For all practical purposes, this is
- the case at the time of this writing, especially after we assume a
- Linux kernel is running on it.
- */
-const bool isa_machine =
-#ifdef __i386__
-TRUE
-#else
-FALSE;
-#endif
-;
-
-const bool alpha_machine =
-#ifdef __alpha__
-TRUE
-#else
-FALSE;
-#endif
-;
-
-
-
-static int
-i386_iopl(const int level) {
-/*----------------------------------------------------------------------------
- When compiled for an Intel target, this is just the iopl() kernel call.
- When compiled for any other target, this is a dummy function.
-
- We do it this way in order to keep the conditional compilation stuff
- out of the way so it doesn't mess up readability of the code.
------------------------------------------------------------------------------*/
-#ifdef __i386__
- extern int iopl(const int level);
- return iopl(level);
-#else
- return -1;
-#endif
-}
-
-
-
-static float
-time_diff(struct timeval subtrahend, struct timeval subtractor) {
-/*---------------------------------------------------------------------------
- The difference in seconds between two times in "timeval" format.
-----------------------------------------------------------------------------*/
- return( (subtrahend.tv_sec - subtractor.tv_sec)
- + (subtrahend.tv_usec - subtractor.tv_usec) / 1E6 );
-}
-
-
-static struct timeval
-time_inc(struct timeval addend, float increment) {
-/*----------------------------------------------------------------------------
- The time, in "timeval" format, which is <increment> seconds after
- the time <addend>. Of course, <increment> may be negative.
------------------------------------------------------------------------------*/
- struct timeval newtime;
-
- newtime.tv_sec = addend.tv_sec + (int) increment;
- newtime.tv_usec = addend.tv_usec + (increment - (int) increment) * 1E6;
-
- /* Now adjust it so that the microsecond value is between 0 and 1 million */
- if (newtime.tv_usec < 0) {
- newtime.tv_usec += 1E6;
- newtime.tv_sec -= 1;
- } else if (newtime.tv_usec >= 1E6) {
- newtime.tv_usec -= 1E6;
- newtime.tv_sec += 1;
- }
- return(newtime);
-}
-
-
-
-static inline unsigned char
-hclock_read(unsigned char reg) {
-/*---------------------------------------------------------------------------
- Relative byte <reg> of the Hardware Clock value.
-
- On non-ISA machine, just return 0.
----------------------------------------------------------------------------*/
- register unsigned char ret;
-#ifdef __i386__
- const bool interrupts_were_enabled = interrupts_enabled;
-
- __asm__ volatile ("cli");
- interrupts_enabled = FALSE;
- /* & 0x7f ensures that we are not disabling NMI while we read.
- Setting on Bit 7 here would disable NMI
- */
- outb(reg & 0x7f, clock_ctl_addr);
- ret = inb(clock_data_addr);
- if (interrupts_were_enabled) {
- __asm__ volatile ("sti");
- interrupts_enabled = TRUE;
- }
-#else
- ret = 0;
-#endif
- return ret;
-}
-
-
-
-static inline void
-hclock_write(unsigned char reg, unsigned char val) {
-/*----------------------------------------------------------------------------
- Set relative byte <reg> of the Hardware Clock value to <val>.
-
- On non-ISA machine, do nothing.
-----------------------------------------------------------------------------*/
-#ifdef __i386__
- /* & 0x7f ensures that we are not disabling NMI while we read.
- Setting on Bit 7 here would disable NMI
- */
- outb(reg & 0x7f, clock_ctl_addr);
- outb(val, clock_data_addr);
-#endif
-}
-
-
-
-static inline int
-hclock_read_bcd (int addr) {
- int b;
- b = hclock_read(addr);
- return (b & 15) + (b >> 4) * 10;
-}
-
-static inline void
-hclock_write_bcd(int addr, int value) {
- hclock_write(addr, ((value / 10) << 4) + value % 10);
-}
-
-
-static void
-read_adjtime(struct adjtime *adjtime_p, int *rc_p) {
-/*----------------------------------------------------------------------------
- Read the adjustment parameters out of the /etc/adjtime file.
-
- Return them as the adjtime structure <*adjtime_p>.
-
- If there is no /etc/adjtime file, return defaults.
- If values are missing from the file, return defaults for them.
-
- return *rc_p = 0 if all OK, !=0 otherwise.
-
------------------------------------------------------------------------------*/
- FILE *adjfile;
- int rc; /* local return code */
- struct stat statbuf; /* We don't even use the contents of this. */
-
- rc = stat(ADJPATH, &statbuf);
- if (rc < 0 && errno == ENOENT) {
- /* He doesn't have a adjtime file, so we'll use defaults. */
- adjtime_p->drift_factor = 0;
- adjtime_p->last_adj_time = 0;
- adjtime_p->not_adjusted = 0;
- adjtime_p->last_calib_time = 0;
-
- *rc_p = 0;
- } else {
- adjfile = fopen(ADJPATH, "r"); /* open file for reading */
- if (adjfile == NULL) {
- const int fopen_errno = errno;
- fprintf(stderr, MYNAME " is unable to open file " ADJPATH ". "
- "fopen() errno=%d:%s", fopen_errno, strerror(fopen_errno));
- *rc_p = 2;
- } else {
- char line1[81]; /* String: first line of adjtime file */
- char line2[81]; /* String: second line of adjtime file */
-
- line1[0] = '\0'; /* In case fgets fails */
- fgets(line1, sizeof(line1), adjfile);
- line2[0] = '\0'; /* In case fgets fails */
- fgets(line2, sizeof(line2), adjfile);
-
- fclose(adjfile);
-
- /* Set defaults in case values are missing from file */
- adjtime_p->drift_factor = 0;
- adjtime_p->last_adj_time = 0;
- adjtime_p->not_adjusted = 0;
- adjtime_p->last_calib_time = 0;
-
- sscanf(line1, "%f %d %f",
- &adjtime_p->drift_factor,
- (int *) &adjtime_p->last_adj_time,
- &adjtime_p->not_adjusted);
-
- sscanf(line2, "%d", (int *) &adjtime_p->last_calib_time);
-
- *rc_p = 0;
- }
- adjtime_p->dirty = FALSE;
-
- if (debug) {
- printf("Last drift adjustment done at %d seconds after 1969\n",
- (int) adjtime_p->last_adj_time);
- printf("Last calibration done at %d seconds after 1969\n",
- (int) adjtime_p->last_calib_time);
- }
- }
-}
-
-
-
-static void
-synchronize_to_clock_tick_ISA(int *retcode_p) {
-/*----------------------------------------------------------------------------
- Same as synchronize_to_clock_tick(), but just for ISA.
------------------------------------------------------------------------------*/
- int i; /* local loop index */
-
- /* Wait for rise. Should be within a second, but in case something
- weird happens, we have a limit on this loop to reduce the impact
- of this failure.
- */
- for (i = 0; !(hclock_read(10) & 0x80) && (i < 10000000); i++);
- if (i >= 10000000) *retcode_p = 1;
- else {
- /* Wait for fall. Should be within 2.228 ms. */
- for (i = 0; (hclock_read(10) & 0x80) && (i < 1000000); i++);
- if (i >= 10000000) *retcode_p = 1;
- else *retcode_p = 0;
- }
-}
-
-
-
-static void
-busywait_for_rtc_clock_tick(const int rtc_fd, int *retcode_p) {
-/*----------------------------------------------------------------------------
- Wait for the top of a clock tick by reading /dev/rtc in a busy loop until
- we see it.
------------------------------------------------------------------------------*/
- struct tm start_time;
- /* The time when we were called (and started waiting) */
- int rc;
-
- if (debug)
- printf("Waiting in loop for time from /dev/rtc to change\n");
-
- rc = ioctl(rtc_fd, RTC_RD_TIME, &start_time);
- if (rc == -1) {
- fprintf(stderr, "ioctl() to /dev/rtc to read time failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- *retcode_p = 1;
- } else {
- /* Wait for change. Should be within a second, but in case something
- weird happens, we have a limit on this loop to reduce the impact
- of this failure.
- */
- struct tm nowtime;
- int i; /* local loop index */
- int rc; /* Return code from ioctl */
-
- for (i = 0;
- (rc = ioctl(rtc_fd, RTC_RD_TIME, &nowtime)) != -1
- && start_time.tm_sec == nowtime.tm_sec && i < 1000000;
- i++);
- if (i >= 1000000) {
- fprintf(stderr, "Timed out waiting for time change.\n");
- *retcode_p = 2;
- } else if (rc == -1) {
- fprintf(stderr, "ioctl() to /dev/rtc to read time failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- *retcode_p = 3;
- } else *retcode_p = 0;
- }
-}
-
-
-
-static void
-synchronize_to_clock_tick_RTC(int *retcode_p) {
-/*----------------------------------------------------------------------------
- Same as synchronize_to_clock_tick(), but just for /dev/rtc.
------------------------------------------------------------------------------*/
-int rtc_fd; /* File descriptor of /dev/rtc */
-
- rtc_fd = open("/dev/rtc",O_RDONLY);
- if (rtc_fd == -1) {
- fprintf(stderr, "open() of /dev/rtc failed, errno = %s (%d).\n",
- strerror(errno), errno);
- *retcode_p = 1;
- } else {
- int rc; /* Return code from ioctl */
- /* Turn on update interrupts (one per second) */
- rc = ioctl(rtc_fd, RTC_UIE_ON, 0);
- if (rc == -1 && errno == EINVAL) {
- /* This rtc device doesn't have interrupt functions. This is typical
- on an Alpha, where the Hardware Clock interrupts are used by the
- kernel for the system clock, so aren't at the user's disposal.
- */
- if (debug) printf("/dev/rtc does not have interrupt functions. ");
- busywait_for_rtc_clock_tick(rtc_fd, retcode_p);
- } else if (rc != -1) {
- int rc; /* return code from ioctl */
- unsigned long dummy;
-
- /* this blocks until the next update interrupt */
- rc = read(rtc_fd, &dummy, sizeof(dummy));
- if (rc == -1) {
- fprintf(stderr, "read() to /dev/rtc to wait for clock tick failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- *retcode_p = 1;
- } else {
- *retcode_p = 0;
- }
- /* Turn off update interrupts */
- rc = ioctl(rtc_fd, RTC_UIE_OFF, 0);
- if (rc == -1) {
- fprintf(stderr, "ioctl() to /dev/rtc to turn off update interrupts "
- "failed, errno = %s (%d).\n", strerror(errno), errno);
- }
- } else {
- fprintf(stderr, "ioctl() to /dev/rtc to turn on update interrupts "
- "failed unexpectedly, errno = %s (%d).\n",
- strerror(errno), errno);
- *retcode_p = 1;
- }
- close(rtc_fd);
- }
-}
-
-
-
-static void
-synchronize_to_clock_tick_KD(int *retcode_p) {
-/*----------------------------------------------------------------------------
- Wait for the top of a clock tick by calling KDGHWCLK in a busy loop until
- we see it.
------------------------------------------------------------------------------*/
- int con_fd;
-
- if (debug)
- printf("Waiting in loop for time from KDGHWCLK to change\n");
-
- con_fd = open("/dev/tty1", O_RDONLY);
- if (con_fd < 0) {
- fprintf(stderr, "open() failed to open /dev/tty1, errno = %s (%d).\n",
- strerror(errno), errno);
- *retcode_p = 1;
- } else {
- int rc; /* return code from ioctl() */
- int i; /* local loop index */
- /* The time when we were called (and started waiting) */
- struct hwclk_time start_time, nowtime;
-
- rc = ioctl(con_fd, kdghwclk_ioctl, &start_time);
- if (rc == -1) {
- fprintf(stderr, "KDGHWCLK to read time failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- *retcode_p = 3;
- }
-
- for (i = 0;
- (rc = ioctl(con_fd, kdghwclk_ioctl, &nowtime)) != -1
- && start_time.sec == nowtime.sec && i < 1000000;
- i++);
- if (i >= 1000000) {
- fprintf(stderr, "Timed out waiting for time change.\n");
- *retcode_p = 2;
- } else if (rc == -1) {
- fprintf(stderr, "KDGHWCLK to read time failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- *retcode_p = 3;
- } else *retcode_p = 0;
- close(con_fd);
- }
-}
-
-
-
-static void
-synchronize_to_clock_tick(enum clock_access_method clock_access,
- int *retcode_p) {
-/*-----------------------------------------------------------------------------
- Wait until the falling edge of the Hardware Clock's update flag so
- that any time that is read from the clock immediately after we
- return will be exact.
-
- The clock only has 1 second precision, so it gives the exact time only
- once per second, right on the falling edge of the update flag.
-
- We wait (up to one second) either blocked waiting for an rtc device
- or in a CPU spin loop. The former is probably not very accurate.
-
- For the KD clock access method, we have no way to synchronize, so we
- just return immediately. This will mess some things up, but it's the
- best we can do.
-
- Return *retcode_p == 0 if it worked, nonzero if it didn't.
-
------------------------------------------------------------------------------*/
- if (debug) printf("Waiting for clock tick...\n");
-
- switch (clock_access) {
- case ISA: synchronize_to_clock_tick_ISA(retcode_p); break;
- case RTC_IOCTL: synchronize_to_clock_tick_RTC(retcode_p); break;
- case KD: synchronize_to_clock_tick_KD(retcode_p); break;
- default:
- fprintf(stderr, "Internal error in synchronize_to_clock_tick. Invalid "
- "value for clock_access argument.\n");
- *retcode_p = 1;
- }
- if (debug) printf("...got clock tick\n");
- return;
-}
-
-
-
-static void
-mktime_tz(struct tm tm, const bool universal,
- bool *valid_p, time_t *systime_p) {
-/*-----------------------------------------------------------------------------
- Convert a time in broken down format (hours, minutes, etc.) into standard
- unix time (seconds into epoch). Return it as *systime_p.
-
- The broken down time is argument <tm>. This broken down time is either in
- local time zone or UTC, depending on value of logical argument "universal".
- True means it is in UTC.
-
- If the argument contains values that do not constitute a valid time,
- and mktime() recognizes this, return *valid_p == false and
- *systime_p undefined. However, mktime() sometimes goes ahead and
- computes a fictional time "as if" the input values were valid,
- e.g. if they indicate the 31st day of April, mktime() may compute
- the time of May 1. In such a case, we return the same fictional
- value mktime() does as *systime_p and return *valid_p == true.
-
------------------------------------------------------------------------------*/
- time_t mktime_result; /* The value returned by our mktime() call */
- char *zone; /* Local time zone name */
-
- /* We use the C library function mktime(), but since it only works on
- local time zone input, we may have to fake it out by temporarily
- changing the local time zone to UTC.
- */
- zone = (char *) getenv("TZ"); /* remember original time zone */
-
- if (universal) {
- /* Set timezone to UTC */
- setenv("TZ", "", TRUE);
- /* Note: tzset() gets called implicitly by the time code, but only the
- first time. When changing the environment variable, better call
- tzset() explicitly.
- */
- tzset();
- }
- mktime_result = mktime(&tm);
- if (mktime_result == -1) {
- /* This apparently (not specified in mktime() documentation) means
- the 'tm' structure does not contain valid values (however, not
- containing valid values does _not_ imply mktime() returns -1).
- */
- *valid_p = FALSE;
- *systime_p = 0;
- if (debug)
- printf("Invalid values in hardware clock: "
- "%2d/%.2d/%.2d %.2d:%.2d:%.2d\n",
- tm.tm_year, tm.tm_mon+1, tm.tm_mday,
- tm.tm_hour, tm.tm_min, tm.tm_sec
- );
- } else {
- *valid_p = TRUE;
- *systime_p = mktime_result;
- if (debug)
- printf("Hw clock time : %.2d:%.2d:%.2d = %d seconds since 1969\n",
- tm.tm_hour, tm.tm_min, tm.tm_sec, (int) *systime_p);
- }
- /* now put back the original zone. */
- if (zone) setenv("TZ", zone, TRUE);
- else unsetenv("TZ");
- tzset();
-}
-
-
-
-static void
-read_hardware_clock_kd(struct tm *tm) {
-/*----------------------------------------------------------------------------
- Read the hardware clock and return the current time via <tm>
- argument. Use ioctls to /dev/tty1 on what we assume is an m68k
- machine.
-
- Note that we don't use /dev/console here. That might be a serial
- console.
------------------------------------------------------------------------------*/
-#ifdef KDGHWCLK
- int con_fd;
- struct hwclk_time t;
-
- con_fd = open("/dev/tty1", O_RDONLY);
- if (con_fd < 0) {
- fprintf(stderr, "open() failed to open /dev/tty1, errno = %s (%d).\n",
- strerror(errno), errno);
- exit(5);
- } else {
- int rc; /* return code from ioctl() */
-
- rc = ioctl(con_fd, kdghwclk_ioctl, &t);
- if (rc == -1) {
- fprintf(stderr, "ioctl() failed to read time from /dev/tty1, "
- "errno = %s (%d).\n",
- strerror(errno), errno);
- exit(5);
- }
- close(con_fd);
- }
-
- tm->tm_sec = t.sec;
- tm->tm_min = t.min;
- tm->tm_hour = t.hour;
- tm->tm_mday = t.day;
- tm->tm_mon = t.mon;
- tm->tm_year = t.year;
- tm->tm_wday = t.wday;
- tm->tm_isdst = -1; /* Don't know if it's Daylight Savings Time */
-#else
- /* This routine should never be invoked. It is here just to make the
- program compile.
- */
-#endif
-}
-
-
-
-static void
-read_hardware_clock_rtc_ioctl(struct tm *tm) {
-/*----------------------------------------------------------------------------
- Read the hardware clock and return the current time via <tm>
- argument. Use ioctls to "rtc" device /dev/rtc.
------------------------------------------------------------------------------*/
-#if defined(_MC146818RTC_H)
- int rc; /* Local return code */
- int rtc_fd; /* File descriptor of /dev/rtc */
-
- rtc_fd = open("/dev/rtc",O_RDONLY);
- if (rtc_fd == -1) {
- fprintf(stderr, "open() of /dev/rtc failed, errno = %s (%d).\n",
- strerror(errno), errno);
- exit(5);
- } else {
- /* Read the RTC time/date */
- rc = ioctl(rtc_fd, RTC_RD_TIME, tm);
- if (rc == -1) {
- fprintf(stderr, "ioctl() to /dev/rtc to read the time failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- exit(5);
- }
- close(rtc_fd);
- }
- tm->tm_isdst = -1; /* don't know whether it's daylight */
-#else
- /* This function should never be called. It exists just to make the
- program compile.
- */
-#endif
-}
-
-
-
-static void
-read_hardware_clock_isa(struct tm *tm) {
-/*----------------------------------------------------------------------------
- Read the hardware clock and return the current time via <tm> argument.
- Assume we have an ISA machine and read the clock directly with CPU I/O
- instructions.
-
- This function is not totally reliable. It takes a finite and
- unpredictable amount of time to execute the code below. During that
- time, the clock may change and we may even read an invalid value in
- the middle of an update. We do a few checks to minimize this
- possibility, but only the kernel can actually read the clock
- properly, since it can execute code in a short and predictable
- amount of time (by turning of interrupts).
-
- In practice, the chance of this function returning the wrong time is
- extremely remote.
-
------------------------------------------------------------------------------*/
- bool got_time;
- /* We've successfully read a time from the Hardware Clock */
-
- got_time = FALSE;
- while (!got_time) {
- /* Bit 7 of Byte 10 of the Hardware Clock value is the Update In Progress
- (UIP) bit, which is on while and 244 uS before the Hardware Clock
- updates itself. It updates the counters individually, so reading
- them during an update would produce garbage. The update takes 2mS,
- so we could be spinning here that long waiting for this bit to turn
- off.
-
- Furthermore, it is pathologically possible for us to be in this
- code so long that even if the UIP bit is not on at first, the
- clock has changed while we were running. We check for that too,
- and if it happens, we start over.
- */
-
- if ((hclock_read(10) & 0x80) == 0) {
- /* No clock update in progress, go ahead and read */
- tm->tm_sec = hclock_read_bcd(0);
- tm->tm_min = hclock_read_bcd(2);
- tm->tm_hour = hclock_read_bcd(4);
- tm->tm_wday = hclock_read_bcd(6) - 3;
- tm->tm_mday = hclock_read_bcd(7);
- tm->tm_mon = hclock_read_bcd(8) - 1;
- tm->tm_year = hclock_read_bcd(9);
- /* We don't use the century byte (Byte 50) of the Hardware Clock.
- Here's why: On older machines, it isn't defined. In at least
- one reported case, a machine puts some arbitrary value in that
- byte. Furthermore, the Linux standard time data structure doesn't
- allow for times beyond about 2037 and no Linux systems were
- running before 1937. Therefore, all the century byte could tell
- us is that the clock is wrong or this whole program is obsolete!
-
- So we just say if the year of century is less than 37, it's the
- 21st century, otherwise it's the 20th.
- */
-
- if (hclock_read_bcd(9) >= 37) tm->tm_year = hclock_read_bcd(9);
- else tm->tm_year = hclock_read_bcd(9) + 100;
- }
- /* Unless the clock changed while we were reading, consider this
- a good clock read .
- */
- if (tm->tm_sec == hclock_read_bcd (0)) got_time = TRUE;
- /* Yes, in theory we could have been running for 60 seconds and
- the above test wouldn't work!
- */
- }
- tm->tm_isdst = -1; /* don't know whether it's daylight */
-}
-
-
-
-static void
-read_hardware_clock(const enum clock_access_method method,
- const bool universal, bool *valid_p, time_t *systime_p){
-/*----------------------------------------------------------------------------
- Read the hardware clock and return the current time via <tm> argument.
-
- Use the method indicated by <method> argument to access the hardware clock.
------------------------------------------------------------------------------*/
- struct tm tm;
-
-
- switch (method) {
- case ISA:
- read_hardware_clock_isa(&tm);
- break;
- case RTC_IOCTL:
- read_hardware_clock_rtc_ioctl(&tm);
- break;
- case KD:
- read_hardware_clock_kd(&tm);
- break;
- default:
- fprintf(stderr,
- "Internal error: invalid value for clock access method.\n");
- exit(5);
- }
- if (debug)
- printf ("Time read from Hardware Clock: %02d:%02d:%02d\n",
- tm.tm_hour, tm.tm_min, tm.tm_sec);
- mktime_tz(tm, universal, valid_p, systime_p);
-}
-
-
-
-static void
-set_hardware_clock_kd(const struct tm new_broken_time,
- const bool testing) {
-/*----------------------------------------------------------------------------
- Set the Hardware Clock to the time <new_broken_time>. Use ioctls to
- /dev/tty1 on what we assume is an m68k machine.
-
- Note that we don't use /dev/console here. That might be a serial console.
-----------------------------------------------------------------------------*/
-#ifdef KDGHWCLK
- int con_fd; /* File descriptor of /dev/tty1 */
- struct hwclk_time t;
-
- con_fd = open("/dev/tty1", O_RDONLY);
- if (con_fd < 0) {
- fprintf(stderr, "Error opening /dev/tty1. Errno: %s (%d)\n",
- strerror(errno), errno);
- exit(1);
- } else {
- int rc; /* locally used return code */
-
- t.sec = new_broken_time.tm_sec;
- t.min = new_broken_time.tm_min;
- t.hour = new_broken_time.tm_hour;
- t.day = new_broken_time.tm_mday;
- t.mon = new_broken_time.tm_mon;
- t.year = new_broken_time.tm_year;
- t.wday = new_broken_time.tm_wday;
-
- if (testing)
- printf("Not setting Hardware Clock because running in test mode.\n");
- else {
- rc = ioctl(con_fd, kdshwclk_ioctl, &t );
- if (rc < 0) {
- fprintf(stderr, "ioctl() to open /dev/tty1 failed. "
- "Errno: %s (%d)\n",
- strerror(errno), errno);
- exit(1);
- }
- }
- close(con_fd);
- }
-#else
- /* This function should never be invoked. It is here just to make the
- program compile.
- */
-#endif
-}
-
-
-
-static void
-set_hardware_clock_rtc_ioctl(const struct tm new_broken_time,
- const bool testing) {
-/*----------------------------------------------------------------------------
- Set the Hardware Clock to the broken down time <new_broken_time>.
- Use ioctls to "rtc" device /dev/rtc.
-----------------------------------------------------------------------------*/
- int rc;
- int rtc_fd;
-
- rtc_fd = open("/dev/rtc", O_RDONLY);
- if (rtc_fd < 0) {
- fprintf(stderr, "Unable to open /dev/rtc, open() errno = %s (%d)\n",
- strerror(errno), errno);
- exit(5);
- } else {
- if (testing)
- printf("Not setting Hardware Clock because running in test mode.\n");
- else {
- rc = ioctl(rtc_fd, RTC_SET_TIME, &new_broken_time);
- if (rc == -1) {
- fprintf(stderr,
- "ioctl() (RTC_SET_TIME) to /dev/rtc to set time failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- exit(5);
- } else {
- if (debug)
- printf("ioctl(RTC_SET_TIME) was successful.\n");
- }
- }
- close(rtc_fd);
- }
-}
-
-
-
-static void
-set_hardware_clock_isa(const struct tm new_broken_time,
- const bool testing) {
-/*----------------------------------------------------------------------------
- Set the Hardware Clock to the time (in broken down format)
- new_broken_time. Use direct I/O instructions to what we assume is
- an ISA Hardware Clock.
-----------------------------------------------------------------------------*/
- unsigned char save_control, save_freq_select;
-
- if (testing)
- printf("Not setting Hardware Clock because running in test mode.\n");
- else {
-#ifdef __i386__
- const bool interrupts_were_enabled = interrupts_enabled;
-
- __asm__ volatile ("cli");
- interrupts_enabled = FALSE;
-#endif
- save_control = hclock_read(11); /* tell the clock it's being set */
- hclock_write(11, (save_control | 0x80));
- save_freq_select = hclock_read(10); /* stop and reset prescaler */
- hclock_write (10, (save_freq_select | 0x70));
-
- hclock_write_bcd(0, new_broken_time.tm_sec);
- hclock_write_bcd(2, new_broken_time.tm_min);
- hclock_write_bcd(4, new_broken_time.tm_hour);
- hclock_write_bcd(6, new_broken_time.tm_wday + 3);
- hclock_write_bcd(7, new_broken_time.tm_mday);
- hclock_write_bcd(8, new_broken_time.tm_mon + 1);
- hclock_write_bcd(9, new_broken_time.tm_year%100);
- hclock_write_bcd(50, (1900+new_broken_time.tm_year)/100);
-
- /* The kernel sources, linux/arch/i386/kernel/time.c, have the
- following comment:
-
- The following flags have to be released exactly in this order,
- otherwise the DS12887 (popular MC146818A clone with integrated
- battery and quartz) will not reset the oscillator and will not
- update precisely 500 ms later. You won't find this mentioned
- in the Dallas Semiconductor data sheets, but who believes data
- sheets anyway ... -- Markus Kuhn
-
- Hence, they will also be done in this order here.
- faith@cs.unc.edu, Thu Nov 9 08:26:37 1995
- */
-
- hclock_write (11, save_control);
- hclock_write (10, save_freq_select);
-#ifdef __i386__
- if (interrupts_were_enabled) {
- __asm__ volatile ("sti");
- interrupts_enabled = TRUE;
- }
-#endif
- }
-}
-
-
-static void
-set_hardware_clock(const enum clock_access_method method,
- const time_t newtime,
- const bool universal,
- const bool testing) {
-/*----------------------------------------------------------------------------
- Set the Hardware Clock to the time <newtime>, in local time zone or UTC,
- according to <universal>.
-
- Use the method indicated by the <method> argument.
-----------------------------------------------------------------------------*/
-
- struct tm new_broken_time;
- /* Time to which we will set Hardware Clock, in broken down format, in
- the time zone of caller's choice
- */
-
- if (universal) new_broken_time = *gmtime(&newtime);
- else new_broken_time = *localtime(&newtime);
-
- if (debug)
- printf("Setting Hardware Clock to %.2d:%.2d:%.2d "
- "= %d seconds since 1969\n",
- new_broken_time.tm_hour, new_broken_time.tm_min,
- new_broken_time.tm_sec, (int) newtime);
-
- switch (method) {
- case ISA:
- set_hardware_clock_isa(new_broken_time, testing);
- break;
- case RTC_IOCTL:
- set_hardware_clock_rtc_ioctl(new_broken_time, testing);
- break;
- case KD:
- set_hardware_clock_kd(new_broken_time, testing);
- break;
- default:
- fprintf(stderr,
- "Internal error: invalid value for clock access method.\n");
- exit(5);
- }
-}
-
-
-
-static void
-set_hardware_clock_exact(const time_t settime,
- const struct timeval ref_time,
- const enum clock_access_method clock_access,
- const bool universal,
- const bool testing) {
-/*----------------------------------------------------------------------------
- Set the Hardware Clock to the time "settime", in local time zone or UTC,
- according to "universal".
-
- But correct "settime" and wait for a fraction of a second so that
- "settime" is the value of the Hardware Clock as of system time
- "ref_time", which is in the past. For example, if "settime" is
- 14:03:05 and "ref_time" is 12:10:04.5 and the current system
- time is 12:10:06.0: Wait .5 seconds (to make exactly 2 seconds since
- "ref_time") and then set the Hardware Clock to 14:03:07, thus
- getting a precise and retroactive setting of the clock.
-
- (Don't be confused by the fact that the system clock and the Hardware
- Clock differ by two hours in the above example. That's just to remind
- you that there are two independent time scales here).
-
- This function ought to be able to accept set times as fractional times.
- Idea for future enhancement.
-
------------------------------------------------------------------------------*/
- time_t newtime; /* Time to which we will set Hardware Clock */
- struct timeval now_time; /* locally used time */
-
- gettimeofday(&now_time, NULL);
- newtime = settime + (int) time_diff(now_time, ref_time) + 1;
- if (debug)
- printf("Time elapsed since reference time has been %.6f seconds.\n"
- "Delaying further to reach the next full second.\n",
- time_diff(now_time, ref_time));
-
- /* Now delay some more until Hardware Clock time newtime arrives */
- do gettimeofday(&now_time, NULL);
- while (time_diff(now_time, ref_time) < newtime - settime);
-
- set_hardware_clock(clock_access, newtime, universal, testing);
-}
-
-
-
-static void
-get_epoch(unsigned long *epoch_p, int *retcode_p) {
-/*----------------------------------------------------------------------------
- Get the Hardware Clock epoch setting from the kernel.
-----------------------------------------------------------------------------*/
- int rtc_fd;
-
- rtc_fd = open("/dev/rtc", O_RDONLY);
- if (rtc_fd < 0) {
- if (errno == ENOENT)
- fprintf(stderr, "To manipulate the epoch value in the kernel, we must "
- "access the Linux 'rtc' device driver via the device special "
- "file /dev/rtc. This file does not exist on this system.\n");
- else
- fprintf(stderr, "Unable to open /dev/rtc, open() errno = %s (%d)\n",
- strerror(errno), errno);
- *retcode_p = 1;
- } else {
- int rc; /* return code from ioctl */
- rc = ioctl(rtc_fd, RTC_EPOCH_READ, epoch_p);
- if (rc == -1) {
- fprintf(stderr, "ioctl(RTC_EPOCH_READ) to /dev/rtc failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- *retcode_p = 1;
- } else {
- *retcode_p = 0;
- if (debug) printf("we have read epoch %ld from /dev/rtc "
- "with RTC_EPOCH_READ ioctl.\n", *epoch_p);
- }
- close(rtc_fd);
- }
- return;
-}
-
-
-
-static void
-set_epoch(unsigned long epoch, const bool testing, int *retcode_p) {
-/*----------------------------------------------------------------------------
- Set the Hardware Clock epoch in the kernel.
-----------------------------------------------------------------------------*/
- if (epoch < 1900)
- /* kernel would not accept this epoch value */
- fprintf(stderr, "The epoch value may not be less than 1900. "
- "You requested %ld\n", epoch);
- else {
- int rtc_fd;
-
- rtc_fd = open("/dev/rtc", O_RDONLY);
- if (rtc_fd < 0) {
- if (errno == ENOENT)
- fprintf(stderr, "To manipulate the epoch value in the kernel, we must "
- "access the Linux 'rtc' device driver via the device special "
- "file /dev/rtc. This file does not exist on this system.\n");
- fprintf(stderr, "Unable to open /dev/rtc, open() errno = %s (%d)\n",
- strerror(errno), errno);
- *retcode_p = 1;
- } else {
- if (debug) printf("setting epoch to %ld "
- "with RTC_EPOCH_SET ioctl to /dev/rtc.\n", epoch);
- if (testing) {
- printf("Not setting epoch because running in test mode.\n");
- *retcode_p = 0;
- } else {
- int rc; /* return code from ioctl */
- rc = ioctl(rtc_fd, RTC_EPOCH_SET, epoch);
- if (rc == -1) {
- if (errno == EINVAL)
- fprintf(stderr, "The kernel (specifically, the device driver "
- "for /dev/rtc) does not have the RTC_EPOCH_SET ioctl. "
- "Get a newer driver.\n");
- else
- fprintf(stderr, "ioctl(RTC_EPOCH_SET) to /dev/rtc failed, "
- "errno = %s (%d).\n", strerror(errno), errno);
- *retcode_p = 1;
- } else *retcode_p = 0;
- }
- close(rtc_fd);
- }
- }
-}
-
-
-
-static void
-display_time(const bool hclock_valid, const time_t systime,
- const float sync_duration) {
-/*----------------------------------------------------------------------------
- Put the time "systime" on standard output in display format.
- Except if hclock_valid == false, just tell standard output that we don't
- know what time it is.
-
- Include in the output the adjustment "sync_duration".
------------------------------------------------------------------------------*/
- if (!hclock_valid)
- fprintf(stderr, "The Hardware Clock registers contain values that are "
- "either invalid (e.g. 50th day of month) or beyond the range "
- "we can handle (e.g. Year 2095).\n");
- else {
- char *ctime_now; /* Address of static storage containing time string */
-
- /* For some strange reason, ctime() is designed to include a newline
- character at the end. We have to remove that.
- */
- ctime_now = ctime(&systime); /* Compute display value for time */
- *(ctime_now+strlen(ctime_now)-1) = '\0'; /* Cut off trailing newline */
-
- printf("%s %.6f seconds\n", ctime_now, -(sync_duration));
- }
-}
-
-
-
-static int
-interpret_date_string(const char *date_opt, time_t * const time_p) {
-/*----------------------------------------------------------------------------
- Interpret the value of the --date option, which is something like
- "13:05:01". In fact, it can be any of the myriad ASCII strings that specify
- a time which the "date" program can understand. The date option value in
- question is our "dateopt" argument.
-
- The specified time is in the local time zone.
-
- Our output, "*time_p", is a seconds-into-epoch time.
-
- We use the "date" program to interpret the date string. "date" must be
- runnable by issuing the command "date" to the /bin/sh shell. That means
- in must be in the current PATH.
-
- If anything goes wrong (and many things can), we return return code
- 10 and arbitrary *time_p. Otherwise, return code is 0 and *time_p
- is valid.
-----------------------------------------------------------------------------*/
- FILE *date_child_fp;
- char date_resp[100];
- const char magic[]="seconds-into-epoch=";
- char date_command[100];
- int retcode; /* our eventual return code */
- int rc; /* local return code */
-
- if (date_opt == NULL) {
- fprintf(stderr, "No --date option specified.\n");
- retcode = 14;
- } else if (strchr(date_opt, '"') != NULL) {
- /* Quotation marks in date_opt would ruin the date command we construct.
- */
- fprintf(stderr, "The value of the --date option is not a valid date.\n"
- "In particular, it contains quotation marks.\n");
- retcode = 12;
- } else {
- sprintf(date_command, "date --date=\"%s\" +seconds-into-epoch=%%s",
- date_opt);
- if (debug) printf("Issuing date command: %s\n", date_command);
-
- date_child_fp = popen(date_command, "r");
- if (date_child_fp == NULL) {
- fprintf(stderr, "Unable to run 'date' program in /bin/sh shell. "
- "popen() failed with errno=%d:%s\n", errno, strerror(errno));
- retcode = 10;
- } else {
- date_resp[0] = '\0'; /* in case fgets fails */
- fgets(date_resp, sizeof(date_resp), date_child_fp);
- if (debug) printf("response from date command = %s\n", date_resp);
- if (strncmp(date_resp, magic, sizeof(magic)-1) != 0) {
- fprintf(stderr, "The date command issued by " MYNAME " returned "
- "unexpected results.\n"
- "The command was:\n %s\nThe response was:\n %s\n",
- date_command, date_resp);
- retcode = 8;
- } else {
- int seconds_since_epoch;
- rc = sscanf(date_resp + sizeof(magic)-1, "%d", &seconds_since_epoch);
- if (rc < 1) {
- fprintf(stderr, "The date command issued by " MYNAME " returned"
- "something other than an integer where the converted"
- "time value was expected.\n"
- "The command was:\n %s\nThe response was:\n %s\n",
- date_command, date_resp);
- retcode = 6;
- } else {
- retcode = 0;
- *time_p = seconds_since_epoch;
- if (debug)
- printf("date string %s equates to %d seconds since 1969.\n",
- date_opt, (int) *time_p);
- }
- }
- fclose(date_child_fp);
- }
- }
- return(retcode);
-}
-
-
-
-static int
-set_system_clock(const bool hclock_valid, const time_t newtime,
- const bool testing) {
-/*----------------------------------------------------------------------------
- Set the System Clock to time 'newtime'.
-
- Also set the kernel time zone value to the value indicated by the
- TZ environment variable and/or /usr/lib/zoneinfo/, interpreted as
- tzset() would interpret them. Except: do not consider Daylight
- Savings Time to be a separate component of the time zone. Include
- any effect of DST in the basic timezone value and set the kernel
- DST value to 0.
-
- EXCEPT: if hclock_valid is false, just issue an error message
- saying there is no valid time in the Hardware Clock to which to set
- the system time.
-
- If 'testing' is true, don't actually update anything -- just say we
- would have.
------------------------------------------------------------------------------*/
- int retcode; /* our eventual return code */
-
- if (!hclock_valid) {
- fprintf(stderr,"The Hardware Clock does not contain a valid time, so "
- "we cannot set the System Time from it.\n");
- retcode = 1;
- } else {
- struct timeval tv;
- int rc; /* local return code */
-
- tv.tv_sec = newtime;
- tv.tv_usec = 0;
-
- tzset(); /* init timezone, daylight from TZ or ...zoneinfo/localtime */
- /* An undocumented function of tzset() is to set global variabales
- 'timezone' and 'daylight'
- */
-
- if (debug) {
- printf( "Calling settimeofday:\n" );
- printf( "\ttv.tv_sec = %ld, tv.tv_usec = %ld\n",
- (long) tv.tv_sec, (long) tv.tv_usec );
- }
- if (testing) {
- printf("Not setting system clock because running in test mode.\n");
- retcode = 0;
- } else {
- /* For documentation of settimeofday(), in addition to its man page,
- see kernel/time.c in the Linux source code.
- */
- const struct timezone tz = { timezone/60 - 60*daylight, 0 };
- /* put daylight in minuteswest rather than dsttime,
- since the latter is mostly ignored ... */
- rc = settimeofday(&tv, &tz);
- if (rc != 0) {
- if (errno == EPERM)
- fprintf(stderr, "Must be superuser to set system clock.\n");
- else
- fprintf(stderr,
- "settimeofday() failed, errno=%d:%s\n",
- errno, strerror(errno));
- retcode = 1;
- } else retcode = 0;
- }
- }
- return(retcode);
-}
-
-
-static void
-adjust_drift_factor(struct adjtime *adjtime_p,
- const time_t nowtime,
- const bool hclock_valid, const time_t hclocktime ) {
-/*---------------------------------------------------------------------------
- Update the drift factor in <*adjtime_p> to reflect the fact that the
- Hardware Clock was calibrated to <nowtime> and before that was set
- to <hclocktime>.
-
- We assume that the user has been doing regular drift adjustments
- using the drift factor in the adjtime file, so if <nowtime> and
- <clocktime> are different, that means the adjustment factor isn't
- quite right.
-
- We record in the adjtime file the time at which we last calibrated
- the clock so we can compute the drift rate each time we calibrate.
-
- EXCEPT: if <hclock_valid> is false, assume Hardware Clock was not set
- before to anything meaningful and regular adjustments have not been
- done, so don't adjust the drift factor.
-
-----------------------------------------------------------------------------*/
- if (!hclock_valid) {
- if (debug)
- printf("Not adjusting drift factor because the Hardware Clock "
- "previously contained garbage.\n");
- } else if ((hclocktime - adjtime_p->last_calib_time) < 23 * 60 * 60) {
- if (debug)
- printf("Not adjusting drift factor because it has been less than a "
- "day since the last calibration.\n");
- } else {
- const float factor_adjust =
- ((float) (nowtime - hclocktime)
- / (hclocktime - adjtime_p->last_calib_time))
- * 24 * 60 * 60;
-
- if (debug)
- printf("Clock drifted %d seconds in the past %d seconds "
- "in spite of a drift factor of %f seconds/day.\n"
- "Adjusting drift factor by %f seconds/day\n",
- (int) (nowtime - hclocktime),
- (int) (hclocktime - adjtime_p->last_calib_time),
- adjtime_p->drift_factor,
- factor_adjust );
-
- adjtime_p->drift_factor += factor_adjust;
- }
- adjtime_p->last_calib_time = nowtime;
-
- adjtime_p->last_adj_time = nowtime;
-
- adjtime_p->not_adjusted = 0;
-
- adjtime_p->dirty = TRUE;
-}
-
-
-
-static void
-calculate_adjustment(
- const float factor,
- const time_t last_time,
- const float not_adjusted,
- const time_t systime,
- int *adjustment_p,
- float *retro_p,
- const int debug ) {
-/*----------------------------------------------------------------------------
- Do the drift adjustment calculation.
-
- The way we have to set the clock, we need the adjustment in two parts:
-
- 1) an integer number of seconds (return as *adjustment_p)
-
- 2) a positive fraction of a second (less than 1) (return as *retro_p)
-
- The sum of these two values is the adjustment needed. Positive means to
- advance the clock or insert seconds. Negative means to retard the clock
- or remove seconds.
-----------------------------------------------------------------------------*/
- float exact_adjustment;
-
- exact_adjustment = ((float) (systime - last_time)) * factor / (24 * 60 * 60)
- + not_adjusted;
- *adjustment_p = FLOOR(exact_adjustment);
-
- *retro_p = exact_adjustment - (float) *adjustment_p;
- if (debug) {
- printf ("Time since last adjustment is %d seconds\n",
- (int) (systime - last_time));
- printf ("Need to insert %d seconds and refer time back "
- "%.6f seconds ago\n",
- *adjustment_p, *retro_p);
- }
-}
-
-
-
-static void
-save_adjtime(const struct adjtime adjtime, const bool testing) {
-/*-----------------------------------------------------------------------------
- Write the contents of the <adjtime> structure to its disk file.
-
- But if the contents are clean (unchanged since read from disk), don't
- bother.
------------------------------------------------------------------------------*/
- FILE *adjfile;
- char newfile[405]; /* Stuff to write to disk file */
-
- int rc; /* locally used: return code from a function */
-
- if (adjtime.dirty) {
- /* snprintf is not always available, but this is safe
- as long as libc does not use more than 100 positions for %ld or %f */
- sprintf(newfile, "%f %ld %f\n%ld\n",
- adjtime.drift_factor,
- (long) adjtime.last_adj_time,
- adjtime.not_adjusted,
- (long) adjtime.last_calib_time );
-
- if (testing) {
- printf("Not updating adjtime file because of testing mode.\n");
- printf("Would have written the following to %s:\n%s",
- ADJPATH, newfile);
- } else {
- adjfile = fopen(ADJPATH, "w");
- if (adjfile == NULL) {
- const int fopen_errno = errno;
- printf("Could not open file with the clock adjustment parameters "
- "in it (%s) for output.\n"
- "fopen() returned errno %d: %s.\n"
- "Drift adjustment parameters not updated.\n",
- ADJPATH, fopen_errno, strerror(errno));
- } else {
- rc = fprintf(adjfile, newfile);
- if (rc < 0) {
- const int fprintf_errno = errno;
- printf("Could not update file with the clock adjustment parameters "
- "(%s) in it.\n"
- "fprintf() returned errno %d: %s.\n"
- "Drift adjustment parameters not updated.\n",
- ADJPATH, fprintf_errno, strerror(errno));
- }
- rc = fclose(adjfile);
- if (rc < 0) {
- const int fclose_errno = errno;
- printf("Could not update file with the clock adjustment parameters "
- "(%s) in it.\n"
- "fclose() returned errno %d: %s.\n"
- "Drift adjustment parameters not updated.\n",
- ADJPATH, fclose_errno, strerror(errno));
- }
- }
- }
- }
-}
-
-
-
-static void
-do_adjustment(struct adjtime *adjtime_p,
- const bool hclock_valid, const time_t hclocktime,
- const struct timeval read_time,
- const enum clock_access_method clock_access,
- const bool universal, const bool testing) {
-/*---------------------------------------------------------------------------
- Do the adjustment requested, by 1) setting the Hardware Clock (if
- necessary), and 2) updating the last-adjusted time in the adjtime
- structure.
-
- Do not update anything if the Hardware Clock does not currently present
- a valid time.
-
- arguments <factor> and <last_time> are current values from the adjtime
- file.
-
- <hclock_valid> means the Hardware Clock contains a valid time, and that
- time is <hclocktime>.
-
- <read_time> is the current system time (to be precise, it is the system
- time at the time <hclocktime> was read, which due to computational delay
- could be a short time ago).
-
- <universal>: the Hardware Clock is kept in UTC.
-
- <testing>: We are running in test mode (no updating of clock).
-
- We do not bother to update the clock if the adjustment would be less than
- one second. This is to avoid cumulative error and needless CPU hogging
- (remember we use an infinite loop for some timing) if the user runs us
- frequently.
-
-----------------------------------------------------------------------------*/
- if (!hclock_valid) {
- fprintf(stderr, "The Hardware Clock does not contain a valid time, "
- "so we cannot adjust it.\n");
- } else {
- int adjustment;
- /* Number of seconds we must insert in the Hardware Clock */
- float retro;
- /* Fraction of second we have to remove from clock after inserting
- <adjustment> whole seconds.
- */
- calculate_adjustment(adjtime_p->drift_factor,
- adjtime_p->last_adj_time,
- adjtime_p->not_adjusted,
- hclocktime,
- &adjustment, &retro,
- debug );
- if (adjustment > 0 || adjustment < -1) {
- set_hardware_clock_exact(hclocktime + adjustment,
- time_inc(read_time, -retro),
- clock_access, universal, testing);
- adjtime_p->last_adj_time = hclocktime + adjustment;
- adjtime_p->not_adjusted = 0;
- adjtime_p->dirty = TRUE;
- } else
- if (debug)
- printf("Needed adjustment is less than one second, "
- "so not setting clock.\n");
- }
-}
-
-
-
-static void
-determine_clock_access_method(const bool user_requests_ISA,
- enum clock_access_method *clock_access_p) {
-/*----------------------------------------------------------------------------
- Figure out how we're going to access the hardware clock, by seeing
- what facilities are available, looking at invocation options, and
- using compile-time constants.
-
- <user_requests_ISA> means the user explicitly asked for the ISA method.
- Even if he did, we will not select the ISA method if this is not an
- ISA machine.
------------------------------------------------------------------------------*/
- bool rtc_works;
- /* The /dev/rtc method is available and seems to work on this machine */
-
- if (got_rtc) {
- int rtc_fd = open("/dev/rtc", O_RDONLY);
- if (rtc_fd > 0) {
- rtc_works = TRUE;
- close(rtc_fd);
- } else {
- rtc_works = FALSE;
- if (debug)
- printf("Open of /dev/rtc failed, errno = %s (%d). "
- "falling back to more primitive clock access method.\n",
- strerror(errno), errno);
- }
- } else {
- if (debug)
- printf("The Linux kernel for which this copy of hwclock() was built "
- "is too old to have /dev/rtc\n");
- rtc_works = FALSE;
- }
-
- if (user_requests_ISA && isa_machine) *clock_access_p = ISA;
- else if (rtc_works) *clock_access_p = RTC_IOCTL;
- else if (got_kdghwclk) {
- int con_fd;
- struct hwclk_time t;
-
- con_fd = open("/dev/tty1", O_RDONLY);
- if (con_fd >= 0) {
- if (ioctl( con_fd, kdghwclk_ioctl, &t ) >= 0)
- *clock_access_p = KD;
- else {
- if (errno == EINVAL) {
- /* KDGHWCLK not implemented in this kernel... */
- *clock_access_p = ISA;
- } else {
- *clock_access_p = KD;
- fprintf(stderr,
- "KDGHWCLK ioctl failed, errno = %s (%d).\n",
- strerror(errno), errno);
- }
- }
- } else {
- *clock_access_p = KD;
- fprintf(stderr,
- "Can't open /dev/tty1. open() errno = %s (%d).\n",
- strerror(errno), errno);
- }
- close(con_fd);
- } else if (isa_machine) {
- *clock_access_p = ISA;
- } else
- *clock_access_p = NOCLOCK;
- if (debug) {
- switch (*clock_access_p) {
- case ISA: printf("Using direct I/O instructions to ISA clock.\n"); break;
- case KD: printf("Using KDGHWCLK interface to m68k clock.\n"); break;
- case RTC_IOCTL: printf("Using /dev/rtc interface to clock.\n"); break;
- default:
- printf("determine_clock_access_method() returned invalid value: %d.\n",
- *clock_access_p);
- }
- }
-}
-
-
-
-static void
-manipulate_clock(const bool show, const bool adjust,
- const bool set, const time_t set_time,
- const bool hctosys, const bool systohc,
- const struct timeval startup_time,
- const enum clock_access_method clock_access,
- const bool universal, const bool testing,
- int *retcode_p
- ) {
-/*---------------------------------------------------------------------------
- Do all the normal work of hwclock - read, set clock, etc.
-
- Issue output to stdout and error message to stderr where appropriate.
-
- Return rc == 0 if everything went OK, rc != 0 if not.
-----------------------------------------------------------------------------*/
- struct adjtime adjtime;
- /* Contents of the adjtime file, or what they should be. */
- int rc; /* local return code */
- bool no_auth; /* User lacks necessary authorization to access the clock */
-
- if (clock_access == ISA) {
- rc = i386_iopl(3);
- if (rc != 0) {
- fprintf(stderr, MYNAME " is unable to get I/O port access. "
- "I.e. iopl(3) returned nonzero return code %d.\n"
- "This is often because the program isn't running "
- "with superuser privilege, which it needs.\n",
- rc);
- no_auth = TRUE;
- } else no_auth = FALSE;
- } else no_auth = FALSE;
-
- if (no_auth) *retcode_p = 1;
- else {
- if (adjust || set || systohc)
- read_adjtime(&adjtime, &rc);
- else {
- /* A little trick to avoid reading the file if we don't have to */
- adjtime.dirty = FALSE;
- rc = 0;
- }
- if (rc != 0) *retcode_p = 2;
- else {
- synchronize_to_clock_tick(clock_access, retcode_p);
- /* this takes up to 1 second */
- if (*retcode_p == 0) {
- struct timeval read_time;
- /* The time at which we read the Hardware Clock */
-
- bool hclock_valid;
- /* The Hardware Clock gives us a valid time, or at least something
- close enough to fool mktime().
- */
-
- time_t hclocktime;
- /* The time the hardware clock had just after we
- synchronized to its next clock tick when we started up.
- Defined only if hclock_valid is true.
- */
-
- gettimeofday(&read_time, NULL);
- read_hardware_clock(clock_access, universal, &hclock_valid,
- &hclocktime);
-
- if (show) {
- display_time(hclock_valid, hclocktime,
- time_diff(read_time, startup_time));
- *retcode_p = 0;
- } else if (set) {
- set_hardware_clock_exact(set_time, startup_time,
- clock_access, universal, testing);
- adjust_drift_factor(&adjtime, set_time, hclock_valid, hclocktime);
- *retcode_p = 0;
- } else if (adjust) {
- do_adjustment(&adjtime, hclock_valid, hclocktime,
- read_time, clock_access,
- universal, testing);
- *retcode_p = 0;
- } else if (systohc) {
- struct timeval nowtime, reftime;
- /* We can only set_hardware_clock_exact to a whole seconds
- time, so we set it with reference to the most recent
- whole seconds time.
- */
- gettimeofday(&nowtime, NULL);
- reftime.tv_sec = nowtime.tv_sec;
- reftime.tv_usec = 0;
-
- set_hardware_clock_exact((time_t) reftime.tv_sec, reftime,
- clock_access, universal, testing);
- *retcode_p = 0;
- adjust_drift_factor(&adjtime, (time_t) reftime.tv_sec, hclock_valid,
- hclocktime);
- } else if (hctosys) {
- rc = set_system_clock(hclock_valid, hclocktime, testing);
- if (rc != 0) {
- printf("Unable to set system clock.\n");
- *retcode_p = 1;
- } else *retcode_p = 0;
- }
- save_adjtime(adjtime, testing);
- }
- }
- }
-}
-
-
-
-static void
-manipulate_epoch(const bool getepoch, const bool setepoch,
- const int epoch_opt, const bool testing) {
-/*----------------------------------------------------------------------------
- Get or set the Hardware Clock epoch value in the kernel, as appropriate.
- <getepoch>, <setepoch>, and <epoch> are hwclock invocation options.
-
- <epoch> == -1 if the user did not specify an "epoch" option.
-
------------------------------------------------------------------------------*/
- /*
- Maintenance note: This should work on non-Alpha machines, but the
- evidence today (98.03.04) indicates that the kernel only keeps the
- epoch value on Alphas. If that is ever fixed, this function should be
- changed.
- */
-
- if (!alpha_machine)
- fprintf(stderr, "The kernel keeps an epoch value for the Hardware Clock "
- "only on an Alpha machine.\nThis copy of hwclock was built for "
- "a machine other than Alpha\n(and thus is presumably not running "
- "on an Alpha now). No action taken.\n");
- else {
- if (getepoch) {
- unsigned long epoch;
- int retcode;
-
- get_epoch(&epoch, &retcode);
- if (retcode != 0)
- printf("Unable to get the epoch value from the kernel.\n");
- else
- printf("Kernel is assuming an epoch value of %lu\n", epoch);
- } else if (setepoch) {
- if (epoch_opt == -1)
- fprintf(stderr, "To set the epoch value, you must use the 'epoch' "
- "option to tell to what value to set it.\n");
- else {
- int rc;
- set_epoch(epoch_opt, testing, &rc);
- if (rc != 0)
- printf("Unable to set the epoch value in the kernel.\n");
- }
- }
- }
-}
-
-
-
-int
-main(int argc, char **argv, char **envp) {
-/*----------------------------------------------------------------------------
- MAIN
------------------------------------------------------------------------------*/
- struct timeval startup_time;
- /* The time we started up, in seconds into the epoch, including fractions.
- */
- time_t set_time; /* Time to which user said to set Hardware Clock */
-
- enum clock_access_method clock_access;
- /* The method that we determine is best for accessing Hardware Clock
- on this system.
- */
-
- bool permitted; /* User is permitted to do the function */
- int retcode; /* Our eventual return code */
-
- int rc; /* local return code */
-
- /* option_def is the control table for the option parser. These other
- variables are the results of parsing the options and their meanings
- are given by the option_def. The only exception is <show>, which
- may be modified after parsing is complete to effect an implied option.
- */
- bool show, set, systohc, hctosys, adjust, getepoch, setepoch, version;
- bool universal, testing, directisa;
- char *date_opt;
- int epoch_opt;
-
- const optStruct option_def[] = {
- { 'r', (char *) "show", OPT_FLAG, &show, 0 },
- { 0, (char *) "set", OPT_FLAG, &set, 0 },
- { 'w', (char *) "systohc", OPT_FLAG, &systohc, 0 },
- { 's', (char *) "hctosys", OPT_FLAG, &hctosys, 0 },
- { 0, (char *) "getepoch", OPT_FLAG, &getepoch, 0 },
- { 0, (char *) "setepoch", OPT_FLAG, &setepoch, 0 },
- { 'a', (char *) "adjust", OPT_FLAG, &adjust, 0 },
- { 'v', (char *) "version", OPT_FLAG, &version, 0 },
- { 0, (char *) "date", OPT_STRING, &date_opt, 0 },
- { 0, (char *) "epoch", OPT_UINT, &epoch_opt, 0 },
- { 'u', (char *) "utc", OPT_FLAG, &universal, 0 },
- { 0, (char *) "directisa", OPT_FLAG, &directisa, 0 },
- { 0, (char *) "test", OPT_FLAG, &testing, 0 },
- { 'D', (char *) "debug", OPT_FLAG, &debug, 0 },
- { 0, (char *) NULL, OPT_END, NULL, 0 }
- };
- int argc_parse; /* argc, except we modify it as we parse */
- char **argv_parse; /* argv, except we modify it as we parse */
-
- interrupts_enabled = TRUE; /* Since we haven't messed with them yet */
-
- gettimeofday(&startup_time, NULL); /* Remember what time we were invoked */
-
- /* set option defaults */
- show = set = systohc = hctosys = adjust = getepoch = setepoch =
- version = universal =
- directisa = testing = debug = FALSE;
- date_opt = NULL;
- epoch_opt = -1;
-
- argc_parse = argc; argv_parse = argv;
- optParseOptions(&argc_parse, argv_parse, option_def, 0);
- /* Uses and sets argc_parse, argv_parse.
- Sets show, systohc, hctosys, adjust, universal, version, testing,
- debug, set, date_opt, getepoch, setepoch, epoch_opt
- */
-
- if (argc_parse - 1 > 0) {
- fprintf(stderr, MYNAME " takes no non-option arguments. "
- "You supplied %d.\n",
- argc_parse - 1);
- exit(100);
- }
-
- if (show + set + systohc + hctosys + adjust +
- getepoch + setepoch + version > 1) {
- fprintf(stderr, "You have specified multiple function options.\n"
- "You can only perform one function at a time.\n");
- exit(100);
- }
-
- if (set) {
- rc = interpret_date_string(date_opt, &set_time); /* (time-consuming) */
- if (rc != 0) {
- fprintf(stderr, "No usable set-to time. Cannot set clock.\n");
- exit(100);
- }
- }
-
- if (directisa && !isa_machine) {
- fprintf(stderr, "You have requested direct access to the ISA Hardware "
- "Clock using machine instructions from the user process. "
- "But this method only works on an ISA machine with an x86 "
- "CPU, and this is not one!\n");
- exit(100);
- }
-
- if (!(show | set | systohc | hctosys | adjust | getepoch | setepoch |
- version))
- show = 1; /* default to show */
-
-
- if (getuid() == 0) permitted = TRUE;
- else {
- /* program is designed to run setuid (in some situations) -- be secure! */
- if (set || hctosys || systohc || adjust) {
- fprintf(stderr,
- "Sorry, only the superuser can change the Hardware Clock.\n");
- permitted = FALSE;
- } else if (setepoch) {
- fprintf(stderr,
- "Sorry, only the superuser can change "
- "the Hardware Clock epoch in the kernel.\n");
- permitted = FALSE;
- } else permitted = TRUE;
- }
-
- if (!permitted) retcode = 2;
- else {
- retcode = 0;
- if (version) {
- printf(MYNAME " " VERSION "/%s\n",util_linux_version);
- } else if (getepoch || setepoch) {
- manipulate_epoch(getepoch, setepoch, epoch_opt, testing);
- } else {
- determine_clock_access_method(directisa, &clock_access);
- if (clock_access == NOCLOCK)
- fprintf(stderr, "Cannot access the Hardware Clock via any known "
- "method. Use --debug option to see the details of our "
- "search for an access method.\n");
- else
- manipulate_clock(show, adjust, set, set_time, hctosys, systohc,
- startup_time, clock_access, universal, testing, &rc);
- }
- }
- exit(retcode);
-}
-
-
-/****************************************************************************
-
- History of this program:
-
- 98.08.12 BJH Version 2.4
-
- Don't use century byte from Hardware Clock. Add comments telling why.
-
-
- 98.06.20 BJH Version 2.3.
-
- Make --hctosys set the kernel timezone from TZ environment variable
- and/or /usr/lib/zoneinfo. From Klaus Ripke (klaus@ripke.com).
-
- 98.03.05 BJH. Version 2.2.
-
- Add --getepoch and --setepoch.
-
- Fix some word length things so it works on Alpha.
-
- Make it work when /dev/rtc doesn't have the interrupt functions.
- In this case, busywait for the top of a second instead of blocking and
- waiting for the update complete interrupt.
-
- Fix a bunch of bugs too numerous to mention.
-
- 97.06.01: BJH. Version 2.1. Read and write the century byte (Byte
- 50) of the ISA Hardware Clock when using direct ISA I/O. Problem
- discovered by job (jei@iclnl.icl.nl).
-
- Use the rtc clock access method in preference to the KDGHWCLK method.
- Problem discovered by Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>.
-
- November 1996: Version 2.0.1. Modifications by Nicolai Langfeldt
- (janl@math.uio.no) to make it compile on linux 1.2 machines as well
- as more recent versions of the kernel. Introduced the NO_CLOCK
- access method and wrote feature test code to detect absense of rtc
- headers.
-
-
- Bryan Henderson based hwclock on the program "clock", in September
- 1996. While remaining mostly backward compatible with clock,
- hwclock added the following:
-
- - You can set the hardware clock without also modifying the Linux
- system clock.
-
- - You can read and set the clock with finer than 1 second precision.
-
- - When you set the clock, hwclock automatically refigures the drift
- rate, based on how far off the clock was before you set it. (This
- is the drift rate that is used with the --adjust function to
- automatically adjust the clock periodically to compensate for drift).
-
- - More mnemonic GNU-style command line options.
-
- - Comments describing how the clock and program work to improve
- maintainability.
-
- - Removed the old dead I/O code that worked without the inb/outb
- instructions and without the asm/io.h definitions.
-
- The first version of hwclock was Version 2.
-
- Here is the history section from the "clock" program at the time it was
- used as a basis for hwclock:
-
- V1.0
-
-
- V1.0 by Charles Hedrick, hedrick@cs.rutgers.edu, April 1992.
-
- ********************
- V1.1
- Modified for clock adjustments - Rob Hooft, hooft@chem.ruu.nl, Nov 1992
- Also moved error messages to stderr. The program now uses getopt.
- Changed some exit codes. Made 'gcc 2.3 -Wall' happy.
-
- *****
- V1.2
-
- Applied patches by Harald Koenig (koenig@nova.tat.physik.uni-tuebingen.de)
- Patched and indented by Rob Hooft (hooft@EMBL-Heidelberg.DE)
-
- A free quote from a MAIL-message (with spelling corrections):
-
- "I found the explanation and solution for the CMOS reading 0xff problem
- in the 0.99pl13c (ALPHA) kernel: the RTC goes offline for a small amount
- of time for updating. Solution is included in the kernel source
- (linux/kernel/time.c)."
-
- "I modified clock.c to fix this problem and added an option (now default,
- look for USE_INLINE_ASM_IO) that I/O instructions are used as inline
- code and not via /dev/port (still possible via #undef ...)."
-
- With the new code, which is partially taken from the kernel sources,
- the CMOS clock handling looks much more "official".
- Thanks Harald (and Torsten for the kernel code)!
-
- *****
- V1.3
- Canges from alan@spri.levels.unisa.edu.au (Alan Modra):
- a) Fix a few typos in comments and remove reference to making
- clock -u a cron job. The kernel adjusts cmos time every 11
- minutes - see kernel/sched.c and kernel/time.c set_rtc_mmss().
- This means we should really have a cron job updating
- /etc/adjtime every 11 mins (set last_time to the current time
- and not_adjusted to ???).
- b) Swapped arguments of outb() to agree with asm/io.h macro of the
- same name. Use outb() from asm/io.h as it's slightly better.
- c) Changed CMOS_READ and CMOS_WRITE to inline functions. Inserted
- cli()..sti() pairs in appropriate places to prevent possible
- errors, and changed ioperm() call to iopl() to allow cli.
- d) Moved some variables around to localise them a bit.
- e) Fixed bug with clock -ua or clock -us that cleared environment
- variable TZ. This fix also cured the annoying display of bogus
- day of week on a number of machines. (Use mktime(), ctime()
- rather than asctime() )
- f) Use settimeofday() rather than stime(). This one is important
- as it sets the kernel's timezone offset, which is returned by
- gettimeofday(), and used for display of MSDOS and OS2 file
- times.
- g) faith@cs.unc.edu added -D flag for debugging
-
- V1.4: alan@SPRI.Levels.UniSA.Edu.Au (Alan Modra)
- Wed Feb 8 12:29:08 1995, fix for years > 2000.
- faith@cs.unc.edu added -v option to print version. */
-
-
diff --git a/sys-utils/ipcrm.c b/sys-utils/ipcrm.c
index c04b7fd44..4dcd081b4 100644
--- a/sys-utils/ipcrm.c
+++ b/sys-utils/ipcrm.c
@@ -1,5 +1,9 @@
/*
* krishna balasubramanian 1993
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <stdio.h>
@@ -12,6 +16,8 @@
#include <sys/shm.h>
#include <sys/msg.h>
#include <sys/sem.h>
+#include "nls.h"
+
#if defined (__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
/* union semun is defined by including <sys/sem.h> */
#else
@@ -30,10 +36,14 @@ int main(int argc, char **argv)
int id;
union semun arg;
- arg.val = 0;
+ arg.val = 0;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
if (argc != 3 || strlen(argv[1]) < 3) {
- printf ("usage: %s [shm | msg | sem] id\n", argv[0]);
+ printf (_("usage: %s [shm | msg | sem] id\n"), argv[0]);
exit (1);
}
id = atoi (argv[2]);
@@ -57,10 +67,10 @@ int main(int argc, char **argv)
exit (1);
default:
- printf ("usage: %s [-shm | -msg | -sem] id\n", argv[0]);
+ printf (_("usage: %s [-shm | -msg | -sem] id\n"), argv[0]);
exit (1);
}
- printf ("resource deleted\n");
+ printf (_("resource deleted\n"));
return 0;
}
diff --git a/sys-utils/ipcs.c b/sys-utils/ipcs.c
index 975bfd1a2..e628ce874 100644
--- a/sys-utils/ipcs.c
+++ b/sys-utils/ipcs.c
@@ -13,6 +13,10 @@
Patched to display the key field -- hy@picksys.com 12/18/96
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
+
*/
#include <stdio.h>
@@ -22,9 +26,12 @@
#include <time.h>
#include <pwd.h>
#include <grp.h>
-#if 0
-#define __KERNEL__ /* yuk */
-#include <linux/linkage.h>
+#include "nls.h"
+
+#include "../defines.h" /* for NEED_linkage_h */
+#ifdef NEED_linkage_h
+#define __KERNEL__ /* required for SHM_DEST etc. */
+#include <linux/linkage.h> /* required for the keyword asmlinkage */
#endif
/* X/OPEN tells us to use <sys/{types,ipc,sem}.h> for semctl() */
/* X/OPEN tells us to use <sys/{types,ipc,msg}.h> for msgctl() */
@@ -34,6 +41,10 @@
#include <sys/sem.h>
#include <sys/msg.h>
#include <sys/shm.h>
+#ifdef NEED_linkage_h
+#undef __KERNEL__
+#endif
+
/* The last arg of semctl is a union semun, but where is it defined?
X/OPEN tells us to define it ourselves, but until recently
Linux include files would also define it. */
@@ -77,21 +88,21 @@ static char *progname;
void usage(void)
{
- printf ("usage : %s -asmq -tclup \n", progname);
- printf ("\t%s [-s -m -q] -i id\n", progname);
- printf ("\t%s -h for help.\n", progname);
+ printf (_("usage : %s -asmq -tclup \n"), progname);
+ printf (_("\t%s [-s -m -q] -i id\n"), progname);
+ printf (_("\t%s -h for help.\n"), progname);
return;
}
void help (void)
{
- printf ("%s provides information on ipc facilities for", progname);
- printf (" which you have read access.\n");
- printf ("Resource Specification:\n\t-m : shared_mem\n\t-q : messages\n");
- printf ("\t-s : semaphores\n\t-a : all (default)\n");
- printf ("Output Format:\n\t-t : time\n\t-p : pid\n\t-c : creator\n");
- printf ("\t-l : limits\n\t-u : summary\n");
- printf ("-i id [-s -q -m] : details on resource identified by id\n");
+ printf (_("%s provides information on ipc facilities for"), progname);
+ printf (_(" which you have read access.\n"));
+ printf (_("Resource Specification:\n\t-m : shared_mem\n\t-q : messages\n"));
+ printf (_("\t-s : semaphores\n\t-a : all (default)\n"));
+ printf (_("Output Format:\n\t-t : time\n\t-p : pid\n\t-c : creator\n"));
+ printf (_("\t-l : limits\n\t-u : summary\n"));
+ printf (_("-i id [-s -q -m] : details on resource identified by id\n"));
usage();
return;
}
@@ -102,6 +113,10 @@ int main (int argc, char **argv)
char format = 0;
char options[] = "atcluphsmqi:";
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
progname = argv[0];
while ((opt = getopt (argc, argv, options)) != EOF) {
switch (opt) {
@@ -219,52 +234,52 @@ void do_shm (char format)
maxid = shmctl (0, SHM_INFO, (struct shmid_ds *) &shm_info);
if (maxid < 0) {
- printf ("kernel not configured for shared memory\n");
+ printf (_("kernel not configured for shared memory\n"));
return;
}
switch (format) {
case LIMITS:
- printf ("------ Shared Memory Limits --------\n");
+ printf (_("------ Shared Memory Limits --------\n"));
if ((shmctl (0, IPC_INFO, (struct shmid_ds *) &shminfo)) < 0 )
return;
- printf ("max number of segments = %d\n", shminfo.shmmni);
- printf ("max seg size (kbytes) = %d\n", shminfo.shmmax >> 10);
- printf ("max total shared memory (kbytes) = %d\n", shminfo.shmall << 2);
- printf ("min seg size (bytes) = %d\n", shminfo.shmmin);
+ printf (_("max number of segments = %d\n"), shminfo.shmmni);
+ printf (_("max seg size (kbytes) = %d\n"), shminfo.shmmax >> 10);
+ printf (_("max total shared memory (kbytes) = %d\n"), shminfo.shmall << 2);
+ printf (_("min seg size (bytes) = %d\n"), shminfo.shmmin);
return;
case STATUS:
- printf ("------ Shared Memory Status --------\n");
- printf ("segments allocated %d\n", shm_info.used_ids);
- printf ("pages allocated %ld\n", shm_info.shm_tot);
- printf ("pages resident %ld\n", shm_info.shm_rss);
- printf ("pages swapped %ld\n", shm_info.shm_swp);
- printf ("Swap performance: %ld attempts\t %ld successes\n",
+ printf (_("------ Shared Memory Status --------\n"));
+ printf (_("segments allocated %d\n"), shm_info.used_ids);
+ printf (_("pages allocated %ld\n"), shm_info.shm_tot);
+ printf (_("pages resident %ld\n"), shm_info.shm_rss);
+ printf (_("pages swapped %ld\n"), shm_info.shm_swp);
+ printf (_("Swap performance: %ld attempts\t %ld successes\n"),
shm_info.swap_attempts, shm_info.swap_successes);
return;
case CREATOR:
- printf ("------ Shared Memory Segment Creators/Owners --------\n");
- printf ("%-10s%-10s%-10s%-10s%-10s%-10s\n",
- "shmid","perms","cuid","cgid","uid","gid");
+ printf (_("------ Shared Memory Segment Creators/Owners --------\n"));
+ printf (_("%-10s%-10s%-10s%-10s%-10s%-10s\n"),
+ _("shmid"),_("perms"),_("cuid"),_("cgid"),_("uid"),_("gid"));
break;
case TIME:
- printf ("------ Shared Memory Attach/Detach/Change Times --------\n");
- printf ("%-10s%-10s %-20s%-20s%-20s\n",
- "shmid","owner","attached","detached","changed");
+ printf (_("------ Shared Memory Attach/Detach/Change Times --------\n"));
+ printf (_("%-10s%-10s %-20s%-20s%-20s\n"),
+ _("shmid"),_("owner"),_("attached"),_("detached"),_("changed"));
break;
case PID:
- printf ("------ Shared Memory Creator/Last-op --------\n");
- printf ("%-10s%-10s%-10s%-10s\n","shmid","owner","cpid","lpid");
+ printf (_("------ Shared Memory Creator/Last-op --------\n"));
+ printf (_("%-10s%-10s%-10s%-10s\n"),_("shmid"),_("owner"),_("cpid"),_("lpid"));
break;
default:
- printf ("------ Shared Memory Segments --------\n");
- printf ("%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n", "key","shmid",
- "owner","perms","bytes","nattch","status");
+ printf (_("------ Shared Memory Segments --------\n"));
+ printf (_("%-10s%-10s%-10s%-10s%-10s%-10s%-12s\n"), _("key"),_("shmid"),
+ _("owner"),_("perms"),_("bytes"),_("nattch"),_("status"));
break;
}
@@ -284,9 +299,9 @@ void do_shm (char format)
else
printf ("%-10d%-10d", shmid, ipcp->uid);
printf(" %-20.16s%-20.16s%-20.16s\n",
- shmseg.shm_atime ? ctime(&shmseg.shm_atime) + 4 : "Not set",
- shmseg.shm_dtime ? ctime(&shmseg.shm_dtime) + 4 : "Not set",
- shmseg.shm_ctime ? ctime(&shmseg.shm_ctime) + 4 : "Not set");
+ shmseg.shm_atime ? ctime(&shmseg.shm_atime) + 4 : _("Not set"),
+ shmseg.shm_dtime ? ctime(&shmseg.shm_dtime) + 4 : _("Not set"),
+ shmseg.shm_ctime ? ctime(&shmseg.shm_ctime) + 4 : _("Not set"));
break;
case PID:
if (pw)
@@ -306,8 +321,8 @@ void do_shm (char format)
printf ("%-10o%-10d%-10d%-6s%-6s\n",
ipcp->mode & 0777,
shmseg.shm_segsz, shmseg.shm_nattch,
- ipcp->mode & SHM_DEST ? "dest" : " ",
- ipcp->mode & SHM_LOCKED ? "locked" : " ");
+ ipcp->mode & SHM_DEST ? _("dest") : " ",
+ ipcp->mode & SHM_LOCKED ? _("locked") : " ");
break;
}
}
@@ -327,48 +342,48 @@ void do_sem (char format)
arg.array = (ushort *) &seminfo;
maxid = semctl (0, 0, SEM_INFO, arg);
if (maxid < 0) {
- printf ("kernel not configured for semaphores\n");
+ printf (_("kernel not configured for semaphores\n"));
return;
}
switch (format) {
case LIMITS:
- printf ("------ Semaphore Limits --------\n");
+ printf (_("------ Semaphore Limits --------\n"));
arg.array = (ushort *) &seminfo; /* damn union */
if ((semctl (0, 0, IPC_INFO, arg)) < 0 )
return;
- printf ("max number of arrays = %d\n", seminfo.semmni);
- printf ("max semaphores per array = %d\n", seminfo.semmsl);
- printf ("max semaphores system wide = %d\n", seminfo.semmns);
- printf ("max ops per semop call = %d\n", seminfo.semopm);
- printf ("semaphore max value = %d\n", seminfo.semvmx);
+ printf (_("max number of arrays = %d\n"), seminfo.semmni);
+ printf (_("max semaphores per array = %d\n"), seminfo.semmsl);
+ printf (_("max semaphores system wide = %d\n"), seminfo.semmns);
+ printf (_("max ops per semop call = %d\n"), seminfo.semopm);
+ printf (_("semaphore max value = %d\n"), seminfo.semvmx);
return;
case STATUS:
- printf ("------ Semaphore Status --------\n");
- printf ("used arrays = %d\n", seminfo.semusz);
- printf ("allocated semaphores = %d\n", seminfo.semaem);
+ printf (_("------ Semaphore Status --------\n"));
+ printf (_("used arrays = %d\n"), seminfo.semusz);
+ printf (_("allocated semaphores = %d\n"), seminfo.semaem);
return;
case CREATOR:
- printf ("------ Semaphore Arrays Creators/Owners --------\n");
- printf ("%-10s%-10s%-10s%-10s%-10s%-10s\n",
- "semid","perms","cuid","cgid","uid","gid");
+ printf (_("------ Semaphore Arrays Creators/Owners --------\n"));
+ printf (_("%-10s%-10s%-10s%-10s%-10s%-10s\n"),
+ _("semid"),_("perms"),_("cuid"),_("cgid"),_("uid"),("gid"));
break;
case TIME:
- printf ("------ Shared Memory Operation/Change Times --------\n");
- printf ("%-8s%-10s %-26.24s %-26.24s\n",
- "shmid","owner","last-op","last-changed");
+ printf (_("------ Shared Memory Operation/Change Times --------\n"));
+ printf (_("%-8s%-10s %-26.24s %-26.24s\n"),
+ _("shmid"),_("owner"),_("last-op"),_("last-changed"));
break;
case PID:
break;
default:
- printf ("------ Semaphore Arrays --------\n");
- printf ("%-10s%-10s%-10s%-10s%-10s%-12s\n",
- "key","semid","owner","perms","nsems","status");
+ printf (_("------ Semaphore Arrays --------\n"));
+ printf (_("%-10s%-10s%-10s%-10s%-10s%-12s\n"),
+ _("key"),_("semid"),_("owner"),_("perms"),_("nsems"),_("status"));
break;
}
@@ -389,8 +404,8 @@ void do_sem (char format)
else
printf ("%-8d%-10d", semid, ipcp->uid);
printf (" %-26.24s %-26.24s\n",
- semary.sem_otime ? ctime(&semary.sem_otime) : "Not set",
- semary.sem_ctime ? ctime(&semary.sem_ctime) : "Not set");
+ semary.sem_otime ? ctime(&semary.sem_otime) : _("Not set"),
+ semary.sem_ctime ? ctime(&semary.sem_ctime) : _("Not set"));
break;
case PID:
break;
@@ -421,7 +436,7 @@ void do_msg (char format)
maxid = msgctl (0, MSG_INFO, (struct msqid_ds *) &msginfo);
if (maxid < 0) {
- printf ("kernel not configured for shared memory\n");
+ printf (_("kernel not configured for shared memory\n"));
return;
}
@@ -429,40 +444,40 @@ void do_msg (char format)
case LIMITS:
if ((msgctl (0, IPC_INFO, (struct msqid_ds *) &msginfo)) < 0 )
return;
- printf ("------ Messages: Limits --------\n");
- printf ("max queues system wide = %d\n", msginfo.msgmni);
- printf ("max size of message (bytes) = %d\n", msginfo.msgmax);
- printf ("default max size of queue (bytes) = %d\n", msginfo.msgmnb);
+ printf (_("------ Messages: Limits --------\n"));
+ printf (_("max queues system wide = %d\n"), msginfo.msgmni);
+ printf (_("max size of message (bytes) = %d\n"), msginfo.msgmax);
+ printf (_("default max size of queue (bytes) = %d\n"), msginfo.msgmnb);
return;
case STATUS:
- printf ("------ Messages: Status --------\n");
- printf ("allocated queues = %d\n", msginfo.msgpool);
- printf ("used headers = %d\n", msginfo.msgmap);
- printf ("used space = %d bytes\n", msginfo.msgtql);
+ printf (_("------ Messages: Status --------\n"));
+ printf (_("allocated queues = %d\n"), msginfo.msgpool);
+ printf (_("used headers = %d\n"), msginfo.msgmap);
+ printf (_("used space = %d bytes\n"), msginfo.msgtql);
return;
case CREATOR:
- printf ("------ Message Queues: Creators/Owners --------\n");
- printf ("%-10s%-10s%-10s%-10s%-10s%-10s\n",
- "msqid","perms","cuid","cgid","uid","gid");
+ printf (_("------ Message Queues: Creators/Owners --------\n"));
+ printf (_("%-10s%-10s%-10s%-10s%-10s%-10s\n"),
+ _("msqid"),_("perms"),_("cuid"),_("cgid"),_("uid"),_("gid"));
break;
case TIME:
- printf ("------ Message Queues Send/Recv/Change Times --------\n");
- printf ("%-8s%-10s %-20s%-20s%-20s\n",
- "msqid","owner","send","recv","change");
+ printf (_("------ Message Queues Send/Recv/Change Times --------\n"));
+ printf (_("%-8s%-10s %-20s%-20s%-20s\n"),
+ _("msqid"),_("owner"),_("send"),_("recv"),_("change"));
break;
case PID:
- printf ("------ Message Queues PIDs --------\n");
- printf ("%-10s%-10s%-10s%-10s\n","msqid","owner","lspid","lrpid");
+ printf (_("------ Message Queues PIDs --------\n"));
+ printf (_("%-10s%-10s%-10s%-10s\n"),_("msqid"),_("owner"),_("lspid"),_("lrpid"));
break;
default:
- printf ("------ Message Queues --------\n");
- printf ("%-10s%-10s%-10s%-10s%-12s%-12s\n", "key","msqid",
- "owner", "perms", "used-bytes", "messages");
+ printf (_("------ Message Queues --------\n"));
+ printf (_("%-10s%-10s%-10s%-10s%-12s%-12s\n"), _("key"),_("msqid"),
+ _("owner"), _("perms"), _("used-bytes"), _("messages"));
break;
}
@@ -482,9 +497,9 @@ void do_msg (char format)
else
printf ("%-8d%-10d", msqid, ipcp->uid);
printf (" %-20.16s%-20.16s%-20.16s\n",
- msgque.msg_stime ? ctime(&msgque.msg_stime) + 4 : "Not set",
- msgque.msg_rtime ? ctime(&msgque.msg_rtime) + 4 : "Not set",
- msgque.msg_ctime ? ctime(&msgque.msg_ctime) + 4 : "Not set");
+ msgque.msg_stime ? ctime(&msgque.msg_stime) + 4 : _("Not set"),
+ msgque.msg_rtime ? ctime(&msgque.msg_rtime) + 4 : _("Not set"),
+ msgque.msg_ctime ? ctime(&msgque.msg_ctime) + 4 : _("Not set"));
break;
case PID:
if (pw)
@@ -521,18 +536,18 @@ void print_shm (int shmid)
return;
}
- printf ("\nShared memory Segment shmid=%d\n", shmid);
- printf ("uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n",
+ printf (_("\nShared memory Segment shmid=%d\n"), shmid);
+ printf (_("uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"),
ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid);
- printf ("mode=%#o\taccess_perms=%#o\n", ipcp->mode, ipcp->mode & 0777);
- printf ("bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n",
+ printf (_("mode=%#o\taccess_perms=%#o\n"), ipcp->mode, ipcp->mode & 0777);
+ printf (_("bytes=%d\tlpid=%d\tcpid=%d\tnattch=%d\n"),
shmds.shm_segsz, shmds.shm_lpid, shmds.shm_cpid,
shmds.shm_nattch);
- printf ("att_time=%s", shmds.shm_atime ? ctime (&shmds.shm_atime) :
- "Not set\n");
- printf ("det_time=%s", shmds.shm_dtime ? ctime (&shmds.shm_dtime) :
- "Not set\n");
- printf ("change_time=%s", ctime (&shmds.shm_ctime));
+ printf (_("att_time=%s"), shmds.shm_atime ? ctime (&shmds.shm_atime) :
+ _("Not set\n"));
+ printf (_("det_time=%s"), shmds.shm_dtime ? ctime (&shmds.shm_dtime) :
+ _("Not set\n"));
+ printf (_("change_time=%s"), ctime (&shmds.shm_ctime));
printf ("\n");
return;
}
@@ -548,16 +563,16 @@ void print_msg (int msqid)
perror ("msgctl ");
return;
}
- printf ("\nMessage Queue msqid=%d\n", msqid);
- printf ("uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n",
+ printf (_("\nMessage Queue msqid=%d\n"), msqid);
+ printf (_("uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"),
ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid, ipcp->mode);
- printf ("cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n",
+ printf (_("cbytes=%d\tqbytes=%d\tqnum=%d\tlspid=%d\tlrpid=%d\n"),
buf.msg_cbytes, buf.msg_qbytes, buf.msg_qnum, buf.msg_lspid,
buf.msg_lrpid);
- printf ("send_time=%srcv_time=%schange_time=%s",
- buf.msg_rtime? ctime (&buf.msg_rtime) : "Not Set\n",
- buf.msg_stime? ctime (&buf.msg_stime) : "Not Set\n",
- buf.msg_ctime? ctime (&buf.msg_ctime) : "Not Set\n");
+ printf (_("send_time=%srcv_time=%schange_time=%s"),
+ buf.msg_rtime? ctime (&buf.msg_rtime) : _("Not Set\n"),
+ buf.msg_stime? ctime (&buf.msg_stime) : _("Not Set\n"),
+ buf.msg_ctime? ctime (&buf.msg_ctime) : _("Not Set\n"));
printf ("\n");
return;
}
@@ -574,17 +589,17 @@ void print_sem (int semid)
perror ("semctl ");
return;
}
- printf ("\nSemaphore Array semid=%d\n", semid);
- printf ("uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n",
+ printf (_("\nSemaphore Array semid=%d\n"), semid);
+ printf (_("uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"),
ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid);
- printf ("mode=%#o, access_perms=%#o\n", ipcp->mode, ipcp->mode & 0777);
- printf ("nsems = %d\n", semds.sem_nsems);
- printf ("otime = %s", semds.sem_otime ? ctime (&semds.sem_otime) :
- "Not set\n");
- printf ("ctime = %s", ctime (&semds.sem_ctime));
-
- printf ("%-10s%-10s%-10s%-10s%-10s\n", "semnum","value","ncount",
- "zcount","pid");
+ printf (_("mode=%#o, access_perms=%#o\n"), ipcp->mode, ipcp->mode & 0777);
+ printf (_("nsems = %d\n"), semds.sem_nsems);
+ printf (_("otime = %s"), semds.sem_otime ? ctime (&semds.sem_otime) :
+ _("Not set\n"));
+ printf (_("ctime = %s"), ctime (&semds.sem_ctime));
+
+ printf (_("%-10s%-10s%-10s%-10s%-10s\n"), _("semnum"),_("value"),_("ncount"),
+ _("zcount"),_("pid"));
arg.val = 0;
for (i=0; i< semds.sem_nsems; i++) {
int val, ncnt, zcnt, pid;
diff --git a/sys-utils/kbdrate.8 b/sys-utils/kbdrate.8
deleted file mode 100644
index 88c6cbc1f..000000000
--- a/sys-utils/kbdrate.8
+++ /dev/null
@@ -1,64 +0,0 @@
-.\" Copyright 1992, 1994 Rickard E. Faith (faith@cs.unc.edu)
-.\" May be distributed under the GNU General Public License
-.\" Updated Wed Jun 22 21:09:43 1994, faith@cs.unc.edu
-.TH KBDRATE 8 "22 June 1994" "Linux 1.1.19" "Linux Programmer's Manual"
-.SH NAME
-kbdrate \- reset the keyboard repeat rate and delay time
-.SH SYNOPSIS
-.B "kbdrate [ \-s ] [ \-r"
-rate
-.B "] [ \-d"
-delay
-.B ]
-.SH DESCRIPTION
-.B kbdrate
-is used to change the IBM keyboard repeat rate and delay time. The delay
-is the amount of time that a key must be depressed before it will start to
-repeat.
-
-Using
-.B kbdrate
-without any options will reset the rate to 10.9 characters per second (cps)
-and the delay to 250 milliseconds (mS). These are the IBM defaults.
-.SH OPTIONS
-.TP
-.B \-s
-Silent. No messages are printed.
-.TP
-.BI \-r " rate"
-Change the keyboard repeat rate to
-.I rate
-cps. The allowable range is from 2.0 to 30.0 cps. Only certain, specific
-values are possible, and the program will select the nearest possible value
-to the one specified. The possible values are given, in characters per
-second, as follows: 2.0, 2.1, 2.3, 2.5, 2.7, 3.0, 3.3, 3.7, 4.0, 4.3, 4.6,
-5.0, 5.5, 6.0, 6.7, 7.5, 8.0, 8.6, 9.2, 10.0, 10.9, 12.0, 13.3, 15.0, 16.0,
-17.1, 18.5, 20.0, 21.8, 24.0, 26.7, 30.0.
-.TP
-.BI \-d " delay"
-Change the delay to
-.I delay
-milliseconds. The allowable range is from 250 to 1000 mS, but the only
-possible values (based on hardware restrictions) are: 250mS, 500mS, 750mS,
-and 1000mS.
-.SH BUGS
-Not all keyboards support all rates.
-.PP
-Not all keyboards have the rates mapped in the same way.
-.PP
-Setting the repeat rate on the Gateway AnyKey keyboard does not work. If
-someone with a Gateway figures out how to program the keyboard, please send
-mail to faith@cs.unc.edu.
-.PP
-The above description is for i386 machines, and writing to some io port
-won't work on other architectures. Nowadays
-.B kbdrate
-first tries if the KDKBDREP ioctl is available. If it is, it is used,
-otherwise the old method is applied.
-
-.SH FILES
-.I /etc/rc.local
-.br
-.I /dev/port
-.SH AUTHOR
-Rik Faith (faith@cs.unc.edu)
diff --git a/sys-utils/lp.h b/sys-utils/lp.h
new file mode 100644
index 000000000..7fa83dde2
--- /dev/null
+++ b/sys-utils/lp.h
@@ -0,0 +1,83 @@
+/* Line printer stuff mostly follows the original Centronics printers. See
+ IEEE Std.1284-1994 Standard Signaling Method for a Bi-directional Parallel
+ Peripheral Interface for Personal Computers for 5 modes of data transfer. */
+
+/* Parallel port registers: data (0x3bc, 0x378, 0x278), status=data+1, control=data+2 */
+
+/* Parallel port status register (read only):
+bit 7: NBSY (1: ready, 0: busy or error or off-line)
+bit 6: NACK (if NBSY=1, then 1; if NBSY=0 then 1: sending data, 0: ready with data)
+bit 5: PAP (1: out-of-paper)
+bit 4: OFON (1: on-line)
+bit 3: NFEH (1: OK, 0: printer error)
+bits 2-0: 07
+
+On out-of-paper: PAP=1, OFON=0, NFEH=1.
+
+"When reading the busy status, read twice in a row and use the value
+obtained from the second read. This improves the reliability on some
+parallel ports when the busy line may not be connected and is floating."
+"On some Okidata printers when the busy signal switches from high to low,
+the printer sends a 50 ns glitch on the paper out signal line. Before
+declaring a paper out condition, check the status again."
+(The Undocumented PC, F. van Gilluwe, p. 711)
+*/
+
+/* Parallel port control register (read/write):
+bit 4: IRQ (1: we want an interrupt when NACK goes from 1 to 0)
+bit 3: DSL (1: activate printer)
+bit 2: NINI (0: initialise printer)
+bit 1: ALF (1: printer performs automatic linefeed after each line)
+bit 0: STR (0->1: generate a Strobe pulse: transport data to printer)
+*/
+
+/* Parallel port timing:
+ 1. wait for NBSY=1
+ 2. outb(data byte, data port)
+ 3. wait for at least 0.5us
+ 4. read control port, OR with STR=0x1, output to control port - purpose:
+ generate strobe pulse; this will make the busy line go high
+ 5. wait for at least 0.5us
+ 6. read control port, AND with !STR, output to control port
+ 7. wait for at least 0.5us
+ 8. in a loop: read status register until NACK bit is 0 or NBSY=1
+ (the printer will keep NACK=0 for at least 0.5us, then NACK=NBSY=1).
+*/
+
+
+/* lp ioctls */
+#define LPCHAR 0x0601 /* specify the number of times we ask for the status
+ (waiting for ready) before giving up with a timeout
+ The duration may mainly depend on the timing of an inb. */
+#define LPTIME 0x0602 /* time to sleep after each timeout (in units of 0.01 sec) */
+#define LPABORT 0x0604 /* call with TRUE arg to abort on error,
+ FALSE to retry. Default is retry. */
+#define LPSETIRQ 0x0605 /* call with new IRQ number,
+ or 0 for polling (no IRQ) */
+#define LPGETIRQ 0x0606 /* get the current IRQ number */
+#define LPWAIT 0x0608 /* #of loops to wait before taking strobe high */
+#define LPCAREFUL 0x0609 /* call with TRUE arg to require out-of-paper, off-
+ line, and error indicators good on all writes,
+ FALSE to ignore them. Default is ignore. */
+#define LPABORTOPEN 0x060a /* call with TRUE arg to abort open() on error,
+ FALSE to ignore error. Default is ignore. */
+#define LPGETSTATUS 0x060b /* return LP_S(minor) */
+#define LPRESET 0x060c /* reset printer */
+#define LPGETFLAGS 0x060e /* get status flags */
+
+#define LPSTRICT 0x060f /* enable/disable strict compliance (2.0.36) */
+ /* Strict: wait until !READY before taking strobe low;
+ this may be bad for the Epson Stylus 800.
+ Not strict: wait a constant time as given by LPWAIT */
+#define LPTRUSTIRQ 0x060f /* set/unset the LP_TRUST_IRQ flag (2.1.131) */
+
+/*
+ * bit defines for 8255 status port
+ * base + 1
+ * accessed with LP_S(minor), which gets the byte...
+ */
+#define LP_PBUSY 0x80 /* inverted input, active high */
+#define LP_PACK 0x40 /* unchanged input, active low */
+#define LP_POUTPA 0x20 /* unchanged input, active high */
+#define LP_PSELECD 0x10 /* unchanged input, active high */
+#define LP_PERRORP 0x08 /* unchanged input, active low */
diff --git a/sys-utils/rdev.c b/sys-utils/rdev.c
index 77e1a58f5..434784b8b 100644
--- a/sys-utils/rdev.c
+++ b/sys-utils/rdev.c
@@ -49,12 +49,15 @@ Tue Mar 30 09:31:52 1993: rdev -Rn to set root readonly flag, sct@dcs.ed.ac.uk
Wed Jun 22 21:12:29 1994: Applied patches from Dave
(gentzel@nova.enet.dec.com) to prevent dereferencing
the NULL pointer, faith@cs.unc.edu
+1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+- added Native Language Support
-------------------------------------------------------------------------
*/
#include <stdio.h>
+#include "nls.h"
/* rdev.c - query/set root device. */
@@ -62,20 +65,20 @@ void
usage()
{
- puts("usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]");
- puts(" rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device");
- puts(" rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2");
- puts(" rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)");
- puts(" rdev -s /dev/fd0 /dev/hda2 set the SWAP device");
- puts(" rdev -r /dev/fd0 627 set the RAMDISK size");
- puts(" rdev -v /dev/fd0 1 set the bootup VIDEOMODE");
- puts(" rdev -o N ... use the byte offset N");
- puts(" rootflags ... same as rdev -R");
- puts(" swapdev ... same as rdev -s");
- puts(" ramsize ... same as rdev -r");
- puts(" vidmode ... same as rdev -v");
- puts("Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,...");
- puts(" use -R 1 to mount root readonly, -R 0 for read/write.");
+ puts(_("usage: rdev [ -rsv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]"));
+ puts(_(" rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device"));
+ puts(_(" rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2"));
+ puts(_(" rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)"));
+ puts(_(" rdev -s /dev/fd0 /dev/hda2 set the SWAP device"));
+ puts(_(" rdev -r /dev/fd0 627 set the RAMDISK size"));
+ puts(_(" rdev -v /dev/fd0 1 set the bootup VIDEOMODE"));
+ puts(_(" rdev -o N ... use the byte offset N"));
+ puts(_(" rootflags ... same as rdev -R"));
+ puts(_(" swapdev ... same as rdev -s"));
+ puts(_(" ramsize ... same as rdev -r"));
+ puts(_(" vidmode ... same as rdev -v"));
+ puts(_("Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,..."));
+ puts(_(" use -R 1 to mount root readonly, -R 0 for read/write."));
exit(-1);
}
@@ -90,7 +93,6 @@ usage()
#include <sys/types.h>
#include <sys/stat.h>
-
#define DEFAULT_OFFSET 508
@@ -135,6 +137,10 @@ int main(int argc,char **argv)
struct stat s;
int cmd = 0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
device = NULL;
if ((ptr = strrchr(argv[0],'/')) != NULL)
ptr++;
diff --git a/sys-utils/readprofile.c b/sys-utils/readprofile.c
index 4462a811f..ba982f7c3 100644
--- a/sys-utils/readprofile.c
+++ b/sys-utils/readprofile.c
@@ -18,6 +18,11 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+/*
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@@ -26,6 +31,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include "nls.h"
#define RELEASE "2.0, May 1996"
@@ -41,14 +47,14 @@ static char optstring[]="m:p:itvarV";
void usage()
{
fprintf(stderr,
- "%s: Usage: \"%s [options]\n"
+ _("%s: Usage: \"%s [options]\n"
"\t -m <mapfile> (default = \"%s\")\n"
"\t -p <pro-file> (default = \"%s\")\n"
"\t -i print only info about the sampling step\n"
"\t -v print verbose data\n"
"\t -a print all symbols, even if count is 0\n"
"\t -r reset all the counters (root only)\n"
- "\t -V print version and exit\n"
+ "\t -V print version and exit\n")
,prgname,prgname,defaultmap,defaultpro);
exit(1);
}
@@ -73,7 +79,7 @@ FILE *pro;
FILE *map;
int proFd;
char *mapFile, *proFile;
-unsigned int len, add0=0, step, index=0;
+unsigned int len=0, add0=0, step, index=0;
unsigned int *buf, total, fn_len;
unsigned int fn_add, next_add; /* current and next address */
char fn_name[S_LEN], next_name[S_LEN]; /* current and next name */
@@ -86,6 +92,10 @@ int popenMap; /* flag to tell if popen() has been used */
#define next (current^1)
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
prgname=argv[0];
proFile=defaultpro;
mapFile=defaultmap;
@@ -100,7 +110,7 @@ int popenMap; /* flag to tell if popen() has been used */
case 'i': optInfo++; break;
case 'r': optReset++; break;
case 'v': optVerbose++; break;
- case 'V': printf("%s Version %s\n",prgname,RELEASE); exit(0);
+ case 'V': printf(_("%s Version %s\n"),prgname,RELEASE); exit(0);
default: usage();
}
}
@@ -112,7 +122,7 @@ int popenMap; /* flag to tell if popen() has been used */
pro=fopen(defaultpro,"w");
if (!pro)
{perror(proFile); exit(1);}
- fprintf(pro,"anything\n");
+ fprintf(pro,_("anything\n"));
fclose(pro);
exit(0);
}
@@ -141,7 +151,7 @@ int popenMap; /* flag to tell if popen() has been used */
step=buf[0];
if (optInfo)
{
- printf("Sampling_step: %i\n",step);
+ printf(_("Sampling_step: %i\n"),step);
exit(0);
}
@@ -154,7 +164,7 @@ int popenMap; /* flag to tell if popen() has been used */
{
if (sscanf(mapline,"%x %s %s",&fn_add,mode,fn_name)!=3)
{
- fprintf(stderr,"%s: %s(%i): wrong map line\n",
+ fprintf(stderr,_("%s: %s(%i): wrong map line\n"),
prgname,mapFile, maplineno);
exit(1);
}
@@ -167,7 +177,7 @@ int popenMap; /* flag to tell if popen() has been used */
if (!add0)
{
- fprintf(stderr,"%s: can't find \"_stext\" in %s\n",prgname, mapFile);
+ fprintf(stderr,_("%s: can't find \"_stext\" in %s\n"),prgname, mapFile);
exit(1);
}
@@ -180,7 +190,7 @@ int popenMap; /* flag to tell if popen() has been used */
if (sscanf(mapline,"%x %s %s",&next_add,mode,next_name)!=3)
{
- fprintf(stderr,"%s: %s(%i): wrong map line\n",
+ fprintf(stderr,_("%s: %s(%i): wrong map line\n"),
prgname,mapFile, maplineno);
exit(1);
}
@@ -208,7 +218,7 @@ int popenMap; /* flag to tell if popen() has been used */
0,"total",total,total/(double)(fn_add-add0));
else
printf("%6i %-40s %8.4f\n",
- total,"total",total/(double)(fn_add-add0));
+ total,_("total"),total/(double)(fn_add-add0));
popenMap ? pclose(map) : fclose(map);
exit(0);
diff --git a/sys-utils/renice.c b/sys-utils/renice.c
index 8867d0022..6bc83f992 100644
--- a/sys-utils/renice.c
+++ b/sys-utils/renice.c
@@ -31,6 +31,10 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
@@ -38,6 +42,8 @@
#include <stdio.h>
#include <pwd.h>
#include <stdlib.h>
+#include <errno.h>
+#include "nls.h"
int donice(int,int,int);
@@ -52,10 +58,14 @@ main(int argc, char **argv)
int which = PRIO_PROCESS;
int who = 0, prio, errs = 0;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
argc--, argv++;
if (argc < 2) {
- fprintf(stderr, "usage: renice priority [ [ -p ] pids ] ");
- fprintf(stderr, "[ [ -g ] pgrps ] [ [ -u ] users ]\n");
+ fprintf(stderr, _("usage: renice priority [ [ -p ] pids ] "
+ "[ [ -g ] pgrps ] [ [ -u ] users ]\n"));
exit(1);
}
prio = atoi(*argv);
@@ -81,7 +91,7 @@ main(int argc, char **argv)
register struct passwd *pwd = getpwnam(*argv);
if (pwd == NULL) {
- fprintf(stderr, "renice: %s: unknown user\n",
+ fprintf(stderr, _("renice: %s: unknown user\n"),
*argv);
continue;
}
@@ -89,7 +99,7 @@ main(int argc, char **argv)
} else {
who = atoi(*argv);
if (who < 0) {
- fprintf(stderr, "renice: %s: bad value\n",
+ fprintf(stderr, _("renice: %s: bad value\n"),
*argv);
continue;
}
@@ -104,19 +114,18 @@ donice(which, who, prio)
int which, who, prio;
{
int oldprio;
- extern int errno;
errno = 0, oldprio = getpriority(which, who);
if (oldprio == -1 && errno) {
fprintf(stderr, "renice: %d: ", who);
- perror("getpriority");
+ perror(_("getpriority"));
return (1);
}
if (setpriority(which, who, prio) < 0) {
fprintf(stderr, "renice: %d: ", who);
- perror("setpriority");
+ perror(_("setpriority"));
return (1);
}
- printf("%d: old priority %d, new priority %d\n", who, oldprio, prio);
+ printf(_("%d: old priority %d, new priority %d\n"), who, oldprio, prio);
return (0);
}
diff --git a/sys-utils/setsid.c b/sys-utils/setsid.c
index 10f1501d6..7aeb2de89 100644
--- a/sys-utils/setsid.c
+++ b/sys-utils/setsid.c
@@ -2,16 +2,25 @@
* setsid.c -- execute a command in a new session
* Rick Sladkey <jrs@world.std.com>
* In the public domain.
+ *
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
+#include "nls.h"
int main(int argc, char *argv[])
{
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
if (argc < 2) {
- fprintf(stderr, "usage: %s program [arg ...]\n",
+ fprintf(stderr, _("usage: %s program [arg ...]\n"),
argv[0]);
exit(1);
}
diff --git a/sys-utils/tunelp.8 b/sys-utils/tunelp.8
index 8b148f20a..ac01ed400 100644
--- a/sys-utils/tunelp.8
+++ b/sys-utils/tunelp.8
@@ -1,32 +1,47 @@
.\" This file Copyright (C) 1992-1997 Michael K. Johnson <johnsonm@redhat.com>
+.\" This file Copyright (C) 1998 Andrea Arcangeli <andrea@e-mind.com>
.\" It may be distributed under the terms of the GNU General Public License,
.\" version 2, or any higher version. See section COPYING of the GNU General
.\" Public license for conditions under which this file may be redistributed.
-.\" $Id: tunelp.8,v 1.6 1997/06/20 16:10:35 janl Exp $
-.TH tunelp 8 "26 August 1992" "Cohesive Systems" "Linux Programmer's Manual"
+.\"
+.\" Polished a bit - aeb
+.TH tunelp 8 "7 May 1999" "tunelp" "Linux Programmer's Manual"
.SH NAME
tunelp \- set various parameters for the lp device
.SH SYNOPSIS
-\fBtunelp\fP \fI<device>\fP [-i \fI<IRQ>\fP | -t \fI<TIME>\fP | -c \fI<CHARS>\fP | -w \fI<WAIT>\fP | -a [on|off] | -o [on|off] | -C [on|off] | -r | -s | -q [on|off] ]
+\fBtunelp\fP \fI<device>\fP [-i \fI<IRQ>\fP | -t \fI<TIME>\fP | -c \fI<CHARS>\fP | -w \fI<WAIT>\fP | -a [on|off] | -o [on|off] | -C [on|off] | -r | -s | -q [on|off] | - T [on|off] ]
.SH DESCRIPTION
\fBtunelp\fP sets several parameters for the /dev/lp\fI?\fP devices, for better
performance (or for any performance at all, if your printer won't work
-without it...) Without parameters, tells whether the device is using
-interrups, and if so, which one. With parameters, sets the device
+without it...) Without parameters, it tells whether the device is using
+interrupts, and if so, which one. With parameters, it sets the device
characteristics accordingly. The parameters are as follows:
--i \fI<IRQ>\fP is the IRQ to use for the parallel port in question. If this
-is set to something non-zero, -t and -c have no effect. If your port
+.TP
+.BI \-i " <IRQ>"
+specifies the IRQ to use for the parallel port in question. If this
+is set to something non-zero, \-t and \-c have no effect. If your port
does not use interrupts, this option will make printing stop.
+The command
.B tunelp -i 0
restores non-interrupt driven (polling) action, and your printer should
work again. If your parallel port does support interrupts,
interrupt-driven printing should be somewhat faster and efficient, and
-will probably be desireable.
+will probably be desirable.
--t \fI<TIME>\fP is the amount of time in jiffies that the driver waits if the
+NOTE: This option will have no effect with kernel 2.1.131 or later since
+the irq is handled by the parport driver. You can change
+the parport irq for example via
+.IR /proc/parport/*/irq .
+Read
+.I /usr/src/linux/Documentation/parport.txt
+for more details on parport.
+
+.TP
+.BI \-t " <TIME>"
+is the amount of time in jiffies that the driver waits if the
printer doesn't take a character for the number of tries dictated by
-the -c parameter. 10 is the default value. If you want fastest
+the \-c parameter. 10 is the default value. If you want fastest
possible printing, and don't care about system load, you may set this
to 0. If you don't care how fast your printer goes, or are printing
text on a slow printer with a buffer, then 500 (5 seconds) should be
@@ -34,51 +49,105 @@ fine, and will give you very low system load. This value generally
should be lower for printing graphics than text, by a factor of
approximately 10, for best performance.
--c \fI<CHARS>\fP is the number of times to try to output a character to the
-printer before sleeping for -t \fI<TIME>\fP. It is the number of times around
+.TP
+.BI \-c " <CHARS>"
+is the number of times to try to output a character to the
+printer before sleeping for \-t \fI<TIME>\fP. It is the number of times around
a loop that tries to send a character to the printer. 120 appears to
-be a good value for most printers. 250 is the default, because there
-are some printers that require a wait this long, but feel free to
-change this. If you have a very fast printer like an HP laserjet 4, a
-value of 10 might make more sense. If you have a \fIreally\fP old
-printer, you can increase this farther.
+be a good value for most printers in polling mode. 1000 is the default,
+because there are some printers that become jerky otherwise, but you \fImust\fP
+set this to `1' to handle the maximal CPU efficiency if you are using
+interrupts. If you have a very fast printer, a value of 10 might make more
+sense even if in polling mode.
+If you have a \fIreally\fP old printer, you can increase this further.
-Setting -t \fI<TIME>\fP to 0 is equivalent to setting -c \fI<CHARS>\fP
+Setting \-t \fI<TIME>\fP to 0 is equivalent to setting \-c \fI<CHARS>\fP
to infinity.
--w \fI<WAIT>\fP is the a busy loop counter for the strobe signal. While most
-printers appear to be able to deal with an extremely short strobe,
-some printers demand a longer one. Increasing this from the default
-0 may make it possible to print with those printers. This may also
-make it possible to use longer cables.
+.TP
+.BI \-w " <WAIT>"
+is the number of usec we wait while playing with the strobe signal.
+While most printers appear to be able to deal with an extremely
+short strobe, some printers demand a longer one. Increasing this from
+the default 1 may make it possible to print with those printers. This may also
+make it possible to use longer cables. It's also possible to decrease this
+value to 0 if your printer is fast enough or your machine is slow enough.
--a [on|off] This is whether to abort on printer error -- the default
+.TP
+.B \-a [on|off]
+This is whether to abort on printer error - the default
is not to. If you are sitting at your computer, you probably want to
be able to see an error and fix it, and have the printer go on
printing. On the other hand, if you aren't, you might rather that
your printer spooler find out that the printer isn't ready, quit
trying, and send you mail about it. The choice is yours.
--o [on|off] This option is much like -a. It makes any open() of this
-device check to see that the device is on-line and not reporting any
+.TP
+.B \-o [on|off]
+This option is much like \-a. It makes any
+.I open()
+of this device check to see that the device is on-line and not reporting any
out of paper or other errors. This is the correct setting for most
versions of lpd.
--C [on|off] This option adds extra ("careful") error checking. When
+.TP
+.B \-C [on|off]
+This option adds extra ("careful") error checking. When
this option is on, the printer driver will ensure that the printer is
on-line and not reporting any out of paper or other errors before
sending data. This is particularly useful for printers that normally
appear to accept data when turned off.
--s This option returns the current printer status, both as a
+NOTE: This option is obsolete because it's the default in 2.1.131 kernel
+or later.
+
+.TP
+.B \-s
+This option returns the current printer status, both as a
decimal number from 0..255, and as a list of active flags. When
-this option is specified, -q off, turning off the display of the
+this option is specified, \-q off, turning off the display of the
current IRQ, is implied.
--o, -C, and -s all require a Linux kernel version of 1.1.76 or later.
+.TP
+.B \-T [on|off]
+This option tell the lp driver to trust or not the IRQ.
+This option makes sense only if you are using interrupts.
+If you tell the lp driver to trust the irq, then, when the lp driver will
+get an irq, it will send the next pending character to the printer
+unconditionally, even if the printer still claims to be BUSY.
+This is the only way to sleep on interrupt (and so the handle the irq
+printing efficiently) at least on Epson Stylus Color Printers.
+The lp driver automagically detects if you could get improved
+performance by setting this flag, and in such case it will warn you
+with a kernel message.
+
+NOTE: Trusting the irq is reported to corrupt the printing on some hardware,
+you must try to know if your printer will work or not...
--r This option resets the port. It requires a Linux kernel version of
+.TP
+.B \-r
+This option resets the port. It requires a Linux kernel version of
1.1.80 or later.
--q [on|off] This option sets printing the display of the current IRQ
-setting.
+.TP
+.B \-q [on|off]
+This option sets printing the display of the current IRQ setting.
+
+
+.SH NOTES
+\-o, \-C, and \-s all require a Linux kernel version of 1.1.76 or later.
+
+\-C requires a Linux version prior to 2.1.131.
+
+\-T requires a Linux version of 2.1.131 or later.
+
+.SH BUGS
+By some unfortunate coincidence the ioctl LPSTRICT of 2.0.36 has the same
+number as the ioctl LPTRUSTIRQ introduced in 2.1.131. So, use of the \-T option
+on a 2.0.36 kernel with an tunelp compiled under 2.1.131 or later may have
+unexpected effects.
+
+.SH FILES
+.I /dev/lp?
+.br
+.I /proc/parport/*/*
diff --git a/sys-utils/tunelp.c b/sys-utils/tunelp.c
index e3b015ba3..dfb30aa67 100644
--- a/sys-utils/tunelp.c
+++ b/sys-utils/tunelp.c
@@ -42,22 +42,26 @@
* Revision 1.2 1995/01/03 07:33:44 johnsonm
* revisions for lp driver updates in Linux 1.1.76
*
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
+ * 1999-05-07 Merged LPTRUSTIRQ patch by Andrea Arcangeli (1998/11/29), aeb
*
*/
-#include<unistd.h>
-#include<stdio.h>
-#include<fcntl.h>
-/* This is for (some) 2.1 kernels */
-#define LP_NEED_CAREFUL
-#include<linux/lp.h>
-#include<linux/fs.h>
-#include<sys/ioctl.h>
-#include<sys/stat.h>
-#include<sys/types.h>
-#include<malloc.h>
-#include<string.h>
-#include<errno.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fcntl.h>
+/* #include <linux/fs.h> */
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <malloc.h>
+#include <string.h>
+#include <errno.h>
+#include "lp.h"
+#include "nls.h"
+#include "../version.h"
struct command {
long op;
@@ -69,19 +73,23 @@ struct command {
void print_usage(char *progname) {
- printf("Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
- " -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s ]\n", progname);
+ printf(_("Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n"
+ " -a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s | \n"
+ " -T [on|off] ]\n"),
+ progname);
exit (1);
}
-
+void print_version(char *progname) {
+ printf("%s %s\n", progname, UTIL_LINUX_VERSION);
+}
void *mylloc(long size) {
void *ptr;
if(!(ptr = (void*)malloc(size))) {
- perror("malloc error");
+ perror(_("malloc error"));
exit(2);
}
return ptr;
@@ -92,7 +100,7 @@ void *mylloc(long size) {
long get_val(char *val) {
long ret;
if (!(sscanf(val, "%ld", &ret) == 1)) {
- perror("sscanf error");
+ perror(_("sscanf error"));
exit(3);
}
return ret;
@@ -114,33 +122,14 @@ int main (int argc, char ** argv) {
struct stat statbuf;
struct command *cmds, *cmdst;
-
progname = argv[0];
if (argc < 2) print_usage(progname);
- filename = strdup(argv[1]);
- fd = open(filename, O_WRONLY|O_NONBLOCK, 0);
- /* Need to open O_NONBLOCK in case ABORTOPEN is already set and
- printer is off or off-line or in an error condition. Otherwise
- we would abort... */
- if (fd < 0) {
- perror(argv[1]);
- return -1;
- }
-
- fstat(fd, &statbuf);
-
- if((!S_ISCHR(statbuf.st_mode)) || (MAJOR(statbuf.st_rdev) != 6 )
- || (MINOR(statbuf.st_rdev) > 3)) {
- printf("%s: %s not an lp device.\n", argv[0], argv[1]);
- print_usage(progname);
- }
-
cmdst = cmds = mylloc(sizeof(struct command));
cmds->next = 0;
show_irq = 1;
- while ((c = getopt(argc, argv, "t:c:w:a:i:ho:C:sq:r")) != EOF) {
+ while ((c = getopt(argc, argv, "t:c:w:a:i:ho:C:sq:rT:vV")) != EOF) {
switch (c) {
case 'h':
print_usage(progname);
@@ -210,10 +199,44 @@ int main (int argc, char ** argv) {
cmds = cmds->next; cmds->next = 0;
break;
#endif
- default: print_usage(progname);
+#ifdef LPTRUSTIRQ
+ case 'T':
+ /* Note: this will do the wrong thing on 2.0.36 when compiled under 2.2.x */
+ cmds->op = LPTRUSTIRQ;
+ cmds->val = get_onoff(optarg);
+ cmds->next = mylloc(sizeof(struct command));
+ cmds = cmds->next; cmds->next = 0;
+ break;
+#endif
+ case 'v':
+ case 'V':
+ print_version(progname);
+ exit(0);
+ default:
+ print_usage(progname);
}
}
+ if (optind != argc-1)
+ print_usage(progname);
+
+ filename = strdup(argv[optind]);
+ fd = open(filename, O_WRONLY|O_NONBLOCK, 0);
+ /* Need to open O_NONBLOCK in case ABORTOPEN is already set and
+ printer is off or off-line or in an error condition. Otherwise
+ we would abort... */
+ if (fd < 0) {
+ perror(filename);
+ return -1;
+ }
+
+ fstat(fd, &statbuf);
+
+ if(!S_ISCHR(statbuf.st_mode)) {
+ printf(_("%s: %s not an lp device.\n"), argv[0], filename);
+ print_usage(progname);
+ }
+
/* Allow for binaries compiled under a new kernel to work on the old ones */
/* The irq argument to ioctl isn't touched by the old kernels, but we don't */
/* want to cause the kernel to complain if we are using a new kernel */
@@ -231,12 +254,12 @@ int main (int argc, char ** argv) {
else {
if (status == 0xdeadbeef) /* a few 1.1.7x kernels will do this */
status = retval;
- printf("%s status is %d", filename, status);
- if (!(status & LP_PBUSY)) printf(", busy");
- if (!(status & LP_PACK)) printf(", ready");
- if ((status & LP_POUTPA)) printf(", out of paper");
- if ((status & LP_PSELECD)) printf(", on-line");
- if (!(status & LP_PERRORP)) printf(", error");
+ printf(_("%s status is %d"), filename, status);
+ if (!(status & LP_PBUSY)) printf(_(", busy"));
+ if (!(status & LP_PACK)) printf(_(", ready"));
+ if ((status & LP_POUTPA)) printf(_(", out of paper"));
+ if ((status & LP_PSELECD)) printf(_(", on-line"));
+ if (!(status & LP_PERRORP)) printf(_(", error"));
printf("\n");
}
} else
@@ -253,15 +276,15 @@ int main (int argc, char ** argv) {
irq = 0xdeadbeef;
retval = ioctl(fd, LPGETIRQ - offset, &irq);
if (retval == -1) {
- perror("LPGETIRQ error");
+ perror(_("LPGETIRQ error"));
exit(4);
}
if (irq == 0xdeadbeef) /* up to 1.1.77 will do this */
irq = retval;
if (irq)
- printf("%s using IRQ %d\n", filename, irq);
+ printf(_("%s using IRQ %d\n"), filename, irq);
else
- printf("%s using polling\n", filename);
+ printf(_("%s using polling\n"), filename);
}
close(fd);
diff --git a/text-utils/Makefile b/text-utils/Makefile
index 686418d61..66fda287e 100644
--- a/text-utils/Makefile
+++ b/text-utils/Makefile
@@ -3,38 +3,50 @@
# Revised: Mon Aug 19 20:11:15 1996 by faith@cs.unc.edu
# Copyright 1992, 1993, 1994, 1995 Rickard E. Faith (faith@cs.unc.edu)
#
-
+include ../make_include
include ../MCONFIG
# Where to put man pages?
-MAN1= col.1 colcrt.1 colrm.1 column.1 hexdump.1 more.1 rev.1 \
- ul.1
+MAN1= col.1 colcrt.1 colrm.1 column.1 hexdump.1 more.1 rev.1
# Where to put binaries?
# See the "install" rule for the links. . .
BIN= more
-USRBIN= col colcrt colrm column hexdump rev ul
+USRBIN= col colcrt colrm column hexdump rev
+
+ifeq "$(HAVE_NCURSES)" "yes"
+USRBIN:=$(USRBIN) ul
+MAN1:=$(MAN1) ul.1
+endif
# Where to put datebase files?
USRLIB= more.help
+all: $(BIN) $(USRBIN)
+
# Programs requiring special compilation
-NEEDS_NCURSES= more ul
+NEEDS_NCURSES= ul
-all: $(BIN) $(USRBIN)
+ifeq "$(HAVE_TERMCAP)" "no"
+NEEDS_NCURSES:=$(NEEDS_NCURSES) more
+else
+more:
+ $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBTERMCAP)
+endif
$(NEEDS_NCURSES):
ifeq "$(HAVE_NCURSES)" "yes"
- $(CC) $(LDFLAGS) $^ -o $@ $(LIBCURSES)
+ $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBCURSES)
else
@echo $@ not made since it requires ncurses
endif
+
# Rules for hexdump
hexdump: hexdump.o conv.o display.o hexsyntax.o odsyntax.o parse.o
@@ -51,11 +63,11 @@ col: col.o
colcrt: colcrt.o
colrm: colrm.o
column: column.o $(ERR_O)
+more: more.o
more.o: more.c $(LIB)/pathnames.h
rev: rev.o
ifeq "$(HAVE_NCURSES)" "yes"
-more: more.o
ul: ul.o
endif
diff --git a/text-utils/col.c b/text-utils/col.c
index 1cbaeb5b1..f08f51ad8 100644
--- a/text-utils/col.c
+++ b/text-utils/col.c
@@ -37,6 +37,9 @@
* patches from Andries.Brouwer@cwi.nl
* Wed Sep 14 22:31:17 1994: patches from Carl Christofferson
* (cchris@connected.com)
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <stdlib.h>
@@ -46,6 +49,7 @@
#include <string.h>
#include <stdio.h>
#include <unistd.h>
+#include "nls.h"
#include <locale.h>
#define BS '\b' /* backspace */
@@ -123,9 +127,10 @@ int main(int argc, char **argv)
int nflushd_lines; /* number of lines that were flushed */
int adjust, opt, warned;
- /* we discard characters that do not pass isgraph() */
- setlocale(LC_CTYPE, "");
-
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
max_bufd_lines = 128;
compress_spaces = 1; /* compress spaces into tabs */
while ((opt = getopt(argc, argv, "bfhl:x")) != EOF)
@@ -142,7 +147,7 @@ int main(int argc, char **argv)
case 'l': /* buffered line count */
if ((max_bufd_lines = atoi(optarg)) <= 0) {
(void)fprintf(stderr,
- "col: bad -l argument %s.\n", optarg);
+ _("col: bad -l argument %s.\n"), optarg);
exit(1);
}
break;
@@ -503,19 +508,19 @@ xmalloc(void *p, size_t size)
void usage()
{
- (void)fprintf(stderr, "usage: col [-bfx] [-l nline]\n");
+ (void)fprintf(stderr, _("usage: col [-bfx] [-l nline]\n"));
exit(1);
}
void wrerr()
{
- (void)fprintf(stderr, "col: write error.\n");
+ (void)fprintf(stderr, _("col: write error.\n"));
exit(1);
}
void warn(int line)
{
(void)fprintf(stderr,
- "col: warning: can't back up %s.\n", line < 0 ?
- "past first line" : "-- line already flushed");
+ _("col: warning: can't back up %s.\n"), line < 0 ?
+ _("past first line") : _("-- line already flushed"));
}
diff --git a/text-utils/colcrt.c b/text-utils/colcrt.c
index f21f76927..1620c2737 100644
--- a/text-utils/colcrt.c
+++ b/text-utils/colcrt.c
@@ -31,9 +31,14 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <stdio.h>
#include <unistd.h> /* for close() */
#include <string.h>
+#include "nls.h"
int plus(char c, char d);
void move(int l, int m);
@@ -70,6 +75,10 @@ main(int argc, char **argv)
int c;
char *cp, *dp;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
argc--;
progname = *argv++;
while (argc > 0 && argv[0][0] == '-') {
@@ -81,7 +90,7 @@ main(int argc, char **argv)
printall = 1;
break;
default:
- printf("usage: %s [ - ] [ -2 ] [ file ... ]\n", progname);
+ printf(_("usage: %s [ - ] [ -2 ] [ file ... ]\n"), progname);
fflush(stdout);
exit(1);
}
diff --git a/text-utils/colrm.c b/text-utils/colrm.c
index f189e25d2..b17b8fb32 100644
--- a/text-utils/colrm.c
+++ b/text-utils/colrm.c
@@ -31,6 +31,10 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <stdio.h>
/*
diff --git a/text-utils/column.c b/text-utils/column.c
index 4ae9522ef..21236b2c8 100644
--- a/text-utils/column.c
+++ b/text-utils/column.c
@@ -30,6 +30,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
+/* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
#include <sys/types.h>
#include <sys/ioctl.h>
@@ -41,6 +45,7 @@
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
+#include "nls.h"
void c_columnate __P((void));
void *emalloc __P((int));
@@ -74,6 +79,9 @@ main(argc, argv)
extern char *__progname;
__progname = argv[0];
#endif
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
if (ioctl(1, TIOCGWINSZ, &win) == -1 || !win.ws_col) {
if ((p = getenv("COLUMNS")) != NULL)
@@ -265,7 +273,7 @@ input(fp)
if (!*p)
continue;
if (!(p = strchr(p, '\n'))) {
- warnx("line too long");
+ warnx(_("line too long"));
eval = 1;
continue;
}
@@ -300,6 +308,6 @@ usage()
{
(void)fprintf(stderr,
- "usage: column [-tx] [-c columns] [file ...]\n");
+ _("usage: column [-tx] [-c columns] [file ...]\n"));
exit(1);
}
diff --git a/text-utils/hexdump.c b/text-utils/hexdump.c
index 2b3b1bf70..a2be19038 100644
--- a/text-utils/hexdump.c
+++ b/text-utils/hexdump.c
@@ -31,9 +31,14 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <sys/types.h>
#include <stdio.h>
#include "hexdump.h"
+#include "nls.h"
FS *fshead; /* head of format strings */
int blocksize; /* data block size */
@@ -47,6 +52,10 @@ int main(argc, argv)
register FS *tfs;
char *p, *rindex();
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
if (!(p = rindex(argv[0], 'o')) || strcmp(p, "od"))
newsyntax(argc, &argv);
else
diff --git a/text-utils/hexsyntax.c b/text-utils/hexsyntax.c
index 136716011..e376b0664 100644
--- a/text-utils/hexsyntax.c
+++ b/text-utils/hexsyntax.c
@@ -31,11 +31,16 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include "hexdump.h"
+#include "nls.h"
off_t skip; /* bytes to skip */
@@ -72,7 +77,7 @@ void newsyntax(int argc, char ***argvp)
case 'n':
if ((length = atoi(optarg)) < 0) {
(void)fprintf(stderr,
- "hexdump: bad length value.\n");
+ _("hexdump: bad length value.\n"));
exit(1);
}
break;
@@ -83,7 +88,7 @@ void newsyntax(int argc, char ***argvp)
case 's':
if ((skip = strtol(optarg, &p, 0)) < 0) {
(void)fprintf(stderr,
- "hexdump: bad skip value.\n");
+ _("hexdump: bad skip value.\n"));
exit(1);
}
switch(*p) {
@@ -121,6 +126,6 @@ void newsyntax(int argc, char ***argvp)
void usage()
{
(void)fprintf(stderr,
-"hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n");
+_("hexdump: [-bcdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n"));
exit(1);
}
diff --git a/text-utils/more.c b/text-utils/more.c
index 24045472d..4c2a179b6 100644
--- a/text-utils/more.c
+++ b/text-utils/more.c
@@ -26,12 +26,22 @@
** on linux/axp.
** modified by Kars de Jong <jongk@cs.utwente.nl> to use terminfo instead
** of termcap.
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+ 1999-03-19 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ - more nls translatable strings
+ 1999-05-09 aeb - applied a RedHat patch (setjmp->sigsetjmp); without it
+ a second ^Z would fail.
+ 1999-05-09 aeb - undone Kars' work, so that more works without libcurses
+ (and hence can be in /bin with libcurses being in /usr/lib which may not
+ be mounted). However, when termcap is not present curses can still be used.
*/
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h> /* for alloca() */
+#include <stdarg.h> /* for va_start() etc */
#include <sys/param.h>
#include <ctype.h>
#include <signal.h>
@@ -43,13 +53,8 @@
#include <sys/file.h>
#include <sys/wait.h>
#include <a.out.h>
-#if NCH
-#include <ncurses.h>
-#else
-#include <curses.h>
-#endif
-#include <term.h>
#include <locale.h>
+#include "nls.h"
#define HELPFILE "/usr/lib/more.help"
#define VI "/usr/bin/vi"
@@ -72,7 +77,7 @@ void home(void);
void error (char *mess);
void do_shell (char *filename);
int colon (char *filename, int cmd, int nlines);
-int expand (char *outbuf, char *inbuf);
+int expand (char **outbuf, char *inbuf);
void argscan(char *s);
void rdline (register FILE *f);
void copy_file(register FILE *f);
@@ -132,7 +137,7 @@ int nfiles; /* Number of files left to process */
char *shell; /* The name of the shell to use */
int shellp; /* A previous shell command exists */
char ch;
-jmp_buf restore;
+sigjmp_buf restore;
char Line[LINSIZ]; /* Line buffer */
int Lpp = 24; /* lines per page */
char *Clear; /* clear screen */
@@ -156,7 +161,90 @@ static int magic();
struct {
long chrctr, line;
} context, screen_start;
-/* extern */ char PC; /* pad character */
+extern char PC; /* pad character */
+
+#ifndef HAVE_termcap
+#define USE_CURSES
+#endif
+
+#ifdef USE_CURSES
+
+#if NCH
+#include <ncurses.h>
+#else
+#include <curses.h>
+#endif
+#include <term.h> /* include after <curses.h> */
+
+void
+my_putstring(char *s) {
+ putp(s);
+}
+
+void
+my_setupterm(const char *term, int fildes, int *errret) {
+ setupterm(term, fildes, errret);
+}
+
+int
+my_tgetnum(char *s, char *ss) {
+ return tigetnum(ss);
+}
+
+int
+my_tgetflag(char *s, char *ss) {
+ return tigetflag(ss);
+}
+
+char *
+my_tgetstr(char *s, char *ss) {
+ return tigetstr(ss);
+}
+
+char *
+my_tgoto(const char *cap, int col, int row) {
+ return tparm(cap, col, row);
+}
+
+#else /* no CURSES */
+#include <termcap.h>
+
+char termbuffer[4096];
+char tcbuffer[4096];
+char *strbuf = termbuffer;
+
+void
+my_putstring(char *s) {
+ tputs (s, 1, putchar);
+}
+
+void
+my_setupterm(const char *term, int fildes, int *errret) {
+ *errret = tgetent(tcbuffer, term);
+}
+
+int
+my_tgetnum(char *s, char *ss) {
+ return tgetnum(s);
+}
+
+int
+my_tgetflag(char *s, char *ss) {
+ return tgetflag(s);
+}
+
+char *
+my_tgetstr(char *s, char *ss) {
+ return tgetstr(s, &strbuf);
+}
+
+char *
+my_tgoto(const char *cap, int col, int row) {
+ return tgoto(cap, col, row);
+}
+
+
+#endif /* USE_CURSES */
void
idummy(int *kk) {}
@@ -178,6 +266,10 @@ int main(int argc, char **argv) {
char initbuf[80];
FILE *checkf();
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
/* avoid gcc complaints about register variables that
may be clobbered by a longjmp, by forcing our variables here
to be non-register */
@@ -231,12 +323,10 @@ int main(int argc, char **argv) {
if (nfiles > 1)
prnames++;
if (!no_intty && nfiles == 0) {
- char *rindex();
-
- p = rindex(argv[0], '/');
- fputs("usage: ",stderr);
- fputs(p ? p + 1 : argv[0],stderr);
- fputs(" [-dfln] [+linenum | +/pattern] name1 name2 ...\n",stderr);
+ p = strrchr(argv[0], '/');
+ fprintf(stderr,
+ _("usage: %s [-dfln] [+linenum | +/pattern] name1 name2 ...\n"),
+ p ? p + 1 : argv[0]);
exit(1);
}
else
@@ -287,7 +377,7 @@ int main(int argc, char **argv) {
if ((f = checkf (fnames[fnum], &clearit)) != NULL) {
context.line = context.chrctr = 0;
Currline = 0;
- if (firstf) setjmp (restore);
+ if (firstf) sigsetjmp (restore, 1);
if (firstf) {
firstf = 0;
if (srchopt) {
@@ -299,7 +389,7 @@ int main(int argc, char **argv) {
skiplns (initline, f);
}
else if (fnum < nfiles && !no_tty) {
- setjmp (restore);
+ sigsetjmp (restore, 1);
left = command (fnames[fnum], f);
}
if (left != 0) {
@@ -333,7 +423,7 @@ int main(int argc, char **argv) {
within = 0;
}
}
- setjmp (restore);
+ sigsetjmp (restore, 1);
fflush(stdout);
fclose(f);
screen_start.line = screen_start.chrctr = 0L;
@@ -410,7 +500,7 @@ checkf (fs, clearfirst)
return((FILE *)NULL);
}
if ((stbuf.st_mode & S_IFMT) == S_IFDIR) {
- xprintf("\n*** %s: directory ***\n\n", fs);
+ xprintf(_("\n*** %s: directory ***\n\n"), fs);
return((FILE *)NULL);
}
if ((f = Fopen(fs, "r")) == NULL) {
@@ -449,7 +539,7 @@ magic(f, fs)
case 0411:
case 0177545:
case 0x457f: /* simple ELF detection */
- xprintf("\n******** %s: Not a text file ********\n\n", fs);
+ xprintf(_("\n******** %s: Not a text file ********\n\n"), fs);
(void)fclose(f);
return(1);
}
@@ -504,7 +594,7 @@ void screen (register FILE *f, register int num_lines)
num_lines--;
}
if (pstate) {
- putp (ULexit);
+ my_putstring (ULexit);
pstate = 0;
}
fflush(stdout);
@@ -518,7 +608,7 @@ void screen (register FILE *f, register int num_lines)
if (Pause && clreol)
clreos ();
Ungetc (c, f);
- setjmp (restore);
+ sigsetjmp (restore, 1);
Pause = 0; startup = 0;
if ((num_lines = command (NULL, f)) == 0)
return;
@@ -547,13 +637,13 @@ void onquit()
putchar ('\n');
if (!startup) {
signal(SIGQUIT, onquit);
- longjmp (restore, 1);
+ siglongjmp (restore, 1);
}
else
Pause++;
}
else if (!dum_opt && notell) {
- errwrite("[Use q or Q to quit]");
+ errwrite(_("[Use q or Q to quit]"));
promptlen += 20;
notell = 0;
}
@@ -734,23 +824,23 @@ char *filename;
if (!hard) {
promptlen = 8;
if (Senter && Sexit) {
- putp (Senter);
+ my_putstring (Senter);
promptlen += (2 * soglitch);
}
if (clreol)
cleareol ();
- pr("--More--");
+ pr(_("--More--"));
if (filename != NULL) {
- promptlen += xprintf ("(Next file: %s)", filename);
+ promptlen += xprintf (_("(Next file: %s)"), filename);
}
else if (!no_intty) {
promptlen += xprintf ("(%d%%)", (int)((file_pos * 100) / file_size));
}
if (dum_opt) {
- promptlen += pr("[Press space to continue, 'q' to quit.]");
+ promptlen += pr(_("[Press space to continue, 'q' to quit.]"));
}
if (Senter && Sexit)
- putp (Sexit);
+ my_putstring (Sexit);
if (clreol)
clreos ();
fflush(stdout);
@@ -797,7 +887,7 @@ int get_line(register FILE *f, int *length)
if (!hardtabs || (column < promptlen && !hard)) {
if (hardtabs && eraseln && !dumb) {
column = 1 + (column | 7);
- putp (eraseln);
+ my_putstring (eraseln);
promptlen = 0;
}
else {
@@ -866,7 +956,7 @@ void erasep (register int col)
if (col == 0)
putchar ('\r');
if (!dumb && eraseln)
- putp (eraseln);
+ my_putstring (eraseln);
else
for (col = promptlen - col; col > 0; col--)
putchar (' ');
@@ -890,12 +980,12 @@ void kill_line ()
*/
void cleareol()
{
- putp(eraseln);
+ my_putstring(eraseln);
}
void clreos()
{
- putp(EodClr);
+ my_putstring(EodClr);
}
/*
@@ -939,13 +1029,13 @@ void prbuf (register char *s, register int n)
if (c == ' ' && state == 0 && ulglitch && wouldul(s, n-1))
state = 1;
else
- putp(state ? ULenter : ULexit);
+ my_putstring(state ? ULenter : ULexit);
}
if (c != ' ' || pstate == 0 || state != 0 || ulglitch == 0)
putchar(c);
if (state && *chUL) {
pr(chBS);
- putp(chUL);
+ my_putstring(chUL);
}
pstate = state;
}
@@ -958,7 +1048,7 @@ void
doclear()
{
if (Clear && !hard) {
- putp(Clear);
+ my_putstring(Clear);
/* Put out carriage return so that system doesn't
** get confused by escape sequences when expanding tabs
@@ -974,12 +1064,12 @@ doclear()
void
home()
{
- putp(Home);
+ my_putstring(Home);
}
static int lastcmd, lastarg, lastp;
static int lastcolon;
-char shell_line[132];
+char shell_line[1000];
/*
** Read a command and do it. A command consists of an optional integer
@@ -1017,7 +1107,7 @@ int command (char *filename, register FILE *f)
}
lastcmd = comchar;
lastarg = nlines;
- if (comchar == otty.c_cc[VERASE]) {
+ if ((cc_t) comchar == otty.c_cc[VERASE]) {
kill_line ();
prompt (filename);
continue;
@@ -1045,7 +1135,7 @@ int command (char *filename, register FILE *f)
xprintf ("\n");
if (clreol)
cleareol ();
- xprintf ("...back %d page", nlines);
+ xprintf (_("...back %d page"), nlines);
if (nlines > 1)
pr ("s\n");
else
@@ -1091,7 +1181,7 @@ int command (char *filename, register FILE *f)
xprintf ("\n");
if (clreol)
cleareol ();
- xprintf ("...skipping %d line", nlines);
+ xprintf (_("...skipping %d line"), nlines);
if (nlines > 1)
pr ("s\n");
else
@@ -1132,7 +1222,7 @@ int command (char *filename, register FILE *f)
case '\'':
if (!no_intty) {
kill_line ();
- pr ("\n***Back***\n\n");
+ pr (_("\n***Back***\n\n"));
Fseek (f, context.chrctr);
Currline = context.line;
ret (dlines);
@@ -1170,7 +1260,7 @@ int command (char *filename, register FILE *f)
case '?':
case 'h':
if ((helpf = fopen (HELPFILE, "r")) == NULL)
- error ("Can't open help file");
+ error (_("Can't open help file"));
if (noscroll) doclear ();
copy_file (helpf);
fclose (helpf);
@@ -1190,12 +1280,12 @@ int command (char *filename, register FILE *f)
if (dum_opt) {
kill_line ();
if (Senter && Sexit) {
- putp (Senter);
- promptlen = pr ("[Press 'h' for instructions.]") + (2 * soglitch);
- putp (Sexit);
+ my_putstring (Senter);
+ promptlen = pr (_("[Press 'h' for instructions.]")) + (2 * soglitch);
+ my_putstring (Sexit);
}
else
- promptlen = pr ("[Press 'h' for instructions.]");
+ promptlen = pr (_("[Press 'h' for instructions.]"));
fflush (stdout);
}
else
@@ -1230,9 +1320,9 @@ int colon (char *filename, int cmd, int nlines)
case 'f':
kill_line ();
if (!no_intty)
- promptlen = xprintf ("\"%s\" line %d", fnames[fnum], Currline);
+ promptlen = xprintf (_("\"%s\" line %d"), fnames[fnum], Currline);
else
- promptlen = xprintf ("[Not a file] line %d", Currline);
+ promptlen = xprintf (_("[Not a file] line %d"), Currline);
fflush (stdout);
return (-1);
case 'n':
@@ -1282,7 +1372,7 @@ int number(char *cmd)
ch = readch ();
if (isdigit(ch))
i = i*10 + ch - '0';
- else if (ch == otty.c_cc[VKILL])
+ else if ((cc_t) ch == otty.c_cc[VKILL])
i = 0;
else {
*cmd = ch;
@@ -1294,7 +1384,9 @@ int number(char *cmd)
void do_shell (char *filename)
{
- char cmdbuf[80];
+ char cmdbuf[200];
+ int rc;
+ char *expanded;
kill_line ();
pr ("!");
@@ -1304,7 +1396,20 @@ void do_shell (char *filename)
pr (shell_line);
else {
ttyin (cmdbuf, sizeof(cmdbuf)-2, '!');
- if (expand (shell_line, cmdbuf)) {
+ expanded = 0;
+ rc = expand (&expanded, cmdbuf);
+ if (expanded) {
+ if (strlen(expanded) < sizeof(shell_line))
+ strcpy(shell_line, expanded);
+ else
+ rc = -1;
+ free(expanded);
+ }
+ if (rc < 0) {
+ errwrite(_(" Overflow\n"));
+ prompt (filename);
+ return;
+ } else if (rc > 0) {
kill_line ();
promptlen = xprintf ("!%s", shell_line);
}
@@ -1348,7 +1453,7 @@ void search(char buf[], FILE *file, register int n)
pr ("\n");
if (clreol)
cleareol ();
- pr("...skipping\n");
+ pr(_("...skipping\n"));
}
if (!no_intty) {
Currline -= (lncount >= 3 ? 3 : lncount);
@@ -1378,7 +1483,7 @@ void search(char buf[], FILE *file, register int n)
break;
}
} else if (rv == -1)
- error ("Regular expression botch");
+ error (_("Regular expression botch"));
}
if (feof (file)) {
if (!no_intty) {
@@ -1390,10 +1495,10 @@ void search(char buf[], FILE *file, register int n)
Fseek (file, startline);
}
else {
- pr ("\nPattern not found\n");
+ pr (_("\nPattern not found\n"));
end_it ();
}
- error ("Pattern not found");
+ error (_("Pattern not found"));
}
}
@@ -1418,14 +1523,13 @@ void execute (char * filename, char * cmd, ...)
}
va_start(argp, cmd);
-
arg = va_arg(argp, char *);
argcount = 0;
while (arg) {
argcount++;
arg = va_arg(argp, char *);
}
- va_end(argp); /* balance {}'s for some UNIX's */
+ va_end(argp);
args = alloca(sizeof(char *) * (argcount + 1));
args[argcount] = NULL;
@@ -1438,10 +1542,10 @@ void execute (char * filename, char * cmd, ...)
argcount++;
arg = va_arg(argp, char *);
}
- va_end(argp); /* balance {}'s for some UNIX's */
+ va_end(argp);
execv (cmd, args);
- errwrite("exec failed\n");
+ errwrite(_("exec failed\n"));
exit (1);
}
if (id > 0) {
@@ -1455,7 +1559,7 @@ void execute (char * filename, char * cmd, ...)
if (catch_susp)
signal(SIGTSTP, onsusp);
} else
- errwrite("can't fork\n");
+ errwrite(_("can't fork\n"));
set_tty ();
pr ("------------------------\n");
prompt (filename);
@@ -1494,12 +1598,12 @@ void skipf (register int nskip)
fnum += nskip;
if (fnum < 0)
fnum = 0;
- pr ("\n...Skipping ");
+ pr (_("\n...Skipping "));
pr ("\n");
if (clreol)
cleareol ();
- pr ("...Skipping ");
- pr (nskip > 0 ? "to file " : "back to file ");
+ pr (_("...Skipping "));
+ pr (nskip > 0 ? _("to file ") : _("back to file "));
pr (fnames[fnum]);
pr ("\n");
if (clreol)
@@ -1544,7 +1648,7 @@ retry:
if ((term = getenv("TERM")) == 0) {
dumb++; ul_opt = 0;
}
- setupterm(term, 1, &ret);
+ my_setupterm(term, 1, &ret);
if (ret <= 0) {
dumb++; ul_opt = 0;
}
@@ -1552,35 +1656,35 @@ retry:
#ifdef TIOCGWINSZ
if (ioctl(fileno(stdout), TIOCGWINSZ, &win) < 0) {
#endif
- Lpp = tigetnum("lines");
- Mcol = tigetnum("cols");
+ Lpp = my_tgetnum("li","lines");
+ Mcol = my_tgetnum("co","cols");
#ifdef TIOCGWINSZ
} else {
if ((Lpp = win.ws_row) == 0)
- Lpp = tigetnum("lines");
+ Lpp = my_tgetnum("li","lines");
if ((Mcol = win.ws_col) == 0)
- Mcol = tigetnum("cols");
+ Mcol = my_tgetnum("co","cols");
}
#endif
- if ((Lpp <= 0) || tigetflag("hc")) {
+ if ((Lpp <= 0) || my_tgetflag("hc","hc")) {
hard++; /* Hard copy terminal */
Lpp = 24;
}
- if (tigetflag("xenl"))
+ if (my_tgetflag("xn","xenl"))
eatnl++; /* Eat newline at last column + 1; dec, concept */
if (Mcol <= 0)
Mcol = 80;
if (tailequ (fnames[0], "page"))
noscroll++;
- Wrap = tigetflag("am");
- bad_so = tigetflag ("xhp");
- eraseln = tigetstr("el");
- Clear = tigetstr("clear");
- Senter = tigetstr("smso");
- Sexit = tigetstr("rmso");
- if ((soglitch = tigetnum("xmc")) < 0)
+ Wrap = my_tgetflag("am","am");
+ bad_so = my_tgetflag ("xs","xhp");
+ eraseln = my_tgetstr("ce","el");
+ Clear = my_tgetstr("cl","clear");
+ Senter = my_tgetstr("co","smso");
+ Sexit = my_tgetstr("se","rmso");
+ if ((soglitch = my_tgetnum("sg","xmc")) < 0)
soglitch = 0;
/*
@@ -1591,12 +1695,12 @@ retry:
* isn't available, settle for standout sequence.
*/
- if (tigetflag("ul") || tigetflag("os"))
+ if (my_tgetflag("ul","ul") || my_tgetflag("os","os"))
ul_opt = 0;
- if ((chUL = tigetstr("uc")) == NULL )
+ if ((chUL = my_tgetstr("uc","uc")) == NULL )
chUL = "";
- if (((ULenter = tigetstr("smul")) == NULL ||
- (ULexit = tigetstr("rmul")) == NULL) && !*chUL) {
+ if (((ULenter = my_tgetstr("us","smul")) == NULL ||
+ (ULexit = my_tgetstr("ue","rmul")) == NULL) && !*chUL) {
if ((ULenter = Senter) == NULL || (ULexit = Sexit) == NULL) {
ULenter = "";
ULexit = "";
@@ -1606,18 +1710,20 @@ retry:
ulglitch = 0;
}
- if ((padstr = tigetstr("pad")) != NULL)
+ if ((padstr = my_tgetstr("pc","pad")) != NULL)
PC = *padstr;
- Home = tigetstr("home");
+ Home = my_tgetstr("ho","home");
if (Home == 0 || *Home == '\0')
{
- if ((cursorm = tigetstr("cup")) != NULL) {
- strcpy(cursorhome, (const char *)tparm(cursorm, 0, 0));
+ if ((cursorm = my_tgetstr("cm","cup")) != NULL) {
+ const char *t = (const char *)my_tgoto(cursorm, 0, 0);
+ strncpy(cursorhome, t, sizeof(cursorhome));
+ cursorhome[sizeof(cursorhome)-1] = 0;
Home = cursorhome;
}
}
- EodClr = tigetstr("ed");
- if ((chBS = tigetstr("cub1")) == NULL)
+ EodClr = my_tgetstr("cd","ed");
+ if ((chBS = my_tgetstr("le","cub1")) == NULL)
chBS = "\b";
}
@@ -1676,7 +1782,7 @@ void ttyin (char buf[], register int nmax, char pchar)
if (ch == '\\') {
slash++;
}
- else if ((ch == otty.c_cc[VERASE]) && !slash) {
+ else if (((cc_t) ch == otty.c_cc[VERASE]) && !slash) {
if (sptr > buf) {
--promptlen;
ERASEONECHAR
@@ -1689,10 +1795,10 @@ void ttyin (char buf[], register int nmax, char pchar)
}
else {
if (!eraseln) promptlen = maxlen;
- longjmp (restore, 1);
+ siglongjmp (restore, 1);
}
}
- else if ((ch == otty.c_cc[VKILL]) && !slash) {
+ else if (((cc_t) ch == otty.c_cc[VKILL]) && !slash) {
if (hard) {
show (ch);
putchar ('\n');
@@ -1712,7 +1818,8 @@ void ttyin (char buf[], register int nmax, char pchar)
fflush (stdout);
continue;
}
- if (slash && (ch == otty.c_cc[VKILL] || ch == otty.c_cc[VERASE])) {
+ if (slash && ((cc_t) ch == otty.c_cc[VKILL]
+ || (cc_t) ch == otty.c_cc[VERASE])) {
ERASEONECHAR
--sptr;
}
@@ -1735,33 +1842,51 @@ void ttyin (char buf[], register int nmax, char pchar)
*--sptr = '\0';
if (!eraseln) promptlen = maxlen;
if (sptr - buf >= nmax - 1)
- error ("Line too long");
+ error (_("Line too long"));
}
-int expand (char *outbuf, char *inbuf)
+/* return: 0 - unchanged, 1 - changed, -1 - overflow (unchanged) */
+int expand (char **outbuf, char *inbuf)
{
- register char *instr;
- register char *outstr;
- register char ch;
- char temp[200];
+ char *instr;
+ char *outstr;
+ char ch;
+ char *temp;
int changed = 0;
-
+ int tempsz, xtra, offset;
+
+ xtra = strlen (fnames[fnum]) + strlen (shell_line) + 1;
+ tempsz = 200 + xtra;
+ temp = malloc(tempsz);
+ if (!temp) {
+ error (_("Out of memory"));
+ return -1;
+ }
instr = inbuf;
outstr = temp;
- while ((ch = *instr++) != '\0')
+ while ((ch = *instr++) != '\0'){
+ offset = outstr-temp;
+ if (tempsz-offset-1 < xtra) {
+ tempsz += 200 + xtra;
+ temp = realloc(temp, tempsz);
+ if (!temp) {
+ error (_("Out of memory"));
+ return -1;
+ }
+ outstr = temp + offset;
+ }
switch (ch) {
case '%':
if (!no_intty) {
strcpy (outstr, fnames[fnum]);
outstr += strlen (fnames[fnum]);
changed++;
- }
- else
+ } else
*outstr++ = ch;
break;
case '!':
if (!shellp)
- error ("No previous command to substitute for");
+ error (_("No previous command to substitute for"));
strcpy (outstr, shell_line);
outstr += strlen (shell_line);
changed++;
@@ -1774,8 +1899,9 @@ int expand (char *outbuf, char *inbuf)
default:
*outstr++ = ch;
}
+ }
*outstr++ = '\0';
- strcpy (outbuf, temp);
+ *outbuf = temp;
return (changed);
}
@@ -1811,15 +1937,15 @@ void error (char *mess)
kill_line ();
promptlen += strlen (mess);
if (Senter && Sexit) {
- putp (Senter);
+ my_putstring (Senter);
pr(mess);
- putp (Sexit);
+ my_putstring (Sexit);
}
else
pr (mess);
fflush(stdout);
errors++;
- longjmp (restore, 1);
+ siglongjmp (restore, 1);
}
@@ -1891,5 +2017,5 @@ void onsusp ()
signal (SIGTSTP, onsusp);
set_tty ();
if (inwait)
- longjmp (restore, 1);
+ siglongjmp (restore, 1);
}
diff --git a/text-utils/more.help.cs b/text-utils/more.help.cs
new file mode 100644
index 000000000..1a69cb365
--- /dev/null
+++ b/text-utils/more.help.cs
@@ -0,0 +1,28 @@
+
+Většině příkazů může jako argument předcházet celé číslo k. Implicitní hodnoty
+jsou v hranatých závorkách. Hvězdička (*) znamená, že hodnota argumentu se
+stane implicitní.
+-------------------------------------------------------------------------------
+<mezerník> Zobrazí dalších k řádků textu. [aktuální velikost
+ obrazovky]
+z Zobrazí dalších k řádků textu. [aktuální velikost
+ obrazovky]*
+<return> Zobrazí dalších k řádků textu. [1]*
+d či ctrl-D Posun o k řádků [aktuální velikost posunu, po spuštění
+ 11]*
+q či Q či <interrupt> Ukončení programu
+s Posun vpřed o k řádků [1]
+f Posun vpřed o k stran [1]
+b či ctrl-B Posun vzad o k stran [1]
+' Přeskočí na místo, kde bylo zahájeno předchozí hledání
+= Zobrazí číslo aktuálního řádku
+/<regulární výraz> Hledá ktý výskyt regulárního výrazu [1]
+n Hledá ktý výrazu posledního regulárního výrazu [1]
+!<příkaz> či :!<příkaz> Spustí <příkaz> v podshellu
+v Spustí /usr/bin/vi na aktuálním řádku
+ctrl-L Překreslí obrazovku
+:n Přeskočí na ktý následující soubor [1]
+:p Přeskočí na ktý předcházející soubor [1]
+:f Vypíše jméno aktuálního souboru a číslo aktuálního řádku
+. Zopakuje předcházející příkaz
+-------------------------------------------------------------------------------
diff --git a/text-utils/odsyntax.c b/text-utils/odsyntax.c
index cc543c33c..c22e71d01 100644
--- a/text-utils/odsyntax.c
+++ b/text-utils/odsyntax.c
@@ -31,12 +31,17 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h> /* for isdigit() */
#include <unistd.h> /* for getopt() */
#include "hexdump.h"
+#include "nls.h"
static void odoffset(int, char ***);
@@ -125,11 +130,11 @@ oldsyntax(int argc, char ***argvp)
case '?':
default:
(void)fprintf(stderr,
- "od: od(1) has been deprecated for hexdump(1).\n");
+ _("od: od(1) has been deprecated for hexdump(1).\n"));
if (ch != '?')
(void)fprintf(stderr,
-"od: hexdump(1) compatibility doesn't support the -%c option%s\n",
- ch, ch == 's' ? "; see strings(1)." : ".");
+_("od: hexdump(1) compatibility doesn't support the -%c option%s\n"),
+ ch, ch == 's' ? _("; see strings(1).") : ".");
usage();
}
diff --git a/text-utils/parse.c b/text-utils/parse.c
index ececd1316..1102e975d 100644
--- a/text-utils/parse.c
+++ b/text-utils/parse.c
@@ -31,6 +31,10 @@
* SUCH DAMAGE.
*/
+ /* 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ */
+
#include <sys/types.h>
#include <sys/file.h>
#include <stdio.h>
@@ -38,6 +42,7 @@
#include <ctype.h>
#include <string.h>
#include "hexdump.h"
+#include "nls.h"
static void escape(register char *p1);
static void badcnt(char *s);
@@ -55,12 +60,12 @@ void addfile(char *name)
char buf[2048 + 1];
if (!(fp = fopen(name, "r"))) {
- (void)fprintf(stderr, "hexdump: can't read %s.\n", name);
+ (void)fprintf(stderr, _("hexdump: can't read %s.\n"), name);
exit(1);
}
while (fgets(buf, sizeof(buf), fp)) {
if (!(p = index(buf, '\n'))) {
- (void)fprintf(stderr, "hexdump: line too long.\n");
+ (void)fprintf(stderr, _("hexdump: line too long.\n"));
while ((ch = getchar()) != '\n' && ch != EOF);
continue;
}
@@ -398,7 +403,7 @@ sw2: switch(fu->bcnt) {
/* only one conversion character if byte count */
if (!(pr->flags&F_ADDRESS) && fu->bcnt && nconv++) {
(void)fprintf(stderr,
- "hexdump: byte count with multiple conversion characters.\n");
+ _("hexdump: byte count with multiple conversion characters.\n"));
exit(1);
}
}
@@ -482,25 +487,25 @@ static void escape(register char *p1)
static void badcnt(char *s)
{
(void)fprintf(stderr,
- "hexdump: bad byte count for conversion character %s.\n", s);
+ _("hexdump: bad byte count for conversion character %s.\n"), s);
exit(1);
}
static void badsfmt()
{
(void)fprintf(stderr,
- "hexdump: %%s requires a precision or a byte count.\n");
+ _("hexdump: %%s requires a precision or a byte count.\n"));
exit(1);
}
static void badfmt(char *fmt)
{
- (void)fprintf(stderr, "hexdump: bad format {%s}\n", fmt);
+ (void)fprintf(stderr, _("hexdump: bad format {%s}\n"), fmt);
exit(1);
}
static void badconv(char *ch)
{
- (void)fprintf(stderr, "hexdump: bad conversion character %%%s.\n", ch);
+ (void)fprintf(stderr, _("hexdump: bad conversion character %%%s.\n"), ch);
exit(1);
}
diff --git a/text-utils/rev.c b/text-utils/rev.c
index 5c3a8406d..dbc25cd80 100644
--- a/text-utils/rev.c
+++ b/text-utils/rev.c
@@ -37,6 +37,9 @@
* last line that has no newline correctly.
* 3-Jun-1998: Patched by Nicolai Langfeldt to work better on Linux:
* Handle any-length-lines. Code copied from util-linux' setpwnam.c
+ * 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ * - added Native Language Support
+ *
*/
#include <sys/types.h>
@@ -45,6 +48,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "nls.h"
void usage __P((void));
void warn __P((const char *, ...));
@@ -61,6 +65,10 @@ main(argc, argv)
FILE *fp;
int ch, rval;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
while ((ch = getopt(argc, argv, "")) != EOF)
switch(ch) {
case '?':
@@ -98,7 +106,7 @@ main(argc, argv)
p = realloc(p, buflen);
if (p == NULL) {
- fprintf(stderr,"Unable to allocate bufferspace\n");
+ fprintf(stderr,_("Unable to allocate bufferspace\n"));
exit(1);
}
@@ -156,6 +164,6 @@ warn(fmt, va_alist)
void
usage()
{
- (void)fprintf(stderr, "usage: rev [file ...]\n");
+ (void)fprintf(stderr, _("usage: rev [file ...]\n"));
exit(1);
}
diff --git a/text-utils/ul.c b/text-utils/ul.c
index 8da3b3f7c..a99de9d88 100644
--- a/text-utils/ul.c
+++ b/text-utils/ul.c
@@ -34,14 +34,18 @@
/*
** modified by Kars de Jong <jongk@cs.utwente.nl> to use terminfo instead
** of termcap.
+ 1999-02-22 Arkadiusz Miśkiewicz <misiek@misiek.eu.org>
+ - added Native Language Support
+
*/
#include <stdio.h>
#include <unistd.h> /* for getopt(), isatty() */
-#include <string.h> /* for bzero() */
+#include <string.h> /* for bzero(), strcpy() */
#include <term.h> /* for setupterm() */
#include <stdlib.h> /* for getenv() */
#include <limits.h> /* for INT_MAX */
+#include "nls.h"
void filter(FILE *f);
void flushln(void);
@@ -98,6 +102,10 @@ int main(int argc, char **argv)
char *termtype;
FILE *f;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
termtype = getenv("TERM");
if (termtype == NULL || (argv[0][0] == 'c' && !isatty(1)))
termtype = "lpr";
@@ -114,7 +122,7 @@ int main(int argc, char **argv)
default:
fprintf(stderr,
- "usage: %s [ -i ] [ -tTerm ] file...\n",
+ _("usage: %s [ -i ] [ -tTerm ] file...\n"),
argv[0]);
exit(1);
}
@@ -125,7 +133,7 @@ int main(int argc, char **argv)
break;
default:
- fprintf(stderr,"trouble reading terminfo");
+ fprintf(stderr,_("trouble reading terminfo"));
/* fall through to ... */
case 0:
@@ -212,7 +220,7 @@ void filter(FILE *f)
default:
fprintf(stderr,
- "Unknown escape sequence in input: %o, %o\n",
+ _("Unknown escape sequence in input: %o, %o\n"),
IESC, c);
exit(1);
}
@@ -361,7 +369,7 @@ void initbuf()
obuflen = INITBUF;
obuf = malloc(sizeof(struct CHAR) * obuflen);
if (obuf == NULL) {
- fprintf(stderr, "Unable to allocate buffer.\n");
+ fprintf(stderr, _("Unable to allocate buffer.\n"));
exit(1);
}
}
@@ -518,7 +526,7 @@ void setcol(int newcol)
/* Paranoid check for obuflen == INT_MAX. */
if (obuflen == INT_MAX) {
fprintf(stderr,
- "Input line too long.\n");
+ _("Input line too long.\n"));
exit(1);
}
@@ -531,7 +539,7 @@ void setcol(int newcol)
obuf = realloc(obuf, sizeof(struct CHAR) * obuflen);
if (obuf == NULL) {
fprintf(stderr,
- "Out of memory when growing buffer.\n");
+ _("Out of memory when growing buffer.\n"));
exit(1);
}
}
diff --git a/version.h b/version.h
index 4b8deb079..cea291deb 100644
--- a/version.h
+++ b/version.h
@@ -1,3 +1,3 @@
-#define UTIL_LINUX_VERSION "2.9i"
+#define UTIL_LINUX_VERSION "2.9v"
const char * const util_linux_version = "util-linux " UTIL_LINUX_VERSION;